POSTGRES(1)

NAME
postgres - シングルユーザモードのPostgreSQLサーバの実行

SYNOPSIS

postgres [ -A [ 0 ] [ 1 ] ] [ -B nbuffers ] [ -c name=value ] [ -d debug-level ] [ --describe-config ] [ -D datadir ] [ -e ] [ -E ] [ -f [ s ] [ i ] [ t ] [ n ] [ m ] [ h ] ] [ -F ] [ -N ] [ -o filename ] [ -O ] [ -P ] [ [ -s ] [ -t [ pa ] [ pl ] [ ex ] ] ] [ -S work-mem ] [ -W seconds ] [ --name=value ] database postgres [ -A [ 0 ] [ 1 ] ] [ -B nbuffers ] [ -c name=value ] [ -d debug-level ] [ -D datadir ] [ -e ] [ -f [ s ] [ i ] [ t ] [ n ] [ m ] [ h ] ] [ -F ] [ -o filename ] [ -O ] [ -p database ] [ -P ] [ [ -s ] [ -t [ pa ] [ pl ] [ ex ] ] ] [ -S work-mem ] [ -v protocol ] [ -W seconds ] [ --name=value ]

説明

postgres実行プログラムは、問い合わせ処理を実際に行うPostgreSQLサーバプロセスです。 通常、これが直接呼び出されることはありません。 代わりにpostmaster(1)マルチユーザサーバが起動されます。

上から2番目の形式は、postgresがどのようにpostmaster(1)から呼び出されるかを表しています(これは概念的なものにすぎません。 なぜならpostmasterとpostgresは実際には同じプログラムだからです)。 このプログラムはこのような方法で直接的に呼び出されるべきではありません。 最初の形式はサーバを対話的なシングルユーザモードで直接呼び出します。 このモードの主な使い道は、initdb(1)によるブートストラッピングです。 デバッグのためや災害からの復旧のために使用されることもあります。

シェルから対話的モードで呼び出された場合、ユーザは問い合わせを入力し、結果はスクリーン上に表示されますが、エンドユーザよりも開発者にとってより便利な形式が使われます。 しかし、シングルユーザのサーバはサーバのデバッグにはふさわしくありません。 なぜなら現実的なプロセス間の通信とロックは起こらないからです。

スタンドアロンサーバを起動する際、セッションユーザは、ユーザID 1と設定されます。 このユーザは実際に存在していなくてもかまいません。 ですので、スタンドアロンサーバは、システムカタログの偶発的な損害などからの復旧作業に使用することができます。 スタンドアロンモードでは、ユーザID 1のユーザは、暗黙的にスーパーユーザ権限が与えられます。

オプション

postgresがpostmaster(1)から起動された場合は、postmaster(1)により設定された全てのオプションを継承します。 更に、postgres固有のオプションはpostmasterから-oオプションで渡すことができます。

設定ファイルを設定することによって、これらのオプションを入力する手間を省くことができます。 詳細はthe documentationを参照してください。 いくつかの(安全な)オプションは接続しているクライアントからアプリケーションに依存する方法で設定することができます。 例えば、PGOPTIONS環境変数が設定されると、libpqに基づくクライアントは、その文字列をサーバに渡し、サーバはそれをpostgresのコマンドラインオプションとして解釈します。

  一般的な目的

-A、-B、-c、-d、-D、-F、および--nameの各オプションは、-d 0がpostmasterのサーバログレベルのpostgresへの伝搬を禁止するという点を除き、postmaster(1)の場合と同じ意味です。

-e  デフォルトの日付データ形式を``ヨーロッパ式''、つまり、日付の入力形式の順番をDMYにします。 また、これによりある日付出力の書式において日が月より前に表示されるようになります。 詳細はthe documentationを参照してください。

-o filename
    全てのサーバログをfilenameに送ります。 postgresがpostmasterの下で稼動している場合、このオプションは無視され、その標準エラー出力stderrはpostmasterから引き継がれます。

-P  システムテーブルの読み込みの際にシステムインデックスを無視します。 (しかし、このテーブルの更新の際にはインデックスは更新されます。) これは破損したシステムインデックスからの復旧の際に有用です。

-s  時間情報と他の統計をそれぞれのコマンドの最後に表示します。 これはベンチマーク、もしくはバッファ数の調整に便利です。

-S work-mem
    一時ディスクファイルを再ソートする前に、内部ソートとハッシュに使われるメモリ量を指定します。 the documentationのwork_mem設定パラメータの説明を参照してください。

  スタンドアロンモードのオプション

