よくあるご質問

PowerGres on Windows に関するよくあるご質問

評価版をインストールする際にライセンスキーを聞かれます。 何と入力したら良いのですか?
Evaluation と入力してください。
最大同時接続ユーザ数 (max_connections) を 32 より大きくすると、サーバが起動しなくなります。 (PowerGres on Windows 1.x)
最大同時接続ユーザ数を増やす際は、共有メモリバッファ数 (shared_buffers) も増やして下さい。 共有メモリバッファ数は、最大同時接続ユーザ数の 2 倍以上の値にする必要があります。
PowerGres on Windows は Windows NT、95、98、Me 上で動きますか?
動かすことはできません。
PowerGres on Windows のライセンス形態について教えて下さい。
PowerGres on Windows の DB サーバを動作させるマシン毎に PowerGres on Windows を 1 本購入していただく必要があります。 PowerGres on Windows のクライアントには特にライセンスは必要ありませんが、無償インストールサポートの対象外になります。 サポートが必要な場合には有償の「サポート&保守」サービスをお求めいただく必要があります。
libpq を使ったアプリケーションを作りたいのですが、その場合のライセンスはどうなりますか?
PowerGres on Windows には、libpq を DLL 化した libpq.dll というファイルが付属しています。 この libpq.dll については、PowerGres の DB サーバ以外のマシンにコピーしてお使い頂いて構いません。 また、PowerGres on Windows 1.0 および 1.0.1 では、アプリケーションは libpq.dll と一緒に powergres.dll をリンクする必要があります。 powergres.dll についても、他のマシンにコピーして頂いて構いません。
JDBC は使えますか?
はい、使えます。 PowerGres on Windows にも JDBC ドライバは同梱されていますが、中身は PostgreSQL 用のものとまったく同じです。
ODBC は使えますか?
使えます。 PowerGres on Windows にも ODBC ドライバは同梱されていますが、中身は PostgreSQL 用のものとまったく同じです。
Linux、UNIX の PHP から PowerGres on Windows の DB サーバにアクセスできますか?
もちろん可能です。
PowerGres on Windows 1.0.1 付属の libpq.dll をアプリケーションにリンクできないのですが?
PowerGres on Windows 1.0、1.0.1 では、powergres.dll も一緒にリンクしてください。 (1.1 以降ではその必要はありません。)
PowerGres on Windows をサービスとして動かすことはできますか?
はい、可能です。 PowerGres on Windows 付属の管理ツールでサポートしております。
PowerGres on Windows の主な制約事項を教えて下さい。 (PowerGres on Windows 1.x、2.x)

基本的に PowerGres on Windows は PostgreSQL に基づいて実装されており、使用できるデータ型、データサイズなどの上限は PostgreSQL と同じです。 PowerGres on Windows 固有の制限事項には以下のものが含まれます。 (これがすべてではありません。 詳しくは、評価版に付属する制限事項の一覧を参照してください。)

  • 最大同時接続ユーザ数は 128 に制限されます。
  • ユーザ定義関数は C、SQL、PL/pgSQL のみサポートします。
  • UNIX ドメインソケットはサポートされません。
  • サポートする認証方式は trust、reject、md5 のみです。
  • statement timeout はサポートしません。
  • authentication timeout はサポートしません。
テーブル名、フィールド名、ユーザ定義関数名・変数名等にも日本語が使えますか?
はい、日本語を使用できます。
Linux の PostgreSQL からデータを移したのですが、日本語が化けてしまいます。

データを移行する際は、次の点に注意して下さい。 (Linux の PostgreSQL 上のデータベースの文字エンコードが、EUC-JP だと仮定します。)

PowerGres on Windows のデータベースのエンコード
PowerGres on Windows のデータベースを初期化する際の文字のエンコードには、「EUC-JP」を選択します。 (特に変更しなければ、そのまま EUC-JP になります。) SJIS は選択できません。
ダンプ時とリストア時の環境変数 PGCLIENTENCODING
「SJIS」ないし「EUC-JP」、どちらにセットしておいても良いですが、必ずダンプ時とリストア時で値を合わせて下さい。 なお、環境変数をセットせずに、PowerGres on Windows のサーバマネージャ上からダンプやリストアを行うと、SJIS になります。
psql で確認する際のクライアントエンコーディング
そのままだと、psql は EUC-JP で表示しようとしますが、Windows のコマンドプロンプトは EUC-JP のテキストを正しく表示できません。 環境変数 PGCLIENTENCODING を「SJIS」にセットした状態で psql を起動するか、起動してから「\encoding SJIS」というコマンドを実行して、クライアントエンコーディングを SJIS にセットして下さい。
テキスト形式かつ INSERT 形式でバックアップすると、バックアップデータに余計な円記号が入るのですが?

PowerGres on Windows でバックアップを行う際、テキスト形式かつ INSERT 形式を指定すると、次のように円記号が余計に挿入される事があります。

INSERT INTO testtable VALUES ('申\請者');
PostgreSQL の pg_dump でも同じことが起きます。

これは、SJIS のテキスト形式かつ INSERT 形式でバックアップを行った場合に生じる、pg_dump の不具合です。

この件は、PowerGres on Windows の制限事項とさせて頂きます。 回避するには、環境変数 PGCLIENTENCODING を「EUC-JP」にセットした上で、コマンドプロンプトから pg_dump.exe を直接起動してバックアップしてください。 リストアする際も、環境変数を同様にセットした上で、psql.exe を直接起動して下さい。

SQL の COPY 文が成功しません。 ちゃんと存在するファイルを指定しているのに、なぜでしょうか?
パス名を指定する際は、「C:\\some\\file」のように「\」を二つ重ねて下さい。 もしくは「/」を使って「C:/some/file」と指定することも可能です。
テーブルをバックアップする際は他のユーザーからのアクセスを禁止する必要があるのでしょうか?
PowerGres on Windows では PostgreSQL 同様ホットバックアップをサポートしているので、一部の SQL コマンド (TRUNCATE) をのぞき、バックアップ中に SQL コマンドをユーザが実行しても、バックアップ開始時点の一貫性のあるバックアップが取得できます。 したがって、ことバックアップデータの一貫性に関しては、特にユーザからのアクセスを禁止する必要はありません。
評価版がインストールされている環境で製品版をインストールしようとすると「ディスク 1 を挿入してください。」と表示されてインストールを完了できません。
PowerGres on Windows 評価版のように、*.zip 形式から PowerGres on Windows をインストールした後で CD-ROM からアップグレードを行おうとすると、ご質問されたような現象が起きることがあるようです。 対処方法ですが、いったん評価版をアンインストールしてから製品版をインストールするか、あるいは CD-ROM の内容を HDD にコピーした後で、HDD 上の PowerGres\setup.exe を実行するかのいずれかで回避してください。
psql を使って SELECT 文の結果から CSV 形式のファイルを作成しようとすると、最後に空行が挿入されてしまいます。 最後に空行が挿入されない方法はありますでしょうか?

psql の PAGER の設定を無効にしてください。 コマンドラインオプションで指定する場合は、-P pager もしくは -P pager= を指定してください。

> psql -F, -A -t -P pager -c "SELECT ..." -d database

コマンドラインオプションからではなく、psql を起動後に変更したい場合は、\pset pager と入力してください。

