| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「DB2 ロック・イベントのモニター」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「==DB2 ロック・イベントのモニター== [DB2 v10.1][Database] {{amazon|479813189X}} *http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.1.0/com.ibm.db…」)
 
 
(同じ利用者による、間の3版が非表示)
1行目: 1行目:
==DB2 ロック・イベントのモニター==
+
==[[DB2 ロック・イベントのモニター]]==
[DB2 v10.1][Database]
+
[[DB2 v10.1]] | [[Database]] |
  
 
{{amazon|479813189X}}
 
{{amazon|479813189X}}
7行目: 7行目:
  
 
====次のような状況下では、ロック・イベント・データを収集する====
 
====次のような状況下では、ロック・イベント・データを収集する====
*MON_GET_WORKLOAD 表関数を使用したところ、ロック待機の値がいつもより長い。
+
*MON_GET_WO[[R]]KLOAD 表関数を使用したところ、ロック待機の値がいつもより長い。
*アプリケーションが「ロック・タイムアウトのために、トランザクションがロールバックされました」という内容の -911 SQL 戻りコードを理由コード 68 と共に管理通知ログに戻す
+
*アプリケーションが「ロック・タイムアウトのために、[[トランザクション]]がロールバックされました」という内容の -911 SQL 戻りコードを理由コード 68 と共に管理通知ログに戻す
 
*管理通知ログにデッドロック・イベント・メッセージ
 
*管理通知ログにデッドロック・イベント・メッセージ
  
===MON_GET_WORKLOAD 表関数 - ワークロード・メトリックの取得===
+
===MON_GET_WO[[R]]KLOAD 表関数 - ワークロード・メトリックの取得===
 
*http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.1.0/com.ibm.db2.luw.sql.rtn.doc/doc/r0053940.html?lang=ja
 
*http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.1.0/com.ibm.db2.luw.sql.rtn.doc/doc/r0053940.html?lang=ja
 
*メンバー全体で集約し、ロック待機時間の長い順に、ワークロードごとのロック情報を表示します。
 
*メンバー全体で集約し、ロック待機時間の長い順に、ワークロードごとのロック情報を表示します。
19行目: 19行目:
 
         sum(lock_timeouts) as total_lock_timeouts,  
 
         sum(lock_timeouts) as total_lock_timeouts,  
 
         sum(lock_escals) as total_lock_escals  
 
         sum(lock_escals) as total_lock_escals  
  FROM TABLE(MON_GET_WORKLOAD('',-2)) AS t  
+
  F[[R]]OM TABLE(MON_GET_WO[[R]]KLOAD('',-2)) AS t  
  GROUP BY workload_name  
+
  G[[R]]OUP BY workload_name  
  ORDER BY total_lock_wait_time DESC
+
  O[[R]]DE[[R]] BY total_lock_wait_time DESC
  
 
=====列抜粋=====
 
=====列抜粋=====
46行目: 46行目:
  
 
  SELECT
 
  SELECT
   WORKLOAD_NAME,
+
   WO[[R]]KLOAD_NAME,
 
   DEADLOCKS,
 
   DEADLOCKS,
 
   LOCK_WAIT_TIME,
 
   LOCK_WAIT_TIME,
52行目: 52行目:
 
   LOCK_ESCALS,
 
   LOCK_ESCALS,
 
   LOCK_TIMEOUTS
 
   LOCK_TIMEOUTS
  FROM TABLE(MON_GET_WORKLOAD(null,-2));
+
  F[[R]]OM TABLE(MON_GET_WO[[R]]KLOAD(null,-2));
 
===ロック・イベント・モニター===
 
===ロック・イベント・モニター===
 
*ロック・データを収集してロック競合状態の診断および修正作業を単純化するように設計
 
*ロック・データを収集してロック競合状態の診断および修正作業を単純化するように設計
61行目: 61行目:
 
*バイナリー・フォーマット、通常の表にイベント情報を書き込む
 
*バイナリー・フォーマット、通常の表にイベント情報を書き込む
 
**[http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.1.0/com.ibm.db2.luw.admin.mon.doc/doc/c0059021.html?lang=ja-jp イベント・モニターの出力オプション]
 
