Question & Answer
Question
Db2 サーバーに接続したアプリケーションの情報や、アプリケーションが実行したステートメントや接続情報を取得する方法を教えてください。
Answer
Db2 はデフォルトでデータべース接続や実行した SQL ステートメントの情報を記録しません。
イベント・モニターもしく監査機能を設定することによって、Db2 サーバーに接続したアプリケーション情報や実行された SQL ステートメントを収集できます。
- 接続イベント・モニターの設定手順
イベント・モニターの作成は、SQLADM または DBADM 権限を持つユーザーで実行してください。
イベント・タイプ CONNECTIONS と STATEMENTS を指定し、イベント・モニター名 DB_CONS を作成する例です。- イベント・モニターの作成
パス名はイベント・ファイルを書き込むディレクトリー・パスを指定します。$ db2 connect to <DB名> $ db2 create event monitor DB_CONS for connections, statements write to file '<パス名>' autostart
- イベント・モニターの活動化
$ db2 set event monitor DB_CONS state 1
- イベント・モニターの稼動確認
EVENT_MON_STATE (evmonname) の結果が 1 (活動化) となっていることを確認します。$ db2 SELECT evmonname, EVENT_MON_STATE(evmonname) FROM SYSCAT.EVENTMONITORS
- アプリケーションからデータベースに接続し処理を実行
- イベント・モニターのフォーマット
$ db2 flush event monitor DB_CONS $ db2 set event monitor DB_CONS state 0 $ db2evmon -db <DB名> -evm DB_CONS
- ログの確認
イベント・モニターは SQL ステートメントの実行が完了した時点でステートメント・イベントを記録し、データベースから切断すると接続イベントを記録します。イベント・モニターの出力から接続元の IP アドレス、接続した時刻、切断した時刻、実行した SQL ステートメント等がわかります。
出力例と説明-------------------------------------------------------------------------- EVENT LOG HEADER Event Monitor name: DB_CONS [イベント・モニター名] Server Product ID: SQL09073 Version of event monitor data: 11 Byte order: BIG ENDIAN Number of nodes in db2 instance: 1 Codepage of database: 1208 Territory code of database: 81 Server instance name: v97fp3 [インスタンス名] -------------------------------------------------------------------------- -------------------------------------------------------------------------- Database Name: WEBTSDB [ DB 名] Database Path: /work/v97fp3/NODE0000/SQL00001/ First connection timestamp: 2011-11-28 11:30:58.387793 Event Monitor Start time: 2011-11-28 14:31:12.277889 -------------------------------------------------------------------------- 中略 6) Statement Event ... [STATEMENTS で取得した情報] Appl Handle: 4882 [アプリケーション・ハンドル] Appl Id: 9.189.213.52.3097.111128053239 [接続元 IP アドレス] Appl Seq number: 00001 Record is the result of a flush: FALSE ------------------------------------------- Type : Dynamic Operation: Prepare Section : 201 Creator : NULLID Package : SQLC2H21 Consistency Token : AAAAAPAa Package Version ID : Cursor : SQLCUR201 Cursor was blocking: FALSE Text : select * from proj [実行した動的 SQL ステートメント] ------------------------------------------- Start Time: 2011-11-28 14:31:47.668979 [SQL ステートメント開始時刻] Stop Time: 2011-11-28 14:31:47.680165 [SQL ステートメント終了時刻] Elapsed Execution Time: 0.011186 seconds 中略 16) Connection Event [CONNECTIONS で取得した情報] Appl Handle: 4882 Appl Id: 9.189.213.52.3097.111128053239 [接続元 IP アドレス] Appl Seq number: 00006 Authority_bitmap: User Authority: SQL_DBAUTH_DBADM SQL_DBAUTH_SECADM SQL_DBAUTH_DATAACCESS SQL_DBAUTH_ACCESSCTRL GROUP Authority: SQL_DBAUTH_SYSADM SQL_DBAUTH_CREATETAB SQL_DBAUTH_BINDADD SQL_DBAUTH_CONNECT SQL_DBAUTH_IMPLICIT_SCHEMA 中略 Disconnection Time: 2011-11-28 14:33:12.849716 [接続が切断した時刻]
- イベント・モニターの削除
不要な場合は、イベントモニターを削除します。$ db2 drop event monitor DB_CONS
- イベント・モニターの作成
- パフォーマンス情報と共に実行された SQL ステートメントの情報を記録する手順
アクティビティ・イベント・モニターを使用することで、指定したデータベースで実行された SQL の履歴をパフォーマンス情報と共に記録できます。手順は以下の Technote をご参照ください。
[Db2] アクティビティ・イベント・モニターを使用してデータベースで実行された SQL を記録する方法
- 監査ログの設定手順
監査機能を設定することによっても、Db サーバーに接続したアプリケーションの情報が取得できます。手順は以下の Technote をご参照ください。
[Db2] Db2 9.5 以降における監査の設定方法 (IM-10-0AF)
運用上の考慮点
イベント・タイプ STATEMENTS を指定すると、 SQL ステートメントの実行が完了した時点でイベントを記録します。実行するステートメント数や環境によってはある程度の負荷がかかります。
関連情報
[Db2] パスポート・アドバンテージによく寄せられる質問
イベント・モニター
CREATE EVENT MONITOR ステートメント
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート
[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PmIAAU","label":"Monitors-\u003EEvent Monitor"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]
Was this topic helpful?
Document Information
Modified date:
25 August 2023
UID
swg21574881