Question & Answer
Question
バージョン 9.7 以降のロック・イベント・モニターで取得した、デッドロック・イベント (DEADLOCK) の情報の見方について教えてください。
Answer
※ ロック・イベント・モニターの設定方法は [Db2] ロック・イベント・モニターの設定方法 を参照してください。
EVMON_FORMAT_UE_TO_XML 表関数 - 不定形式イベントを XML に変換する
イベント・モニター・データ読み取り用の db2evmonfmt ツール
[Db2] パスポート・アドバンテージによく寄せられる質問
[Db2] ロック・イベント・モニターの設定方法
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート
- 未フォーマット・イベント表の情報取得
ロック・イベント・モニターで取得した情報のフォーマットの方法は [Db2] ロック・イベント・モニターで取得した情報のフォーマット方法 を参照してください。db2evmonfmt 使用してテキスト・レポートを出力します。実行例:
指定したイベント ID 1 のフォーマット済みテキスト出力を、データベース SAMPLE にある未フォーマット・イベント表 lockevmon から取得する場合には、以下のコマンドを発行します。$ java db2evmonfmt -d sample -ue lockevmon -ftext -id 1
- 取得した情報の見方
出力されたレポートから以下のことが分かります。
2012-04-18-17.28.01.402057 にデッドロックが発生しています。------------------------------------------------------- Event ID : 3 Event Type : [DEADLOCK] Event Timestamp : [2012-04-18-17.28.01.402057] Partition of detection : 0 -------------------------------------------------------
デッドロックに関わったアプリケーションは 2 つで、Participant No 2 のアプリケーションがロールバックされています。Deadlock Graph -------------- Total number of deadlock participants : [2] Participant that was rolled back : [2] Type of deadlock : local Participant Participant Deadlock Member Application Handle Requesting Lock Holding Lock --------------- --------------- --------------- ------------------ 1 2 0 01606 2 1 0 01605
Participant No 1 のアプリケーションは、ORG 表内の行へ X ロックを保持し、EMPLOYEE 表 で U ロックを要求しています。一方で Participant No 2 のアプリケーションは、EMPLOYEE 表内の行へ X ロックを保持し、ORG 表で U ロックを要求しています。Participant No 2 requesting lock ---------------------------------- Lock Name : 0x0002000E000000000000000552 Lock wait start time : 2012-04-18-17.27.44.338188 Lock wait end time : 2012-04-18-17.28.01.402057 Lock Type : [ROW] Lock Specifics : ROWID=5,DATA_PARTITION_ID=0,PAGEID=0 Lock Attributes : 00000000 Lock mode requested : [Update] Lock mode held : [Exclusive] Lock Count : 1 Lock Hold Count : 0 Lock rrIID : 0 Lock Status : Waiting Lock release flags : 40000000 Tablespace TID : 2 Tablespace Name : USERSPACE1 Table FID : 14 Table Schema : V97FP5 Table Name : [ORG] Participant No 1 requesting lock ---------------------------------- Lock Name : 0x00020006000000000000000452 Lock wait start time : 2012-04-18-17.27.52.845894 Lock wait end time : 2012-04-18-17.28.01.402057 Lock Type : [ROW] Lock Specifics : ROWID=4,DATA_PARTITION_ID=0,PAGEID=0 Lock Attributes : 00000000 Lock mode requested : [Update] Lock mode held : [Exclusive] Lock Count : 1 Lock Hold Count : 0 Lock rrIID : 0 Lock Status : Waiting Lock release flags : 40000000 Tablespace TID : 2 Tablespace Name : USERSPACE1 Table FID : 6 Table Schema : V97FP5 Table Name : [EMPLOYEE]
両者が互いにロックを保持したままロック待ちの状態になっているため、デッドロックが生じます。
ロールバックされた Participant No 2 のアプリケーション名は db2jcc_application で、Java アプリケーションです。アプリケーション ID から接続元アプリケーションの IP アドレスが 192.168.11.3 であることを確認できます。
他方のロールバックによりロックを獲得できた Participant No 1 のアプリケーション名は db2bp で、ローカル接続のアプリケーションです。db2bp は、コマンド行プロセッサー (CLP) におけるバックエンド・プロセスです。Attributes [Requester] [Requester] --------------------- ------------------------------ ------------------------------ Participant No 2 1 Application Handle 01606 01605 Application ID 192.168.11.3.55406.120418082655 *LOCAL.v97fp5.120418082556 Application Name [db2jcc_application] [db2bp] Authentication ID V97FP5 V97FP5 Requesting AgentID 26302 25275 Coordinating AgentID 26302 25275 Agent Status UOW Executing UOW Executing Application Action No action No action Lock timeout value 0 0 Lock wait value 10000 10000 Workload ID 1 1 Workload Name SYSDEFAULTUSERWORKLOAD SYSDEFAULTUSERWORKLOAD Service subclass ID 13 13 Service subclass SYSDEFAULTSUBCLASS SYSDEFAULTSUBCLASS Current Request Execute Immediate Execute Immediate TEntry state 2 2 TEntry flags1 00000000 00000000 TEntry flags2 00000200 00000200 Lock escalation no no Client userid Client wrkstnname lockevent.xxx.com Client applname Client acctng
デッドロック発生時、Participant No 1 のアプリケーションでは ORG 表を UPDATE してから EMP 表を UPDATE していますが、Participant No 2 のアプリケーションでは EMP 表を UPDATE してから ORG 表の UPDATE を実行しています。Current Activities of Participant No 2 ---------------------------------------- Activity ID : 2 Uow ID : 1 Package Name : SYSSH200 Package Schema : NULLID Package Version : Package Token : SYSLVL01 Package Sectno : 65 Reopt value : none Incremental Bind : no Eff isolation : CS Eff degree : 0 Eff locktimeout : -1 Stmt first use : 2012-04-18-17.27.44.337846 Stmt last use : 2012-04-18-17.27.44.337846 Stmt unicode : no Stmt query ID : 0 Stmt nesting level : 0 Stmt invocation ID : 0 Stmt source ID : 0 Stmt pkgcache ID : 4298506240 Stmt type : [Dynamic] Stmt operation : [DML, Insert/Update/Delete] Stmt text : [update ORG set MANAGER=20 where DEPTNUMB=15] Past Activities of Participant No 2 ------------------------------------- Past Activities wrapped: no Activity ID : 1 Uow ID : 1 Package Name : SYSSH200 Package Schema : NULLID Package Version : Package Token : SYSLVL01 Package Sectno : 65 Reopt value : none Incremental Bind : no Eff isolation : CS Eff degree : 0 Eff locktimeout : -1 Stmt first use : 2012-04-18-17.27.05.618665 Stmt last use : 2012-04-18-17.27.05.618665 Stmt unicode : no Stmt query ID : 0 Stmt nesting level : 0 Stmt invocation ID : 0 Stmt source ID : 0 Stmt pkgcache ID : 8616804352 Stmt type : [Dynamic] Stmt operation : [DML, Insert/Update/Delete] Stmt text : [update EMP set BONUS=800 where EMPNO=000010]
Current Activities of Participant No 1 ---------------------------------------- Activity ID : 2 Uow ID : 1 Package Name : SQLC2H22 Package Schema : NULLID Package Version : Package Token : AAAAAFDb Package Sectno : 203 Reopt value : none Incremental Bind : no Eff isolation : CS Eff degree : 0 Eff locktimeout : -1 Stmt first use : 2012-04-18-17.27.52.845557 Stmt last use : 2012-04-18-17.27.52.845557 Stmt unicode : no Stmt query ID : 0 Stmt nesting level : 0 Stmt invocation ID : 0 Stmt source ID : 0 Stmt pkgcache ID : 4321574912 Stmt type : [Dynamic] Stmt operation : [DML, Insert/Update/Delete] Stmt text : [update EMP set BONUS=700 where EMPNO=000010] Past Activities of Participant No 1 ------------------------------------- Past Activities wrapped: no Activity ID : 1 Uow ID : 1 Package Name : SQLC2H22 Package Schema : NULLID Package Version : Package Token : AAAAAFDb Package Sectno : 203 Reopt value : none Incremental Bind : no Eff isolation : CS Eff degree : 0 Eff locktimeout : -1 Stmt first use : 2012-04-18-17.27.20.604868 Stmt last use : 2012-04-18-17.27.20.604868 Stmt unicode : no Stmt query ID : 0 Stmt nesting level : 0 Stmt invocation ID : 0 Stmt source ID : 0 Stmt pkgcache ID : 4335140864 Stmt type : [Dynamic] Stmt operation : [DML, Insert/Update/Delete] Stmt text : [update ORG set MANAGER=10 where DEPTNUMB=15]
以上のことから、互いのアプリケーションがそれぞれ異なる順番で 2 つの表に更新を行ったため、以下のようなデッドロックが発生していたことがわかります。表名Participant No 1Participant No 2ORGX Lock 取得U Lock 待ちEMPLOYEEU Lock 待ちX Lock 取得
- 管理通知ログおよび db2diag.log
管理通知ログおよび db2diag.log に簡易的なロック・タイムアウトのイベントを記録できます。詳細は以下のページを参照してください。
[Db2] ロック・タイムアウトまたはデッドロックを db2diag.log に記録する方法
EVMON_FORMAT_UE_TO_XML 表関数 - 不定形式イベントを XML に変換する
イベント・モニター・データ読み取り用の db2evmonfmt ツール
[Db2] パスポート・アドバンテージによく寄せられる質問
[Db2] ロック・イベント・モニターの設定方法
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと 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"},{"code":"a8m500000008PmMAAU","label":"Performance-\u003ELocks"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]
Was this topic helpful?
Document Information
Modified date:
02 November 2023
UID
swg21599269