PostgreSQL セッション情報を確認する
2018.09.03 株式会社システムインテグレータ
RELATED POST関連記事
RECENT POST「OBをトコトン極める」の最新記事

この記事が気に入ったら
いいねしよう!
2018.09.03 株式会社システムインテグレータ
PostgreSQLデータベースの管理業務において、だれのどのようなプロセスがデータベースと通信しているか確認したい場面があるかと思います。
SI Object Browser for Postgresでは、データベースに接続中のプロセスをひと目で確認できる「セッション情報画面」を提供しています。
本記事ではセッション情報画面を用いてPostgreSQLデータベースのセッションを確認する方法をお伝えします。
セッション情報画面を表示するには、「管理(A)」メニューから「セッション情報」を選択するか、ツールバーの「セッション情報」ボタンをクリックします (図1)。
図1 「セッション情報」ボタン
図2 セッション情報画面
セッション情報画面 (図2) では、データベースに張られているセッションの一覧が表示されます。青色で表示されている行は、SI Object Browser for Postgres 自身のプロセスを表しています。
一覧で確認できる情報は下記のとおりです。
プロセスのプロセスIDです。
プロセスの状態です。主に2つの状態が存在します。
プロセスから割り振られたデータベースユーザーのIDです。
プロセスで用いられているデータベースユーザーの名前です。
操作対象データベースのOIDです。
操作対象データベースの名前です。
プロセスの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ビューの説明を参照してください。
今回は以上です。ぜひ本機能をデータベース管理業務にお役立てください。
この記事が気に入ったら
いいねしよう!