IBM Support

[Db2] アクティビティー・イベント・モニターを使用してデータベースで実行された SQL を記録する方法

How To


Summary

Db2 データベースは、デフォルトで実行された SQL の履歴を残しません。
パッケージ・キャッシュにキャッシュされている SQL はデータベースの非活動化で消去されるだけでなく、新しい SQL の実行要求に従って LRU アルゴリズムでクリーンナップされていくため、履歴という観点では使用できません。

Objective

アクティビティー・イベント・モニターは指定された条件の SQL 実行のメトリックを実行したアプリケーションの情報と共に記録できます。アクティビティー・イベント・モニターを有効にすることで、どのようなアプリケーションがどのような SQL を実行しているかや、各 SQL のパフォーマンス・データを記録できます。
この文書はしきい値などの条件を設定せず、デフォルトのワークロードで実行されたすべての SQL の情報を記録する手法を案内します。

Steps

  1. データベース管理者としてデータベースに接続します。
  2. db2 connect to <db_name>
  3. アクティビティー・イベント・モニターを作成して有効化します。
    db2 CREATE EVENT MONITOR DB2ACTIVITIES FOR ACTIVITIES WRITE TO TABLE
    db2 SET EVENT MONITOR DB2ACTIVITIES STATE 1
  4. デフォルト・ワークロードのアクティビティ収集を有効にします。
    db2 ALTER WORKLOAD SYSDEFAULTUSERWORKLOAD COLLECT ACTIVITY DATA ON COORDINATOR WITH DETAILS
  5. アクティビティ (SQL) を実行します。
  6. 収集されたアクティビティを表示するために以下のような SQL ファイル (list_activities.sql) を作成します。
    SELECT TIME_STARTED, ACT_EXEC_TIME, VARCHAR(A.APPL_NAME, 15) as APPL_NAME, VARCHAR(A.TPMON_CLIENT_APP, 20) AS CLIENT_APP_NAME, VARCHAR(A.APPL_ID, 30) as APPL_ID, A.ACTIVITY_ID, A.UOW_ID, VARCHAR(S.STMT_TEXT, 300) AS STMT_TEXT FROM ACTIVITY_DB2ACTIVITIES AS A, ACTIVITYSTMT_DB2ACTIVITIES AS S WHERE A.APPL_ID = S.APPL_ID AND A.ACTIVITY_ID = S.ACTIVITY_ID AND A.UOW_ID = S.UOW_ID ;
    
  7. 収集されたアクティビティを表示します。
    db2 -tvf list_activities.sql
  8. (オプション) ワークロードの収集を停止します。
    db2 ALTER WORKLOAD SYSDEFAULTUSERWORKLOAD COLLECT ACTIVITY DATA NONE
  9. (オプション) イベント・モニターを停止し、イベント・データを除去します。
    db2 SET EVENT MONITOR DB2ACTIVITIES STATE 0
    db2 TRUNCATE TABLE ACTIVITY_DB2ACTIVITIES IMMEDIATE
    db2 TRUNCATE TABLE ACTIVITYSTMT_DB2ACTIVITIES IMMEDIATE
    db2 TRUNCATE TABLE ACTIVITYMETRICS_DB2ACTIVITIES IMMEDIATE
    db2 TRUNCATE TABLE ACTIVITYVALS_DB2ACTIVITIES IMMEDIATE
運用上の考慮点
  • データベースで実行されるすべてのアクティビティーを収集するのではなく、特定のユーザー、グループ、クライアント、アプリケーションなどが実行するアクティビティーを収集したい場合、条件を指定したワークロードを作成してアクティビティー・データの収集を有効にします。
    この場合、上のステップ 4 の代わりに条件を指定したワークロードを作成してアクティビティー・データの収集を有効にします。
    特定のユーザーが特定のアプリケーションを実行したときのアクティビティーを収集
    db2 "CREATE WORKLOAD WL1 SESSION_USER ('<auth_id>') APPLNAME ('<appl_name>') COLLECT ACTIVITY DATA ON COORDINATOR WITH DETAILS"
    特定の IP アドレスのクライアントが実行したアクティビティーを収集
    db2 "CREATE WORKLOAD WL1 ADDRESS ('<ip_adddress>') COLLECT ACTIVITY DATA ON COORDINATOR WITH DETAILS"
  • 実行時間や CPU 時間、作成する一時表のサイズなど、一定の条件を満たすアクティビティーのみを収集する場合、しきい値を設定してしきい値を超えたアクティビティーのみを収集できます。
    [Db2] しきい値を超える実行時間のトランザクションをイベント・モニターに記録する方法
     
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

Document Location

Worldwide

[{"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":"10.1.0;10.5.0;11.1.0;11.5.0"}]

Document Information

Modified date:
11 June 2024

UID

ibm16607812