powergres.log に「PANIC: stuck spinlock (101DBE74) detected at C:\pg2.0\powergres\powergres_src\src\backend\port\powergres\src\pgmalloc.c:295」というログを残してサービスが停止しますが、回避する方法はありますでしょうか? (PowerGres on Windows 1.x、2.x)
PowerGres on Windows 1.x の場合は 1.2.1 以前のバージョン、PowerGres on Windows 2.x の場合は 2.0 をご使用の場合に、徐々にパフォーマンスが低下し、PANIC が発生します。 これはコネクションプーリング時にメモリリークが発生する不具合が原因になります。 回避策は 1.3 および 2.1 以降にバージョンアップする以外に方法はございません。
powergres.log に「PANIC: could not rename file "C:\data/pg_xlog/0000000000000006" to "C:\data/pg_xlog//000000000000000D" ... : Permission denied」というログを残してサービスが停止しますが、回避する方法はありますでしょうか?
ウィルススキャンソフト等の PowerGres on Windows 以外のアプリケー ションによって、データベースクラスタにあるファイルを排他ロック (共有モード指定のないファイルアクセス) している可能性があります。 ウィルススキャンソフトをご使用の場合はデータベースクラスタをスキャン対象外にしてください。
PowerGres on Windows 2.x、3.x は Windows Vista で動きますか?

はい、動作致します。 但し PowerGres on Windows 2.x の場合は 2.6 以前のバージョン、PowerGres on Windows 3.x の場合は 3.2 以前のバージョンをご使用の場合には、PowerGres サーバーマネージャ (管理ツール) を「管理者として実行」する必要があります。

手順としては PowerGres インストール先 (デフォルトでは C:\Program Files\PowerGres3) の bin フォルダにある PowerGres のプロパティより、「互換性」タブ → 「特権レベル」 → 「管理者としてこのプログラムを実行する」にチェックします。

また、この手順を行うことで、PowerGres インストール後、デスクトップ上に作成されるショートカットから PowerGres サーバーマネージャ (管理ツール) を起動したときに表示される「サービス制御マネージャでエラーが発生しました」というエラーメッセージが出力されなくなります。

PowerGres on Windows 5.x を使用していますが、「server process (PID XXX) exited with exit code -1073741502」というエラーメッセージとともに、PowerGres が自動的に再起動されます。

Windows のデスクトップヒープが不足しているために、プロセスの作成が失敗している可能性があります。 デスクトップヒープのサイズを変更するためには、レジストリエディタ等を使って変更します。 なお、変更を反映させるには Windows の再起動が必要となります。

レジストリ エディタまたは別の方法を使用してレジストリを誤って変更すると、深刻な問題が発生することがあります。 最悪の場合、オペレーティングシステムの再インストールが必要になることがあります。 レジストリを変更される前にはバックアップを行うなど、十分に注意して変更してください。

キー名 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\
名前 Windows
変更前 %SystemRoot%\system32\csrss.exe ... SharedSection=1024,3072,512 ...
変更後 %SystemRoot%\system32\csrss.exe ... SharedSection=1024,3072,xxxx ...

SharedSection の 3 番目の "xxxx" を 512 から大きくしてください。 この値を変更することによって、他のアプリケーション等のデスクトップヒープが不足してしまう可能性がありますので、変更後は必ずテストを実施してください。

管理ツールから initdb を実行したいのですが、Aministrator 権限のあるユーザを選択できません。
PowerGres 5.x の管理ツールから、セキュリティ上の観点より Administrators グループに属すユーザで initdb できないようにしました。 あらかじめ一般ユーザを作成しておき、作成したユーザを管理ツールから選択してください。
「FATAL: could not reattach to shared memory (key=5432001, addr=01D70000): Invalid argument」というエラーが発生し、PowerGres に接続できません。 (PowerGres on Windows 3.x ~ 6.x)
これは PowerGres がベースとしている PostgreSQL の、Windows における既知の問題で、今のところ解決には至っておりません。 最大接続数が高い場合に発生することがまれにあります。問題が発生した場合は再接続するようにしてください。
なお、このエラーによってデータの不整合が発生したりすることはございません。
PowerGres on Windows V6.2 および V7 以降にて修正が適用されました。

PowerGres on Linux に関するよくあるご質問

