データベースサーバの起動データベースにアクセスするためには、まずデータベースサーバを起動しなくてはいけません。データベースサーバプログラムはpostgresという名前です。postgresプログラムは自分が使用するデータがどこにあるのかを知っている必要があり、これは-Dオプションで指定できます。したがって、サーバを起動する一番簡単な方法は、以下のようなコマンドとなります。/usr/local/pgsql/data上記のコマンドは、サーバをフォアグラウンドで実行させます。これは、PostgreSQLユーザアカウントにログインして実行されなくてはいけません。-Dオプションが指定されていない場合、サーバはPGDATA環境変数で指定されたデータディレクトリを使用しようと試みます。どちらの変数も指定されていなければ失敗します。通常は、バックグラウンドでpostgresを起動することをお勧めします。そのためには以下のように通常のシェルの構文を使います。&この例のように、サーバの標準出力と標準エラー出力をどこかに保管しておくことが重要です。(ログファイルの取り扱いについての全体的な説明については項22.3を参照してください)。postgresプログラムには、この他にも多くのコマンドラインオプションを指定することができます。詳細はpostgresリファレンスページと後述の第17章を参照してください。したシェル構文は長くなりがちです。そのため、pg_ctlラッパプログラムが提供されていて、いくつかのタスクを単純化しています。logfileこれは、サーバをバックグラウンドで起動し、出力を指定されたログファイルに書き出します。-Dオプションは、ここでもpostgresの場合と同じ意味を持ちます。pg_ctlによってサーバを停止させることもできます。通常、コンピュータが起動された時にデータベースサーバも一緒に起動したい場合が多いと思われます。自動起動スクリプトは、オペレーティングシステム固有のものです。いくつかはPostgreSQLの/contrib/start-scriptsディレクトリに同梱されています。このインストールにはおそらくroot権限が必要となります。起動時にデーモンを開始する方法はシステムによって異なります。多くのシステムには/etc/rc.localファイルや/etc/rc.d/rc.localファイルがあります。他のシステムではrc.dディレクトリが使用されます。何を実行するにしても、サーバはPostgreSQLユーザアカウントで起動させなければなりません。rootであってはいけませんし、他のユーザでもいけません。postgresを使用してコマンドを実行した方が良いでしょう。(ここでは一般的な値で説明していますので、各項目において適切なインストールディレクトリとユーザ名に置き換えて読んでください)。FreeBSDでは、PostgreSQLで配布されるソースの中にあるcontrib/start-scripts/freebsdファイルを参照してください。OpenBSDでは、以下の数行を/etc/rc.localファイルに追加してください。/usr/local/pgsql/dataを/etc/rc.d/rc.localに追加してください。PostgreSQLで配布されるソースの中にあるcontrib/start-scripts/linuxファイルを参照してください。NetBSDでは、FreeBSDかLinuxの好きな方の起動スクリプトを使用してください。Solarisでは、/etc/init.d/postgresqlというファイルを作成し、そこに以下の1行を記述してください。/usr/local/pgsql/data"そして、/etc/rc3.d以下にS99postgresqlとしてそのファイルに対するシンボリックリンクを作成してください。サーバが実行している間は、そのPIDはデータディレクトリの中のpostmaster.pidファイルに記述されています。これは同じデータディレクトリで複数のサーバインスタンスが実行されるのを防止し、また、サーバの終了にも使うことができます。サーバ起動の失敗サーバの起動が失敗する理由として、代表的なものがいくつかあります。サーバのログファイルをチェックするか、(標準出力や標準エラーをリダイレクトせずに)手動で起動して、どのようなエラーメッセージが出ているか確認してください。以下に、よく発生するエラーメッセージのいくつかをより詳細に説明します。socketこれはたいていの場合メッセージが示す通りの意味です。サーバが動いているポートで別のpostmasterを起動しようとしたことを示しています。useやそれに類似したものではない場合は、別の問題の可能性もあります。予約済みのポート番号でサーバを起動しようとすると下記のようなメッセージが出ます。03600).これは、おそらくカーネルによる共有メモリのサイズの上限がPostgreSQLが作ろうとしている作業領域よりも小さい可能性があります(この例では4011376640バイトです)。V方式の共有メモリサポートがカーネルにまったく設定されていない可能性もあります。一時的な策として、(shared_buffersを使用して)サーバを通常よりも少ないバッファ数で起動することもできます。最終的には、カーネルを再設定し、使用可能な共有メモリサイズを増やした方が良いでしょう。このメッセージは、同じマシン上で複数のサーバを起動しようとした時に、要求された領域の合計がカーネルの上限を超えた場合にも表示されます。下記のようなエラーはディスクの空き容量がなくなったということを示しているわけではありません。Vセマフォの上限が、PostgreSQLが作成しようとしている数よりも小さいということを意味しています。上記のように、許可される接続の数を減らして(max_connectionsを使用して)サーバを起動させることで問題は回避できるかもしれませんが、最終的にはカーネルの設定を変えてセマフォの上限を増やした方が良いでしょう。call"というエラーが表示された場合は、使用しているカーネルでは共有メモリやセマフォがまったくサポートされていない可能性があります。その場合、これらの機能を使えるようにカーネルを設定し直すことが唯一の選択肢となります。IPC設備の設定についての詳細は項16.4.1を参照してください。クライアント接続の問題クライアント側で起こり得るエラー状態はきわめて多様で、アプリケーションに依存します。その中のいくつかはサーバが起動された方法と直接関係するかもしれません。以下で説明する以外の状態については各々のクライアントアプリケーションの資料を参照してください。5432?これは一般的な"接続するサーバが見つけられませんでした"という失敗です。TCP/IP通信を試みた時に上記のように表示されます。ある間違いはサーバにTCP/IPを許可する設定を忘れていることです。代わりに、ローカルのサーバにUnixソケット通信を試みると下記のような表示が出ます。"/tmp/.s.PGSQL.5432"?最後の行は、クライアントが正しいところに接続しようとしていることを実証するのに役立ちます。refusedはサーバが接続要求を受け付け拒否したわけではないということを理解しておくことが大切です。場合は項20.3で示されるような別のメッセージが表示されます)。outのような他のメッセージは、例えばネットワーク接続の欠如のようなもっと根本的な問題を表しています。