IBM Support

[Db2] データベースに接続したアプリケーション情報の取得方法

Question & Answer


Question

Db2 サーバーに接続したアプリケーションの情報や、アプリケーションが実行したステートメントや接続情報を取得する方法を教えてください。

Answer

Db2 はデフォルトでデータべース接続や実行した SQL ステートメントの情報を記録しません。
イベント・モニターもしく監査機能を設定することによって、Db2 サーバーに接続したアプリケーション情報や実行された SQL ステートメントを収集できます。
  1. 接続イベント・モニターの設定手順
    イベント・モニターの作成は、SQLADM または DBADM 権限を持つユーザーで実行してください。
    イベント・タイプ CONNECTIONS と STATEMENTS を指定し、イベント・モニター名 DB_CONS を作成する例です。
    1. イベント・モニターの作成
      パス名はイベント・ファイルを書き込むディレクトリー・パスを指定します。
      $ db2 connect to <DB名>
      $ db2 create event monitor DB_CONS for connections, statements write to file '<パス名>' autostart
      注意: パス名は存在するパスを指定してください。
    2. イベント・モニターの活動化
      $ db2 set event monitor DB_CONS state 1
    3. イベント・モニターの稼動確認
      EVENT_MON_STATE (evmonname) の結果が 1 (活動化) となっていることを確認します。
      $ db2 SELECT evmonname, EVENT_MON_STATE(evmonname) FROM SYSCAT.EVENTMONITORS
    4. アプリケーションからデータベースに接続し処理を実行
    5. イベント・モニターのフォーマット
      $ db2 flush event monitor DB_CONS
      $ db2 set event monitor DB_CONS state 0
      $ db2evmon -db <DB名> -evm DB_CONS
    6. ログの確認
      イベント・モニターは 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 [接続が切断した時刻]
    7. イベント・モニターの削除
      不要な場合は、イベントモニターを削除します。
      $ db2 drop event monitor DB_CONS

       
  2. パフォーマンス情報と共に実行された SQL ステートメントの情報を記録する手順
    アクティビティ・イベント・モニターを使用することで、指定したデータベースで実行された SQL の履歴をパフォーマンス情報と共に記録できます。手順は以下の Technote をご参照ください。
    [Db2] アクティビティ・イベント・モニターを使用してデータベースで実行された SQL を記録する方法
     
  3. 監査ログの設定手順
    監査機能を設定することによっても、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"}]

Document Information

Modified date:
25 August 2023

UID

swg21574881