PowerGres on Linux 1.0 β 評価版を「PowerGres 評価版 on Windows 1.1 / on Linux 1.0 β / Plus 1.0」CD-ROM から Red Hat Linux 9 にインストールしようとすると「/usr/bin/uudecode: /tmp/.PowerGres.uuencode: 不正な行です」と表示されてインストールできません。

「PowerGres 評価版 on Windows 1.1 / on Linux 1.0 β / Plus 1.0」CD-ROM に収録されている PowerGres on Linux 1.0 β 評価版の Red Hat Linux 9 のパッケージの一部には問題があります。 そのような場合は「評価版ダウンロード」から PowerGres on Linux 1.0 β 評価版をダウンロードして再インストールしてください。 なお、インストールしている間にエラーが発生しているため、途中までインストールされたパッケージが残ってしまっています。 再インストールする際には以下のコマンドによってパッケージを削除してください。

# rpm -qa | grep powergres | xargs rpm -e
# rm -fr /opt/powergres
PowerGres on Linux の管理ツールでは、何ができるのでしょうか?

PowerGres on Linux の管理ツールは、PostgreSQL の設定や管理を容易に行うことを主な目的にしています。 具体的には、以下のような機能があります。

  • データベースクラスタの初期化
  • postgresql.confなどの設定機能
  • データベースやユーザの登録機能
  • バックアップとリカバリ
  • データベースの監視、ディスク使用量・接続中ユーザ・ロックの状況などの表示
PowerGres on Linux の年間サポートは PostgreSQL/PowerGresサポート&保守サービス (ゴールド) と同等の内容でしょうか?
既存の PostgreSQL/PowerGresサポート&保守とは、一部違いがあります。 各サポートの詳細は こちら をご参照下さい。
PowerGres on Linux 1.0 インストール時に正しいライセンスキーを入力しても認証できません。 Permission denied とエラーが出ていますが関係ありますか?

インストールの際に、uudecode というプログラムが必要になります。 インストールされているか確認するには、以下のように実行してみてください。

$ rpm -qa | grep sharutils

何も表示されない場合は、uudecode のプログラムがインストールされていません。 OS の CD や ftp サイトなどから sharutils の RPM パッケージをインストールしてから、再度インストールを実行してください。

PowerGres on Linux 1.0 を利用しています。 インストールは終了しますが、PowerGres Administrator Tool (管理ツール) が起動しません。

OS に付属の Apache と共存する場合にのみ起こる不具合です。 PowerGres on Linux 1.0.1 からは修正されています。 1.0 をご利用のお客さまはアップグレードをお願い致します。 β 版をご利用のお客さまは、下記の方法で回避することが可能です。

  1. 念のためロックファイルを削除します。
    # rm /var/lock/subsys/powergresadmin
    
  2. OS 付属の Apache を停止します。
    # /etc/init.d/httpd stop
    
  3. PowerGres Administrator Tool を起動します。
    # /etc/init.d/powergresadmin start
    

PowerGres Plus に関するよくあるご質問

