PostgreSQLデータベースの管理業務において、だれのどのようなプロセスがデータベースと通信しているか確認したい場面があるかと思います。
SI Object Browser for Postgresでは、データベースに接続中のプロセスをひと目で確認できる「セッション情報画面」を提供しています。
本記事ではセッション情報画面を用いてPostgreSQLデータベースのセッションを確認する方法をお伝えします。
セッション情報画面を表示する
セッション情報画面を表示するには、「管理(A)」メニューから「セッション情報」を選択するか、ツールバーの「セッション情報」ボタンをクリックします (図1)。
図1 「セッション情報」ボタン
セッション情報画面で確認できる情報
図2 セッション情報画面
セッション情報画面 (図2) では、データベースに張られているセッションの一覧が表示されます。青色で表示されている行は、SI Object Browser for Postgres 自身のプロセスを表しています。
一覧で確認できる情報は下記のとおりです。
- プロセスID
プロセスのプロセスIDです。
- 状態
プロセスの状態です。主に2つの状態が存在します。
- idle: SQL問い合わせを待機中
- active: SQL問い合わせを実行中
- ユーザーID
プロセスから割り振られたデータベースユーザーのIDです。
- ユーザー名
プロセスで用いられているデータベースユーザーの名前です。
- データベースID
操作対象データベースのOIDです。
- データベース名
操作対象データベースの名前です。
- クライアントIP
プロセスのIPアドレスです。
- アプリケーション名
クライアントプロセスのアプリケーション名です。
SI Object Browser for Postgres は、ここではobpXX.exe (XXはバージョン番号)と表示されます。 - 開始時間
クライアントがサーバに接続した時刻です。
- クエリ
状態がactiveの場合、現在実行中のSQL文が表示されます
その他の状態では、最後に実行されたSQL文が表示されます。
またこのクエリは、画面下段のクエリ表示領域にも同じものが表示されます。
特定のセッションを切断する
セッション情報画面には、セッション情報を表示する機能に加え、特定のセッションに対し切断処理を試みる機能もあります。この機能は他のユーザーや他のプロセスが使用しているセッションを強制的に切断できてしまう機能ですので、使用の際には注意が必要です。
今回は試しにSI Object Browser for Postgresを2つ立ち上げて、一方からもう一方のセッションを切断してみます。2つ立ち上げたSI Object Browser for Postgresの一方を (A)、もう一方を (B) とします。
まず (A) (B) の双方で同一のデータベースに接続し、セッション情報画面を開きます。
次に (B) のプロセスIDを確認します。確認したら (A) の画面に移り、(B) のプロセスIDに対応する行を選んで「切断」ボタンをクリックします (図3)。
図3 セッションの切断
切断が完了した後 (B) に移り、テーブルを開く等の操作をすると、図4のようなエラーメッセージが表示されます。この状態になってしまうと、(B) はセッションを回復できなくなり、再度接続をやり直さなければなりません。
図4 セッションが切断された後に表示されるエラーメッセージ
[RELATED_POSTS]
まとめ
いかがだったでしょうか。SI Object Browser for Oracle のセッション情報画面について以前の記事で触れましたが、データベースの違いから、SI Object Browser for Postgresでは取得できる情報が少々異なります。
内部的な話になりますが、セッション情報画面ではPostgreSQLが内部に持つpg_stat_activityという特殊ビューを用いています。セッション情報画面の情報は、pg_stat_activityビューから抜き出して、整形した上で表示しているものです。
PostgreSQLのセッションについてのその他の情報は、PostgreSQL公式リファレンスのpg_stat_activityビューの説明を参照してください。
今回は以上です。ぜひ本機能をデータベース管理業務にお役立てください。
- キーワード: