PostgreSQL 8.0.0 文書
前のページ | 巻戻し |  | 早送り | 次のページ

# postgres

## 名前

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

## 概要

`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マルチユーザサーバが起動されます。

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

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

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

## オプション

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

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

### 一般的な目的

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

`-e`

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

`-o` `filename`

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

`-P`

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

`-s`

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

`-S` `work-mem`

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

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

`database`

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

`-E`

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

`-N`

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

### 半内部的オプション

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

`-f` `{ s | i | m | n | h }`

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

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

`-O`

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

`-p` `database`

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

`-t` `pa[rser] | pl[anner] | e[xecutor]`

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

`-v` `protocol`

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

`-W` `seconds`

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

`--describe-config`

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

## 環境

`PGDATA`

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

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

## 注釈

実行中の問い合わせを中止するには、そのコマンドを実行している`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, ipcclean, postmaster

前のページ | ホーム | 次のページ
pg_resetxlog | 上に戻る | postmaster