IBM Support

[Db2] ロック・イベント・モニターで取得した情報の見方 (ロック待機イベント)

Question & Answer


Question

バージョン 9.7 以降のロック・イベント・モニターで取得した、ロック待機イベント (LOCKWAIT) の情報の見方について教えてください。

Answer

※ ロック・イベント・モニターの設定方法は [Db2] ロック・イベント・モニターの設定方法 を参照してください。
 
  1. 未フォーマット・イベント表の情報取得
    ロック・イベント・モニターで取得した情報のフォーマットの方法は [Db2] ロック・イベント・モニターで取得した情報のフォーマット方法 を参照してください。
    db2evmonfmt 使用してテキスト・レポートを出力します。
    実行例:
    指定したイベント ID 1 のフォーマット済みテキスト出力を、データベース SAMPLE にある未フォーマット・イベント表 lockevmon から取得する場合には、以下のコマンドを発行します。
    $ java db2evmonfmt -d sample -ue lockevmon -ftext -id 1
  2. 取得した情報の見方
    出力されたレポートから以下のことが分かります。

    2012-05-28-17.09.46.368098 にロック待機が発生しています。
    -------------------------------------------------------
    Event ID               : 1
    Event Type             : [LOCKWAIT]
    Event Timestamp        : [2012-05-28-17.09.46.368098]
    Partition of detection : 0
    -------------------------------------------------------

    ロック待機は、V97FP5.ORG 表への行ロックの競合で発生しています。
    行には既に X ロックが取得されていましたが、X ロックとは互換性のない NS ロックが要求されたため、ロックを要求したアプリケーションはロック待ちとなりました。
    Participant No 1 requesting lock
    ----------------------------------
    Lock Name            : 0x0002000E000000000000000452
    Lock wait start time : 2012-05-28-17.09.36.334584
    Lock wait end time   : 2012-05-28-17.11.40.720501
    Lock Type            : [ROW]
    Lock Specifics       : ROWID=4,DATA_PARTITION_ID=0,PAGEID=0
    Lock Attributes      : 00000000
    Lock mode requested  : [Share (CS/RS)]
    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 2 のアプリケーション名は db2bp で、ローカル接続のアプリケーションです。db2bp は、コマンド行プロセッサー (CLP) におけるバックエンド・プロセスです。アプリケーションの状態は UOW Waiting のため、ロックを保持したままコミットが発行されず、待機している状況です。

    ロックを要求していた Participant No 1 のアプリケーション名は db2jcc_application で、Java アプリケーションです。アプリケーション ID から接続元アプリケーションの IP アドレスが 192.168.11.3 であることを確認できます。ロック・イベント・モニターの出力では、ロックの要求側はロック待ちになる前のアプリケーション・ステータスが報告されるため、Participant No 1 のアプリケーションの状態は、UOW Executing として報告されます。
    Attributes            [Requester]                     [Owner]
    --------------------- ------------------------------  ------------------------------
    Participant No        1                               2
    Application Handle    0236                            0221
    Application ID        [192.168.11.3.40741.1205280807] [*LOCAL.v97fp5.120528080638]
    Application Name      [db2jcc_application]            [db2bp]
    Authentication ID     V97FP5                          V97FP5
    Requesting AgentID    10910                           11651
    Coordinating AgentID  10910                           11651
    Agent Status          UOW Executing                   UOW Waiting
    Application Action    No action                       No action
    Lock timeout value    0                               0
    Lock wait value       10000                           0
    Workload ID           1                               1
    Workload Name         SYSDEFAULTUSERWORKLOAD          SYSDEFAULTUSERWORKLOAD
    Service subclass ID   13                              13
    Service subclass      SYSDEFAULTSUBCLASS              SYSDEFAULTSUBCLASS
    Current Request       Open Cursor                     Execute Immediate
    TEntry state          1                               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) では、"select * from ORG" のステートメントが実行されていました。
    ロックを保持しているアプリケーション (Participant No 2) は SQL などを実行せず待機中ですが、トランザクションの中では "update ORG set MANAGER=21 where DEPTNUMB=10" がコミットされておらず、ORG 表の行に X ロックが取得されています。
    Current Activities of Participant No 1
    ----------------------------------------
    Activity ID        : 1
    Uow ID             : 1
    Package Name       : SYSSH200
    Package Schema     : NULLID
    Package Version    :
    Package Token      : SYSLVL01
    Package Sectno     : 1
    Reopt value        : none
    Incremental Bind   : no
    Eff isolation      : CS
    Eff degree         : 0
    Eff locktimeout    : -1
    Stmt first use     : 2012-05-28-17.09.36.334502
    Stmt last use      : 2012-05-28-17.09.36.334502
    Stmt unicode       : no
    Stmt query ID      : 0
    Stmt nesting level : 0
    Stmt invocation ID : 0
    Stmt source ID     : 0
    Stmt pkgcache ID   : 4322951168
    Stmt type          : [Dynamic]
    Stmt operation     : [DML, Select (blockable)]
    Stmt text          : [select * from ORG]
    
    Past Activities of Participant No 1
    -------------------------------------
    Activities not available
    Current Activities of Participant No 2
    ----------------------------------------
    Activities not available
    
    Past Activities of Participant No 2
    -------------------------------------
    Past Activities wrapped: no
    
    Activity ID        : 1
    Uow ID             : 5
    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-05-28-17.09.14.010775
    Stmt last use      : 2012-05-28-17.09.14.010775
    Stmt unicode       : no
    Stmt query ID      : 0
    Stmt nesting level : 0
    Stmt invocation ID : 0
    Stmt source ID     : 0
    Stmt pkgcache ID   : 4305584128
    Stmt type          : [Dynamic]
    Stmt operation     : [DML, Insert/Update/Delete]
    Stmt text          : [update ORG set MANAGER=21 where DEPTNUMB=10]
    以上のことから、ローカル接続の CLP が、"update ORG set MANAGER=21 where DEPTNUMB=10" ステートメントでロックを取得した後にコミットをせずに待機しているため、後続のアプリケーションがロック待ちとなっていたことがわかります。
 
  • 管理通知ログおよび db2diag.log
    ロック・イベント通知メッセージ構成パラメーター (MON_LCK_MSG_LVL) の通知設定のレベル を変更することで、ロック・エスカレーション、デッドロック、およびロック・タイムアウトのイベントが発生した際、管理通知ログへのメッセージのロギングを制御できます。ロック待機イベントが発生した場合は記録されません。
運用上の考慮点

[{"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"}]

Document Information

Modified date:
02 November 2023

UID

swg21599265