PowerGres Plus の年間サポート以外に PostgreSQL/PowerGresサポート&保守サービスの様なサポートメニューがあるのでしょうか?
現在 PowerGres Plus においてのメニュー化されたサポートは年間サポートのみとなってます。 その他のチューニングやコンサルティングのサポートにつきましては、個別見積の形を取らさせて頂いております。
PowerGres Plus に付いている管理ツールは、PowerGres on Linux に付属の管理ツールと機能の差はあるのでしょうか?
PowerGres Plus の管理ツールは、主に PowerGres Plus 固有の機能、たとえばアーカイブログやバックアップ、データベーススペースの設定などを行うためのツールです。
データファイルおよびアーカイブログの両方が壊れた場合はどうなるのでしょうか? (PowerGres Plus 1.x、2.x)
データベース本体のデータファイル (データベーススペース) と、アーカイブログファイルの両方が同時に破壊されると、データベースのリカバリはできなくなります。 PowerGres Plus では、バックアップディレクトリを用意する必要がありますが、このディレクトリは、インスタンスを格納するディレクトリとは異なるディスクに配置してください。
アーカイブログだけ別途バックアップすることは可能でしょうか。 (PowerGres Plus 1.x、2.x)
アーカイブログファイルのみのバックアップを行う機能はございません。
データの書き込みがあると、一旦アーカイブログに書き込まれてからデータファイルに書き込まれるのか、それとも WAL に書き込まれてからある程度溜まるとデータファイルおよびアーカイブログに書き込まれるのでしょうか? (PowerGres Plus 1.x、2.x)
PowerGres Plus では WAL は使用しておらず、テンポラリログというログを使用します。 データの書込みがあると、テンポラリログにログが書き込まれ、次いでアーカイブログにログが書き込まれます。 その後、データベース本体のデータファイル (データベーススペース) への書込みは、システムが最適と判断した時点で行われます。 書き込みはメモリ上のバッファから行われますので、ログとアーカイブの書き込みは何ら関係がありません。
普通の PostgreSQL と比較して、PowerGres Plus は具体的にどの程度の違いを発揮できるのでしょうか? (PowerGres Plus 1.x、2.x)
弊社内で行ったベンチマークにおいては 4CPU マシンにおいて最大 2 倍程度、2CPU マシンにおいて最大 1.5 倍程度のトランザクション処理性能の向上がみられるという結果がございます。 PowerGres Plus ではオリジナルの PostgreSQL ではそれほど効果の現れない SMP マシンでの処理性能が向上していますので、CPU 数によっても性能が変わってきます。
アーカイブログ機能を使ったリカバリでは必要なアーカイブログファイルを DB が判断してリカバリを行うのでしょうか? (PowerGres Plus 1.x、2.x)
はい、基本的にバックアップとアーカイブログが無事であれば最新の状態に戻せます。
アーカイブログファイルの構成はどのようになっているのでしょうか? (PowerGres Plus 1.x、2.x)
アーカイブログは、バックアップ用ディレクトリの配下に、複数のファイルとして作成されています。 これらのファイルは順に使われていきますが、いつどのファイルが使われているかを知ることはできません。
アーカイブログのファイル形式は? (PowerGres Plus 1.x、2.x)
アーカイブログのファイル形式はバイナリです。
擬似レプリケーションは可能でしょうか?
現在の PowerGres Plus はレプリケーションには対応していません。
ハイパー・スレッディング対応の CPU は、ライセンス上 CPU 数いくつと数えますか?
CPU 数は物理 CPU 数になります。
マルチコア CPU の場合、ライセンス上 CPU 数はいくつと数えますか?
CPU 数は物理 CPU 数になります。(2009年12月に変更されました/以前はコア数を 0.5CPU 換算をしていました)。
PowerGres Plus V5 のバックアップ格納ディレクトリに大量の更新ログファイルが溜まっていて、ディスク容量を圧迫しています。

バックアップ操作に連動して不要な更新ログが削除されます。 ただちにバックアップを 2 回行なえば、累積している古い更新ログファイルを正常に削除することができます。 定期的なバックアップを行うことを推奨します。

PowerGres Plus V5 では、更新ログをバックアップ格納ディレクトリに書き出し、蓄積していきます。 障害時にはバックアップデータと更新ログとを組み合わせてリストアを行なうことができます。

新たにバックアップを行なうと、その時点よりも古い更新ログは不要になります。 PowerGres Plus V5 では、バックアップを行うコマンドの中で、古い更新ログを削除することを同時に行なう仕組みになっています。

また、2 世代分のバックアップデータを保持するようになっているため、古い更新ログを完全に削除するには、 2 回のバックアップを実施する必要があります。

バックアップの実行方法は、PowerGres Plus V5 マニュアルのバックアップの項 をご参照ください。