**[http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.1.0/com.ibm.db2.luw.admin.mon.doc/doc/c0059021.html?lang=ja-jp イベント・モニターの出力オプション]
<blockquote>デッドロック・イベント・モニターは非推奨、機能は、ロック・イベント・モニターに統合</blockquote>
+
&lt;blockquote&gt;デッドロック・イベント・モニターは非推奨、機能は、ロック・イベント・モニターに統合&lt;/blockquote&gt;
 
*[http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.1.0/com.ibm.db2.luw.admin.mon.doc/doc/c0054136.html?lang=ja-jp#c0054136__DeprecatedLockMonitoringFunctional 推奨されないロック・モニター機能]
 
*[http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.1.0/com.ibm.db2.luw.admin.mon.doc/doc/c0054136.html?lang=ja-jp#c0054136__DeprecatedLockMonitoringFunctional 推奨されないロック・モニター機能]
 
===機能の有効化手順===
 
===機能の有効化手順===
====CREATE EVENT MONITOR FOR LOCKING ステートメントを使用して LOCK EVENT モニターを作成====
+
====C[[R]]EATE EVENT MONITO[[R]] FO[[R]] LOCKING ステートメントを使用して LOCK EVENT モニターを作成====
 
*モニターの名前を入力
 
*モニターの名前を入力
 
*出力形式として UE 表を使用する場合は、ロック・イベント・データが書き込まれる未フォーマット・イベント表の名前も入力
 
*出力形式として UE 表を使用する場合は、ロック・イベント・データが書き込まれる未フォーマット・イベント表の名前も入力
 
*出力に通常の表を使用するように選択した場合は、 デフォルトの表名が割り当てられます
 
*出力に通常の表を使用するように選択した場合は、 デフォルトの表名が割り当てられます
 
=====バイナリー・データの扱い=====
 
=====バイナリー・データの扱い=====
*db2evmonfmt  Java アプリケーションを使用して XML またはテキスト文書に変換できる
+
*db2evmonfmt  [[Java]] アプリケーションを使用して XML またはテキスト文書に変換できる
*EVMON_FORMAT_UE_TO_XML 表関数を使用して XML レポート文書にフォーマット
+
*EVMON_FORMAT_UE_TO_[[XML]] 表関数を使用して [[XML]] レポート文書にフォーマット
*EVMON_FORMAT_UE_TO_TABLES プロシージャーを使用してリレーショナル表にフォーマット
+
*[[EVM]]ON_FORMAT_UE_TO_TABLES プロシージャーを使用してリレーショナル表にフォーマット
  
 
====ロック・イベント・データをキャプチャーするレベルを指定====
 
====ロック・イベント・データをキャプチャーするレベルを指定====
 
=====ワークロード=====
 
=====ワークロード=====
 
*既存のワークロードを変更する
 
*既存のワークロードを変更する
*CREATE または ALTER WORKLOAD ステートメントを使用して新規ワークロードを作成する
+
*C[[R]]EATE または ALTE[[R]] WO[[R]]KLOAD ステートメントを使用して新規ワークロードを作成する
*ワークロード・レベルで、キャプチャーするロック・イベント・データのタイプ、およびロックに関係したアプリケーションの SQL ステートメント履歴および入力値を必要とするかどうかを指定
+
*ワークロード・レベルで、キャプチャーするロック・イベント・データのタイプ、およびロックに関係したアプリケーションの [[SQL]] ステートメント履歴および入力値を必要とするかどうかを指定
<blockquote>SQL ステートメント履歴および入力値のキャプチャーにより、プロセッサー時間、メモリー、およびストレージの使用量が増大しますが、 ロック問題を適切にデバッグするには、多くの場合このレベルの詳細情報が必要</blockquote>
+
&lt;blockquote&gt;[[SQL]] ステートメント履歴および入力値のキャプチャーにより、プロセッサー時間、メモリー、およびストレージの使用量が増大しますが、 ロック問題を適切にデバッグするには、多くの場合このレベルの詳細情報が必要&lt;/blockquote&gt;
=====データベース・レベルで収集し、すべての DB2 ワークロードに影響を与える=====
+
=====データベース・レベルで収集し、すべての [[DB2]] ワークロードに影響を与える=====
 
{|class="wikitable"
 
{|class="wikitable"
 
!値
 
!値
100行目: 100行目:
 
===ロック・イベント・データの収集とレポートの生成===
 
===ロック・イベント・データの収集とレポートの生成===
 
*http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.1.0/com.ibm.db2.luw.admin.mon.doc/doc/t0055093.html?lang=ja
 
*http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.1.0/com.ibm.db2.luw.admin.mon.doc/doc/t0055093.html?lang=ja
*DBADM または SQLADM 権限 が必要
+
*DBADM または [[SQL]]ADM 権限 が必要
*データ値を表示するには、EVMON_FORMAT_UE_* ルーチンに対する EXECUTE 特権が必要(DBADM 権限が暗黙的に保持)
+
*データ値を表示するには、[[EVM]]ON_FORMAT_UE_* ルーチンに対する EXECUTE 特権が必要(DBADM 権限が暗黙的に保持)
  
 
===手順===
 
===手順===
 
====lockevmon というロック・イベント・モニターを作成====
 
====lockevmon というロック・イベント・モニターを作成====
  CREATE EVENT MONITOR lockevmon FOR LOCKING
+
  C[[R]]EATE EVENT MONITO[[R]] lockevmon FO[[R]] LOCKING
   WRITE TO UNFORMATTED EVENT TABLE
+
   W[[R]]ITE TO UNFO[[R]]MATTED EVENT TABLE
 
*イベント・モニターは前もって作成できます。また、ディスク・スペースが使い尽くされることを心配する必要はありません。   
 
*イベント・モニターは前もって作成できます。また、ディスク・スペースが使い尽くされることを心配する必要はありません。   
 
*データベース・レベルまたはワークロード・レベルのデータ収集を活動化するまでは何も書き込まれません。
 
*データベース・レベルまたはワークロード・レベルのデータ収集を活動化するまでは何も書き込まれません。
112行目: 112行目:
  
 
====ロック・イベント・モニター lockevmon を活動化====
 
====ロック・イベント・モニター lockevmon を活動化====
  SET EVENT MONITOR lockevmon STATE 1
+
  SET EVENT MONITO[[R]] lockevmon STATE 1
  
 
====ロック・イベント・データ収集を使用可能====
 
====ロック・イベント・データ収集を使用可能====
 
=====ワークロード・レベル=====
 
=====ワークロード・レベル=====
*COLLECT 節の 1 つを使用して ALTER WORKLOAD ステートメントを発行
+
*COLLECT 節の 1 つを使用して ALTE[[R]] WO[[R]]KLOAD ステートメントを発行
*COLLECT 節で WITH HISTORY オプションを指定
+
*COLLECT 節で WITH HISTO[[R]]Y オプションを指定
 
=====すべてのワークロード=====
 
=====すべてのワークロード=====
 
*データベース構成パラメーターを設定すると、データベース・レベルのロック・イベント・データ収集に影響を与え、すべてのワークロードが影響
 
*データベース構成パラメーターを設定すると、データベース・レベルのロック・イベント・データ収集に影響を与え、すべてのワークロードが影響
123行目: 123行目:
 
*例
 
*例
 
**FINANCE アプリケーションについては 5 秒経過後に獲得されたロックのロック待機データを収集
 
**FINANCE アプリケーションについては 5 秒経過後に獲得されたロックのロック待機データを収集
**PAYROLL アプリケーションについては 10 秒経過後に獲得されたロックのロック待機データを収集
+
**PAY[[R]]OLL アプリケーションについては 10 秒経過後に獲得されたロックのロック待機データを収集
  ALTER WORKLOAD finance COLLECT LOCK WAIT DATA WITH HISTORY AND VALUES
+
  ALTE[[R]] WO[[R]]KLOAD finance COLLECT LOCK WAIT DATA WITH HISTO[[R]]Y AND VALUES
     FOR LOCKS WAITING MORE THAN 5 SECONDS
+
     FO[[R]] LOCKS WAITING MO[[R]]E THAN 5 SECONDS
  ALTER WORKLOAD payroll COLLECT LOCK WAIT DATA  
+
  ALTE[[R]] WO[[R]]KLOAD payroll COLLECT LOCK WAIT DATA  
     FOR LOCKS WAITING MORE THAN 10 SECONDS WITH HISTORY
+
     FO[[R]] LOCKS WAITING MO[[R]]E THAN 10 SECONDS WITH HISTO[[R]]Y
 
*例
 
*例
 
**SAMPLE データベースの mon_lockwait データベース構成パラメーターを HIST_AND_VALUES 入力データ値を指定して設定
 
**SAMPLE データベースの mon_lockwait データベース構成パラメーターを HIST_AND_VALUES 入力データ値を指定して設定
135行目: 135行目:
 
=====ロック・タイムアウト・イベントの場合(COLLECT LOCK TIMEOUT DATA)=====
 
=====ロック・タイムアウト・イベントの場合(COLLECT LOCK TIMEOUT DATA)=====
 
*例
 
*例
**FINANCE および PAYROLL アプリケーションのロック・タイムアウト・データを収集する
+
**FINANCE および PAY[[R]]OLL アプリケーションのロック・タイムアウト・データを収集する
  ALTER WORKLOAD finance COLLECT LOCK TIMEOUT DATA WITH HISTORY
+
  ALTE[[R]] WO[[R]]KLOAD finance COLLECT LOCK TIMEOUT DATA WITH HISTO[[R]]Y
  ALTER WORKLOAD payroll COLLECT LOCK TIMEOUT DATA WITH HISTORY
+
  ALTE[[R]] WO[[R]]KLOAD payroll COLLECT LOCK TIMEOUT DATA WITH HISTO[[R]]Y
 
*例
 
*例
 
**SAMPLE データベースの mon_locktimeout データベース構成パラメーターを HIST_AND_VALUES 入力データ値を指定して設定
 
**SAMPLE データベースの mon_locktimeout データベース構成パラメーターを HIST_AND_VALUES 入力データ値を指定して設定
143行目: 143行目:
 
=====デッドロック・イベントの場合(COLLECT DEADLOCK DATA)=====
 
=====デッドロック・イベントの場合(COLLECT DEADLOCK DATA)=====
 
*例
 
*例
**FINANCE および PAYROLL アプリケーションのデータを収集
+
**FINANCE および PAY[[R]]OLL アプリケーションのデータを収集
  ALTER WORKLOAD finance COLLECT DEADLOCK DATA WITH HISTORY
+
  ALTE[[R]] WO[[R]]KLOAD finance COLLECT DEADLOCK DATA WITH HISTO[[R]]Y
  ALTER WORKLOAD payroll COLLECT DEADLOCK DATA WITH HISTORY
+
  ALTE[[R]] WO[[R]]KLOAD payroll COLLECT DEADLOCK DATA WITH HISTO[[R]]Y
 
*例
 
*例
 
**SAMPLE データベースの mon_deadlock データベース構成パラメーターを HIST_AND_VALUES 入力データ値を指定して設定
 
**SAMPLE データベースの mon_deadlock データベース構成パラメーターを HIST_AND_VALUES 入力データ値を指定して設定
152行目: 152行目:
 
====ロッキング・イベント・レポートを取得====
 
====ロッキング・イベント・レポートを取得====
 
*ワークロードの再実行とデータベースへの接続
 
*ワークロードの再実行とデータベースへの接続
=====XML パーサー・ツール db2evmonfmt を使用=====
+
=====[[XML]] パーサー・ツール db2evmonfmt を使用=====
*C:\IBM\SQLLIB\samples\java\jdbc\db2evmonfmt.java から適当なディレクトリでコンパイル
+
*C:\IBM\[[SQL]]LIB\samples\java\jdbc\db2evmonfmt.java から適当なディレクトリでコンパイル
 
  java db2evmonfmt -d db_name -ue table_name -ftext -u user_id -p password
 
  java db2evmonfmt -d db_name -ue table_name -ftext -u user_id -p password
  
  SELECT evmon.xmlreport FROM TABLE ( EVMON_FORMAT_UE_TO_XML( 'LOG_TO_FILE',FOR EACH ROW OF ( SELECT * FROM lockevmon  ORDER BY EVENT_ID, EVENT_TIMESTAMP, EVENT_TYPE, MEMBER ))) AS evmon
+
  SELECT evmon.xmlreport FROM TABLE ( EVMON_FORMAT_UE_TO_[[XML]]( 'LOG_TO_FILE',FOR EACH ROW OF ( SELECT * FROM lockevmon  ORDER BY EVENT_ID, EVENT_TIMESTAMP, EVENT_TYPE, MEMBER ))) AS evmon
 
====未フォーマット・イベント表からデータを抽出するルーチン====
 
====未フォーマット・イベント表からデータを抽出するルーチン====
 
*http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.1.0/com.ibm.db2.luw.admin.mon.doc/doc/c0059091.html?lang=ja
 
*http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.1.0/com.ibm.db2.luw.admin.mon.doc/doc/c0059091.html?lang=ja
=====EVMON_FORMAT_UE_TO_TABLES=====
+
=====[[EVM]]ON_FORMAT_UE_TO_TABLES=====
 
*http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.mon.doc/doc/r0055559.html?lang=ja
 
*http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.mon.doc/doc/r0055559.html?lang=ja
=====EVMON_FORMAT_UE_TO_XML=====
+
=====EVMON_FORMAT_UE_TO_[[XML]]=====
 
====ロック・データ収集をオフ====
 
====ロック・データ収集をオフ====
 
=====ロック待機イベントの場合=====
 
=====ロック待機イベントの場合=====
  ALTER WORKLOAD finance COLLECT LOCK WAIT DATA NONE
+
  ALTE[[R]] WO[[R]]KLOAD finance COLLECT LOCK WAIT DATA NONE
  ALTER WORKLOAD payroll COLLECT LOCK WAIT DATA NONE
+
  ALTE[[R]] WO[[R]]KLOAD payroll COLLECT LOCK WAIT DATA NONE
 
  db2 update db cfg for sample using mon_lockwait none
 
  db2 update db cfg for sample using mon_lockwait none
 
  db2 update db cfg for sample using mon_lw_thresh 5000000
 
  db2 update db cfg for sample using mon_lw_thresh 5000000
 
=====ロック・タイムアウト・イベントの場合=====
 
=====ロック・タイムアウト・イベントの場合=====
  ALTER WORKLOAD finance COLLECT LOCK TIMEOUT DATA NONE
+
  ALTE[[R]] WO[[R]]KLOAD finance COLLECT LOCK TIMEOUT DATA NONE
  ALTER WORKLOAD payroll COLLECT LOCK TIMEOUT DATA NONE
+
  ALTE[[R]] WO[[R]]KLOAD payroll COLLECT LOCK TIMEOUT DATA NONE
 
  db2 update db cfg for sample using mon_locktimeout none
 
  db2 update db cfg for sample using mon_locktimeout none
 
=====デッドロック・イベントの場合=====
 
=====デッドロック・イベントの場合=====
  ALTER WORKLOAD finance COLLECT DEADLOCK DATA NONE
+
  ALTE[[R]] WO[[R]]KLOAD finance COLLECT DEADLOCK DATA NONE
  ALTER WORKLOAD payroll COLLECT DEADLOCK DATA NONE
+
  ALTE[[R]] WO[[R]]KLOAD payroll COLLECT DEADLOCK DATA NONE
 
  db2 update db cfg for sample using mon_deadlock without_hist
 
  db2 update db cfg for sample using mon_deadlock without_hist
  
 
{{amazon|4774145971}}
 
{{amazon|4774145971}}

2020年2月16日 (日) 04:23時点における最新版

目次

DB2 ロック・イベントのモニター

DB2 v10.1 | Database |

次のような状況下では、ロック・イベント・データを収集する

  • MON_GET_WORKLOAD 表関数を使用したところ、ロック待機の値がいつもより長い。
  • アプリケーションが「ロック・タイムアウトのために、トランザクションがロールバックされました」という内容の -911 SQL 戻りコードを理由コード 68 と共に管理通知ログに戻す
  • 管理通知ログにデッドロック・イベント・メッセージ

MON_GET_WORKLOAD 表関数 - ワークロード・メトリックの取得

SELECT varchar(workload_name,30) as workload_name, 
       sum(lock_wait_time) as total_lock_wait_time, 
       sum(lock_waits) as total_lock_waits, 
       sum(lock_timeouts) as total_lock_timeouts, 
       sum(lock_escals) as total_lock_escals 
FROM TABLE(MON_GET_WORKLOAD(,-2)) AS t 
GROUP BY workload_name 
ORDER BY total_lock_wait_time DESC
列抜粋
内容
DEADLOCKS deadlocks - デッドロック検出数
LOCK_ESCALS lock_escals - ロック・エスカレーション数
LOCK_TIMEOUTS lock_timeouts - ロック・タイムアウト数
LOCK_WAIT_TIME lock_wait_time - ロック待機中の時間
LOCK_WAITS lock_waits - ロック待機数
SELECT
  WORKLOAD_NAME,
  DEADLOCKS,
  LOCK_WAIT_TIME,
  LOCK_WAITS,
  LOCK_ESCALS,
  LOCK_TIMEOUTS
FROM TABLE(MON_GET_WORKLOAD(null,-2));

ロック・イベント・モニター

  • ロック・データを収集してロック競合状態の診断および修正作業を単純化するように設計
  • ロック・イベントの発生時に、それらのロック・イベントに関する説明情報をキャプチャー
  • ロック・イベントの原因となっているロック競合に関係した主要なアプリケーションを識別
    • ロック・リクエスター(エラーを受け取った、ロックを待機したアプリケーション)
    • ロック所有者
  • バイナリー・フォーマット、通常の表にイベント情報を書き込む

<blockquote>デッドロック・イベント・モニターは非推奨、機能は、ロック・イベント・モニターに統合</blockquote>

機能の有効化手順

CREATE EVENT MONITOR FOR LOCKING ステートメントを使用して LOCK EVENT モニターを作成

  • モニターの名前を入力
  • 出力形式として UE 表を使用する場合は、ロック・イベント・データが書き込まれる未フォーマット・イベント表の名前も入力
  • 出力に通常の表を使用するように選択した場合は、 デフォルトの表名が割り当てられます
バイナリー・データの扱い
  • db2evmonfmt Java アプリケーションを使用して XML またはテキスト文書に変換できる
  • EVMON_FORMAT_UE_TO_XML 表関数を使用して XML レポート文書にフォーマット
  • EVMON_FORMAT_UE_TO_TABLES プロシージャーを使用してリレーショナル表にフォーマット

ロック・イベント・データをキャプチャーするレベルを指定

ワークロード
  • 既存のワークロードを変更する
  • CREATE または ALTER WORKLOAD ステートメントを使用して新規ワークロードを作成する
  • ワークロード・レベルで、キャプチャーするロック・イベント・データのタイプ、およびロックに関係したアプリケーションの SQL ステートメント履歴および入力値を必要とするかどうかを指定

<blockquote>SQL ステートメント履歴および入力値のキャプチャーにより、プロセッサー時間、メモリー、およびストレージの使用量が増大しますが、 ロック問題を適切にデバッグするには、多くの場合このレベルの詳細情報が必要</blockquote>

データベース・レベルで収集し、すべての DB2 ワークロードに影響を与える
内容
mon_lockwait ロック待機イベントの生成を制御
mon_locktimeout ロック・タイムアウト・イベントの生成を制御
mon_deadlock ッドロック・イベントの生成を制御
mon_lw_thresh mon_lockwait のイベントが生成されるまでのロック待機時間を制御

ロック・イベント・データの収集とレポートの生成

手順

lockevmon というロック・イベント・モニターを作成

CREATE EVENT MONITOR lockevmon FOR LOCKING
  WRITE TO UNFORMATTED EVENT TABLE
  • イベント・モニターは前もって作成できます。また、ディスク・スペースが使い尽くされることを心配する必要はありません。
  • データベース・レベルまたはワークロード・レベルのデータ収集を活動化するまでは何も書き込まれません。
  • データ取得のための表へのアクセス時に進行中の作業によるハイパフォーマンス作業に対する妨害が最小になるように、表スペースとバッファー・プールをセットアップするようにします

ロック・イベント・モニター lockevmon を活動化

SET EVENT MONITOR lockevmon STATE 1

ロック・イベント・データ収集を使用可能

ワークロード・レベル
  • COLLECT 節の 1 つを使用して ALTER WORKLOAD ステートメントを発行
  • COLLECT 節で WITH HISTORY オプションを指定
すべてのワークロード
  • データベース構成パラメーターを設定すると、データベース・レベルのロック・イベント・データ収集に影響を与え、すべてのワークロードが影響
ロック待機イベントの場合(COLLECT LOCK WAIT DATA)
    • FINANCE アプリケーションについては 5 秒経過後に獲得されたロックのロック待機データを収集
    • PAYROLL アプリケーションについては 10 秒経過後に獲得されたロックのロック待機データを収集
ALTER WORKLOAD finance COLLECT LOCK WAIT DATA WITH HISTORY AND VALUES
   FOR LOCKS WAITING MORE THAN 5 SECONDS
ALTER WORKLOAD payroll COLLECT LOCK WAIT DATA 
   FOR LOCKS WAITING MORE THAN 10 SECONDS WITH HISTORY
    • SAMPLE データベースの mon_lockwait データベース構成パラメーターを HIST_AND_VALUES 入力データ値を指定して設定
    • mon_lw_thresh データベース構成パラメーターを 10 秒に設定
db2 update db cfg for sample using mon_lockwait hist_and_values
db2 update db cfg for sample using mon_lw_thresh 10000000
ロック・タイムアウト・イベントの場合(COLLECT LOCK TIMEOUT DATA)
    • FINANCE および PAYROLL アプリケーションのロック・タイムアウト・データを収集する
ALTER WORKLOAD finance COLLECT LOCK TIMEOUT DATA WITH HISTORY
ALTER WORKLOAD payroll COLLECT LOCK TIMEOUT DATA WITH HISTORY
    • SAMPLE データベースの mon_locktimeout データベース構成パラメーターを HIST_AND_VALUES 入力データ値を指定して設定
db2 update db cfg for sample using mon_locktimeout hist_and_values
デッドロック・イベントの場合(COLLECT DEADLOCK DATA)
    • FINANCE および PAYROLL アプリケーションのデータを収集
ALTER WORKLOAD finance COLLECT DEADLOCK DATA WITH HISTORY
ALTER WORKLOAD payroll COLLECT DEADLOCK DATA WITH HISTORY
    • SAMPLE データベースの mon_deadlock データベース構成パラメーターを HIST_AND_VALUES 入力データ値を指定して設定
db2 update db cfg for sample using mon_deadlock hist_and_values

ロッキング・イベント・レポートを取得

  • ワークロードの再実行とデータベースへの接続
XML パーサー・ツール db2evmonfmt を使用
  • C:\IBM\SQLLIB\samples\java\jdbc\db2evmonfmt.java から適当なディレクトリでコンパイル
java db2evmonfmt -d db_name -ue table_name -ftext -u user_id -p password
SELECT evmon.xmlreport FROM TABLE ( EVMON_FORMAT_UE_TO_XML( 'LOG_TO_FILE',FOR EACH ROW OF ( SELECT * FROM lockevmon  ORDER BY EVENT_ID, EVENT_TIMESTAMP, EVENT_TYPE, MEMBER ))) AS evmon

未フォーマット・イベント表からデータを抽出するルーチン

EVMON_FORMAT_UE_TO_TABLES
EVMON_FORMAT_UE_TO_XML

ロック・データ収集をオフ

ロック待機イベントの場合
ALTER WORKLOAD finance COLLECT LOCK WAIT DATA NONE
ALTER WORKLOAD payroll COLLECT LOCK WAIT DATA NONE
db2 update db cfg for sample using mon_lockwait none
db2 update db cfg for sample using mon_lw_thresh 5000000
ロック・タイムアウト・イベントの場合
ALTER WORKLOAD finance COLLECT LOCK TIMEOUT DATA NONE
ALTER WORKLOAD payroll COLLECT LOCK TIMEOUT DATA NONE
db2 update db cfg for sample using mon_locktimeout none
デッドロック・イベントの場合
ALTER WORKLOAD finance COLLECT DEADLOCK DATA NONE
ALTER WORKLOAD payroll COLLECT DEADLOCK DATA NONE
db2 update db cfg for sample using mon_deadlock without_hist