Using pgAgent

pgAgentは、ジョブを実行および管理するスケジューリングエージェントです。各ジョブは、1つ以上のステップとスケジュールで構成されています。2つ以上のジョブが同時に実行されるようにスケジュールされている場合、pgAgentはジョブを並行して実行します(それぞれが独自のスレッドで)。

ステップは、一連のSQLステートメントまたはオペレーティングシステムのバッチ/シェルスクリプトです。特定のジョブの各ステップは、前のステップが完了すると、名前の英数字順に実行されます。 pgAgentJob ダイアログ( Properties コンテキストメニューからアクセス)のスイッチを使用すると、ジョブを変更し、必要に応じて個々のステップを有効または無効にすることができます。

各ジョブは、1つ以上のスケジュールに従って実行されます。ジョブまたはそのスケジュールが変更されるたびに、ジョブの次のランタイムが再計算されます。pgAgentの各インスタンスは、過去の次の実行時値を持つジョブのデータベースを定期的にポーリングします。少なくとも1分ごとにポーリングすることにより、すべてのジョブは通常、指定された開始時刻の1分以内に開始されます。ジョブの次の実行時に実行されているpgAgentインスタンスがない場合、pgAgentが次に起動されるとすぐに実行され、その後通常のスケジュールに戻ります。

pgAdminツリーコントロールで定義されたジョブの名前を強調表示すると、メインpgAdminウィンドウの プロパティ タブにはジョブに関する詳細が表示され、 統計 タブにはジョブの実行に関する詳細が表示されます。

セキュリティ上の懸念

pgAgentは非常に強力なツールですが、注意が必要なセキュリティ上の考慮事項がいくつかあります。

Database password -pgAgent接続文字列にパスワードを含めるように誘惑されないでください 。Unixシステムでは、 ps 出力ですべてのユーザーが見ることができ、Windowsシステムでは、プレーンテキストでレジストリに保存されます。代わりに、libpq ~/.pgpass ファイルを使用して、pgAgentがアクセスする必要があるすべてのデータベースのパスワードを保存します。この手法の詳細は、 * *Database password * にあります。

System/database access -pgAgentによって実行されるすべてのジョブは、pgAgentユーザーのセキュリティ権限で実行されます。SQLステップは、pgAgentがデータベースに接続するユーザーとして実行され、バッチ/シェルスクリプトは、pgAgentサービスまたはデーモンが実行されているオペレーティングシステムユーザーとして実行されます。このため、ジョブを作成および変更できるユーザーの制御を維持することが不可欠です。デフォルトでは、pgAgentデータベースオブジェクトを作成したユーザーのみがこれを行うことができます-これは通常、PostgreSQLスーパーユーザーになります。