database
    アクセスされるデータベースの名前を指定します。 もしこれが省略されると、デフォルトはユーザ名になります。

-E  全てのコマンドをエコー表示します。

-N  改行を文の区切り文字として使うことを無効にします。

  半内部的オプション

その他にも、主にデバッグ用に使われる、いくつかのオプションを指定することができます。 これらはPostgreSQLシステム開発者による使用のためだけにここに列挙されています。 これらのオプションはむやみに使用しないでください。 更に、これらのオプションのいずれも将来のリリースでは予告なしに廃止されるか変更される可能性があります。

-f { s | i | m | n | h }
    特定のスキャンと結合メソッドの使用を禁止します。 sとiはシーケンシャルスキャンとインデックススキャンをそれぞれ無効にし、n、m、および、hは、ネストループ、マージ、そしてハッシュ結合をそれぞれ無効にします。

    Note: シーケンシャルスキャンとネストループのどちらも完全に無効にすることはできません。 -fsオプションと-fnオプションは単に、もし他の選択がある場合は、オプティマイザがこの種類の計画を使わないようにするというだけです。

-O  システムテーブルの構造を変更することを可能にします。 これはinitdbによって使われます。

-p database
    このプロセスがpostmasterによって起動されたことを示し、また、使用するデータベースを指定します。 等々。

-t pa[rser] | pl[anner] | e[xecutor]
    それぞれの主要なシステムモジュールと関連する、それぞれの問い合わせのタイミング統計を表示します。 このオプションは-sオプションと一緒に使うことはできません。

-v protocol
    このセッションで使われるフロントエンド/バックエンドプロトコルのバージョン番号を指定します。

-W seconds
    このオプションが入力されると、プロセスは指定された秒の間休止状態に入ります。 これは開発者に、サーバプロセスにデバッガを接続する時間を与えます。

--describe-config
    このオプションは、サーバの内部設定変数、説明、デフォルトをタブ区切りのCOPY書式で出力します。 これは主に、管理ツールでの使用のために設計されました。

環境

PGDATA
    デフォルトのデータディレクトリの場所です。

シングルユーザモードではほとんど使用されないその他の環境についてはpostmaster(1)を参照してください。

注釈

実行中の問い合わせを中止するには、そのコマンドを実行しているpostgresプロセスにSIGINTシグナルを送信してください。

postgresに設定ファイルを再読み込みするよう指示するには、SIGHUPシグナルを送信してください。 通常は、この代わりにpostmasterにSIGHUPを送信するのが最善です。 この場合、postmasterは、それぞれの子プロセスにSIGHUPを順番に送信します。 しかし、特定の1つのみのpostgresに、設定ファイルを再読み込みさせたい場合もあります。

postmasterでは、postgresプロセスを通常通りに終了させるにはSIGTERMを、通常のクリーンアップを行なわずに終了させるにはSIGQUITを使用します。 これらはユーザが使用すべきではありません。 また、postgresにSIGKILLシグナルを送信するのは好ましくありません。 postmasterはこれをpostgresのクラッシュとして解釈し、標準のクラッシュからの復旧手続きの一部として、強制的に全ての共通の親プロセスを持つpostgresプロセスを終了させます。

使用方法

下記のコマンドラインによりスタンドアロンサーバを起動します。

postgres -D /usr/local/pgsql/data other-options my_database

データベースディレクトリの正確なパスを-Dで指定、もしくは、PGDATA環境変数が設定されているか確認してください。 また、作業対象とするデータベースの名前を指定してください。

通常、スタンドアロンサーバでは、改行をコマンド入力の終わりとみなします。 psqlにおけるセミコロンのような高度な機能はありません。 コマンドが複数行に渡る場合は、最終行を除き、改行を入力する前にバックスラッシュを入力しなければなりません。

ただし、-Nコマンドラインスイッチを使用する場合、改行はコマンド入力の終わりではなくなります。 この場合、サーバは標準入力をファイル終端(EOF)マークまで読み取り、その入力を1つのコマンド文字列として処理します。 この場合は、バックスラッシュと改行の組み合わせは特別扱いされません。

セッションを終了するには、EOF(通常Control+D)を入力します。 -Nを使用している場合の終了には、EOFを2度連続して入力する必要があります。

スタンドアロンサーバには、高度な行編集機能が用意されていないことに注意してください(例えばコマンド履歴はありません)。

関連項目

initdb(1), ipcclean(1), postmaster(1)