HomeDB2各種情報取得 ロックログ取得

ロックログ取得

イベントモニター作成・開始

CONNECT TO [データベース名] USER [ユーザID] USING [パスワード]
CREATE EVENT MONITOR [イベントモニター名] FOR LOCKING WRITE TO UNFORMATTED EVENT TABLE
SET EVENT MONITOR [イベントモニター名] STATE 1
実行結果
db2 => CONNECT TO [データベース名] USER [ユーザID] USING [パスワード]

   データベース接続情報

 データベース・サーバー                                   = DB2/NT 9.7.1
 SQL 許可 ID                                              = [ユーザID]
 ローカル・データベース別名                               = [データベース名]

db2 => CREATE EVENT MONITOR [イベントモニター名] FOR LOCKING WRITE TO UNFORMATTED EVENT TABLE
DB20000I  SQL コマンドが正常に完了しました。
db2 => SET EVENT MONITOR [イベントモニター名] STATE 1
DB20000I  SQL コマンドが正常に完了しました。
イベントモニターの活動状態を確認
SELECT
        EVMONNAME
        ,CASE
            WHEN EVENT_MON_STATE(EVMONNAME) = 0 THEN '非活動'
            WHEN EVENT_MON_STATE(EVMONNAME) = 1 THEN '活動'
        END AS EVMONACTIVE
    FROM
        SYSCAT.EVENTMONITORS
    WHERE
        EVMONNAME = '[イベントモニター名]'

イベントモニター設定

※動的にデータベース構成パラメータの設定を変更するには、接続が必要。

収集するイベントを種類ごとに有効化
-- ロック待機イベント
UPDATE DB CFG FOR [データベース名] USING MON_LOCKWAIT HIST_AND_VALUES
UPDATE DB CFG FOR [データベース名] USING MON_LW_THRESH 10000000
-- ロックタイムアウトイベント
UPDATE DB CFG FOR [データベース名] USING MON_LOCKTIMEOUT HIST_AND_VALUES
-- デッドロックイベント
UPDATE DB CFG FOR [データベース名] USING MON_DEADLOCK HIST_AND_VALUES
収集するイベントを種類ごとに無効化
-- ロック待機イベント
UPDATE DB CFG FOR [データベース名] USING MON_LOCKWAIT NONE
UPDATE DB CFG FOR [データベース名] USING MON_LW_THRESH 5000000
-- ロックタイムアウトイベント
UPDATE DB CFG FOR [データベース名] USING MON_LOCKTIMEOUT NONE
-- デッドロックイベント
UPDATE DB CFG FOR [データベース名] USING MON_DEADLOCK WITHOUT_HIST

ロックログ取得

db2evmonfmtを生成

db2evmonfmtは、イベントモニターログ取得用ツールとして提供されています。
ログを取得するためには、Javaファイル「[DB2インストールパス]\SQLLIB\samples\java\jdbc\db2evmonfmt.java」からdb2evmonfmtツールを事前に生成する必要があります。

作業ディレクトリを作成、移動(例⇒C:\work)
C:\>mkdir work
C:\>cd work

[DB2インストールパス]\SQLLIB\samples\java\jdbcから下記ファイルを作業ディレクトリにコピー
 ・db2evmonfmt.java
 ・DB2EvmonLocking.xsl
 ・DB2EvmonPkgCache.xsl
 ・DB2EvmonPkgCacheStmt.xsl
 ・DB2EvmonUOW.xsl
 ・DB2LockReportHTML.xsl
C:\work>copy "[DB2インストールパス]\SQLLIB\samples\java\jdbc\db2evmonfmt.java" "C:\work"
C:\work>copy "[DB2インストールパス]\SQLLIB\samples\java\jdbc\DB2EvmonLocking.xsl" "C:\work"
C:\work>copy "[DB2インストールパス]\SQLLIB\samples\java\jdbc\DB2EvmonPkgCache.xsl" "C:\work"
C:\work>copy "[DB2インストールパス]\SQLLIB\samples\java\jdbc\DB2EvmonPkgCacheStmt.xsl" "C:\work"
C:\work>copy "[DB2インストールパス]\SQLLIB\samples\java\jdbc\DB2EvmonUOW.xsl" "C:\work"
C:\work>copy "[DB2インストールパス]\SQLLIB\samples\java\jdbc\DB2LockReportHTML.xsl" "C:\work"

PATH環境変数を変更
C:\work>set PATH=[DB2インストールパス]\SQLLIB\java\jdk\bin;%path%

コンパイル
C:\work>javac db2evmonfmt.java
db2evmonfmtが正常に生成されているか確認
C:\work>java db2evmonfmt -help
USAGE:

  db2evmonfmt -d  -ue  [ -u userid -p passwd ]
              < -fxml | -ftext [-ss stylesheet] >
              [ -id      ]
              [ -type   ]
              [ -hours     ]
   ・
   ・
   ・
実行結果
C:\>java db2evmonfmt -d [データベース名] -ue [イベントモニター名] -u [ユーザID] -p [パスワード] -ftext -type lockwait -hours 24
SELECT evmon.xmlreport FROM TABLE ( EVMON_FORMAT_UE_TO_XML( 'LOG_TO_FILE' ,FOR EACH ROW OF ( SELECT * FROM [イベントモニタ
ー名] ORDER BY EVENT_ID ,EVENT_TIMESTAMP ,EVENT_TYPE ,MEMBER ) ) ) AS evmon

-------------------------------------------------------
Event ID               : 1
Event Type             : [イベント種類]
Event Timestamp        : [イベント時刻]
Partition of detection : 0
-------------------------------------------------------
   ・
   ・
   ・

イベントモニター終了・削除

CONNECT TO [データベース名] USER [ユーザID] USING [パスワード]
SET EVENT MONITOR [イベントモニター名] STATE 0
DROP EVENT MONITOR [イベントモニター名]
実行結果
db2 => CONNECT TO [データベース名] USER [ユーザID] USING [パスワード]

   データベース接続情報

 データベース・サーバー                                   = DB2/NT 9.7.1
 SQL 許可 ID                                              = [ユーザID]
 ローカル・データベース別名                               = [データベース名]

db2 => SET EVENT MONITOR [イベントモニター名] STATE 0
DB20000I  SQL コマンドが正常に完了しました。
db2 => DROP EVENT MONITOR [イベントモニター名]
DB20000I  SQL コマンドが正常に完了しました。



ページトップへ

データベース

サーバ

Copyright (C) MadCap. All Rights Reserved.