イベント・モニターの出力は 2 進ストリームの論理データ・グループで、 パイプ・イベント・モニターでもファイル・イベント・モニターでも全く同じです。 db2evmon 生産性向上ツールを使ってこのトレースをフォーマットすることができます。
次の表では、 イベント・モニター出力中に表示される異なるグループを示しています。 イベント・レコードの書き込みをトリガーするイベントのリストについては、 イベント・モニターによって使用できる情報を参照してください。 トレース内のレコードは、以下の 4 つのタイプに分けられます。
イベント・タイプ | 論理データ・グループ | 戻される情報 |
---|---|---|
モニター | ||
モニター・レベル |
event_log_stream_header (SQLM_EVENT_LOG_STREAM_HEADER) | イベント・モニターのバージョン・レベルおよびバイトの並び順を識別する。 アプリケーションはこのヘッダーを使用して、 evmon 出力ストリームを処理できるかどうかを判別できる。 |
プロローグ | ||
ログ・ヘッダー |
log_header_event (EVENT_LOG_HEADER) | トレースの特性、たとえば、サーバーのタイプおよびメモリーのレイアウト。 |
データベース・ヘッダー |
db_header_event (EVENT_DB_HEADER) | データベース名、パスおよび活動化時間。 |
イベント・モニター開始 |
start_event (EVENT_START) | モニターが開始されるか再始動された時間。 |
接続ヘッダー |
connheader_event (EVENT_CONNHEADER) | 現行接続のヘッダーごとに 1 つ。接続時間とアプリケーション名を含む。 |
実内容 | ||
ステートメント・イベント |
stmt_event (EVENT_STMT) | ステートメント・レベル・データ。動的ステートメントのテキストを含む。 ステートメント・イベント・モニターは、取り出しを記録しません。 |
サブセクション・イベント |
subsection_event (EVENT_SUBSECTION) | サブセクション・レベル・データ。 |
トランザクション・イベント |
xaction_event (EVENT_XACT) | トランザクション・レベル・データ。 |
接続イベント |
conn_event (EVENT_CONN) | 接続レベル・データ。 |
デッドロック・イベント |
deadlock_event (EVENT_DEADLOCK) | デッドロック・レベル・データ。 |
デッドロック接続イベント |
dlconn_event (EVENT_DLCONN) | デッドロックに関係している接続ごとに 1 つ。 関係するアプリケーションと競合しているロックを含む。 |
オーバーフロー |
overflow_event (EVENT_OVERFLOW) | 脱落したレコードの数。書き込み装置が (ブロック化されていない) イベント・モニターに追い付かないときに生成される。 |
エピローグ | ||
データベース・イベント |
db_event (EVENT_DB) | データベース・レベル・データ。 |
バッファー・プール・イベント |
bufferpool_event (EVENT_BUFFERPOOL) | バッファー・プール・レベル・データ。 |
表スペース・イベント |
tablespace_event (EVENT_TABLESPACE) | 表スペース・レベル・データ。 |
表イベント |
table_event (EVENT_TABLE) | 表レベル・データ。 |
イベント・レコードはどの接続についても生成されることがあるため、 ストリーム中にいろいろな順序で現れる場合があります。 すなわち、接続 1 のトランザクション・イベントの直後に接続 2 の接続イベントを取得することがあるということです。 しかし、単一の接続または単一のイベントに属するレコードは、 論理順序で現れます。 たとえば、ステートメント・レコード (ステートメントの終わり) は、 トランザクション・レコード (UOW の終わり) があれば、必ずその前に来ます。 同様に、デッドロック・イベント・レコードは、 必ずデッドロックに関係する各接続のデッドロック接続イベント・レコードの前に来ます。 アプリケーション ID またはアプリケーション・ハンドル (agent_id) を使って、 レコードと接続を一致させることができます。
![]() |
以下の作業負荷と
![]() |
以下のトレースが生成されます。 この例では、トレースに含まれる情報のタイプを詳しく説明するために、 各イベント・レコード内のいくつかのフィールドがリストされています。 デッドロック・イベントの例については、イベント・モニターを参照してください。 なお、この例の中の数字は、レコードが書き込まれた順序を示しています。
モニター
モニター情報はすべてのイベント・モニターに対して生成されます。 SQLM_DBMON_VERSION6 または SQLM_DBMON_VERSION7 のバージョンを戻すイベント・モニターのみが、 自己記述型データ・ストリームを使用します。
バージョン 6 以前の出力はバージョン 5 の方式で読み取る必要があります。 このようなサイズが静的な構造については、 sqlmon.h ファイルを参照してください。
プロローグ
プロローグ情報は、 set event monitor all state 1 が実行されると生成されます。 このイベント・モニターがすでに自動開始 (AUTOSTART) されている場合は、 データベースの活動化時に生成されているはずです。
1) event_log_stream_header byte_order: SQLM_BIG_ENDIAN - a UNIX or AIX box size: 400 - not used, for compatibility only version: SQLM_DBMON_VERSION7 - trace was produced by UDB V7 2) log_header_event version: SQLM_DBMON_VERSION7 - Trace was produced by UDB V7 num_nodes_in_db2_instance: 1 - for a standalone system, byte_order: SQLM_BIG_ENDIAN - on a UNIX or AIX box, event_monitor_name: ALL - by event monitor: 'ALL' 3) dbheader_event db_name: SAMPLE - for database 'SAMPLE' 4) connheader_event agent_id: 14 - Application 1 - handle appl_id: *LOCAL.bourbon.970602180712 - Application 1 - id with timestamp
内容
アプリケーション 1 が select name from syscat.eventmonitors を発行すると生成されます。 イベント・モニターがオンにされた時点では、 アプリケーション 2 はまだ接続されていません。
5) stmt_event agent_id: 14 appl_id: *LOCAL.bourbon.970602180712 operation: SQLM_PREPARE package_name: SQLC2BA4 cursor: SQLCUR201 @stmt_text_offset: SELECT EVMONNAME FROM SYSCAT.EVENTMONITORS 6) stmt_event agent_id: 14 appl_id: *LOCAL.bourbon.970602180712 operation: SQLM_OPEN package_name: SQLC2BA4 cursor: SQLCUR201 @stmt_text_offset: SELECT EVMONNAME FROM SYSCAT.EVENTMONITORS 7) stmt_event agent_id: 14 appl_id: *LOCAL.bourbon.970602180712 operation: SQLM_FETCH package_name: SQLC2BA4 cursor: SQLCUR201 @stmt_text_offset: SELECT EVMONNAME FROM SYSCAT.EVENTMONITORS fetch_count: 2 sqlca.sqlcode: 100 - (all rows in the SYSCAT.EVENTMONITORS table) SQL0100W No row was found for FETCH, UPDATE or DELETE; or the result of a query is an empty table. SQLSTATE=02000 NOTE - A fetch event is generated only if the fetch fails or encounters end of table 8) stmt_event agent_id: 14 appl_id: *LOCAL.bourbon.970602180712 operation: SQLM_DESCRIBE package_name: SQLC2BA4 cursor: SQLCUR201 @stmt_text_offset: SELECT EVMONNAME FROM SYSCAT.EVENTMONITORS 9) stmt_event agent_id: 14 appl_id: *LOCAL.bourbon.970602180712 operation: SQLM_CLOSE package_name: SQLC2BA4 cursor: SQLCUR201 @stmt_text_offset: SELECT EVMONNAME FROM SYSCAT.EVENTMONITORS fetch_count: 2 10) stmt_event agent_id: 14 appl_id: *LOCAL.bourbon.970602180712 operation: SQLM_STATIC_COMMIT - generated by CLP after the SELECT package_name: SQLC2BA4 11) xaction_event agent_id: 14 appl_id: *LOCAL.bourbon.970602180712 status: SQLM_UOWCOMMIT rows_read: 7
アプリケーション 2 がデータベースに接続しようとしています。 以下のように、DB2 エージェントが同時に実行しているため、 出力にインターリーブが生じます。
12) connheader_event agent_id: 15 - Application 2 - handle appl_id: *LOCAL.bourbon.970602180714 - Application 2 - id with timestamp 13) stmt_event agent_id: 15 appl_id: *LOCAL.bourbon.970602180714 operation: SQLM_STATIC_COMMIT - generated by CLP on CONNECT 14) xaction_event agent_id: 15 appl_id: *LOCAL.bourbon.970602180714 status: SQLM_UOWCOMMIT 15) stmt_event agent_id: 15 appl_id: *LOCAL.bourbon.970602180714 operation: SQLM_STATIC_COMMIT - generated on CONNECT RESET 16) xaction_event agent_id: 15 appl_id: *LOCAL.bourbon.970602180714 status: SQLM_UOWCOMMIT 17) conn_event agent_id: 15 appl_id: *LOCAL.bourbon.970602180714 commit_sql_stmts: 2 18) stmt_event agent_id: 14 appl_id: *LOCAL.bourbon.970602180712 operation: SQLM_STATIC_COMMIT - generated on CONNECT RESET package_name: SQLC2BA4 19) xaction_event agent_id: 14 appl_id: *LOCAL.bourbon.970602180712 status: SQLM_UOWCOMMIT rows_read: 2 locks_held_top: 7 20) conn_event agent_id: 14 appl_id: *LOCAL.bourbon.970602180712 select_sql_stmts: 1 rows_selected: 2
EPILOG
エピローグ情報は、データベースが非活動化状態にあるとき (最後のアプリケーションが切断を終了したとき) に生成されます。
21) table_event table_schema: SYSIBM table_name: SYSTABLES table_type: SQLM_CATALOG_TABLE rows_read: 2 22) table_event table_schema: SYSIBM table_name: SYSDBAUTH table_type: SQLM_CATALOG_TABLE rows_read: 3 23) tablespace_event tablespace_name: SYSCATSPACE 24) tablespace_event tablespace_name: TEMPSPACE1 25) tablespace_event tablespace_name: USERSPACE1 26) bufferpool_event bp_name: IBMDEFAULTBP 27) db_event connections_top: 2
注: | CREATE EVENT MONITOR SQL ステートメントの WHERE 文節を使って、 イベントを生成するアプリケーションを制限することができます。 詳細については、付録 A, データベース・システム・モニター・インターフェースを参照してください。 |