LONG_RUNNING_SQL 管理ビューは、現在接続されているデータベースで実行されている SQL ステートメントを戻します。 このビューを使用することにより、データベース内の、実行時間の長い SQL ステートメントを識別することができます。
スキーマは SYSIBMADM です。
制限のないデータベースでは、このビューが自動的に作成されると、SELECT 特権が PUBLIC に付与されます。
SELECT SUBSTR(STMT_TEXT, 1, 50) AS STMT_TEXT, AGENT_ID,
ELAPSED_TIME_MIN, APPL_STATUS, DBPARTITIONNUM
FROM SYSIBMADM.LONG_RUNNING_SQL ORDER BY DBPARTITIONNUM
STMT_TEXT AGENT_ID ...
-----------------------------...- --------...- ...
select * from dbuser.employee 228 ...
select * from dbuser.employee 228 ...
select * from dbuser.employee 228 ...
...
3 record(s) selected. ...
... ELAPSED_TIME_MIN APPL_STATUS DBPARTITIONNUM
... ---------------- -----------...- --------------
... 2 UOWWAIT 0
... 0 CONNECTED 1
... 0 CONNECTED 2
このビューを使用することにより、データベース内の、実行時間の長い SQL ステートメントを識別することができます。 現在実行中の照会を見て、実行時間が最も長いステートメント、および照会の現行状況を調べることができます。 エージェント ID をユニーク ID として使用することにより、その SQL ステートメントを含むアプリケーションをさらに詳しく調査することができます。 長時間実行していてロック待機している場合は、LOCKWAITS または LOCKS_HELD 管理ビューを使用してさらに深く掘り下げることもできます。 「waiting on User (ユーザー待機中)」という表示は、DB2® サーバーが何の動作も行っておらず、アプリケーションによる何らかの動作 (例えば次のフェッチの発行または次の SQL ステートメントのサブミット) を待機していることを意味します。
列名 | データ・タイプ | 説明または対応するモニター・エレメント |
---|---|---|
SNAPSHOT_TIMESTAMP | TIMESTAMP | レポートの生成時刻。 |
ELAPSED_TIME_MIN | INTEGER | ステートメントの経過時間 (分)。 |
AGENT_ID | BIGINT | agent_id - アプリケーション・ハンドル (エージェント ID) |
APPL_NAME | VARCHAR(256) | appl_name - アプリケーション名 |
APPL_STATUS | VARCHAR(22) | appl_status - アプリケーション状況。このインターフェースは、sqlmon.h での定義に基づくテキスト ID を戻します。これは次のいずれかです。
|
AUTHID | VARCHAR(128) | auth_id - 許可 ID |
INBOUND_COMM_ADDRESS | VARCHAR(32) | inbound_comm_address - インバウンド通信アドレス |
STMT_TEXT | CLOB(16 M) | stmt_text - SQL 動的ステートメント・テキスト |
DBPARTITIONNUM | SMALLINT | dbpartitionnum - データベース・パーティション番号モニター・エレメント |
MEMBER | SMALLINT | member - データベース・メンバー・モニター・エレメント |