Session 1 更新 TACY_TEST 表 a=4 行持有 X 鎖未提交;Session 2 同行更新被掛起,狀態 Lock-wait。
db2pd -db EOS -applications
輸出中 Status=Lock-wait 的應用句柄(AppHandl=8)即為受害者。
db2pd -db EOS -locks showlock wait
關鍵輸出字段:
Type=Row、Mode=..X(排他鎖)TbspaceID=2、TableID=1560、RecordID=0x2668007db2 "SELECT TBSPACE, TABSCHEMA, TABNAME FROM SYSCAT.TABLES WHERE TBSPACEID=2 AND TABLEID=1560"
結果:USERSPACE1.DB2INST1.TACY_TEST。
# RecordID 0x0266807 -> 頁號 0x02668 (十進制 157312)、槽號 0x07
db2dart EOS /dd /tsi 2 /oi 1560 /ps 157312p /np 1 /v y
報告 EOS.RPT 中 Slot 7 顯示 Column 1 Value = 4、Column 2 = 'a',確認被鎖行為 (4, 'a')。
| 工具 | 核心參數 | 說明 |
|---|---|---|
| db2pd -applications | -db <db> | 列出所有應用狀態、句柄、協調進程 |
| db2pd -locks | showlock wait | 僅顯示等待鎖的應用與鎖資源詳情 |
| db2dart | /dd /tsi <ts_id> /oi <obj_id> /ps <page_num>p /np <pages> /v y | 傾印數據頁,頁號需十進制並加 'p' 後綴 |
RecordID 為 16 進制,前 3 字節頁號、後 1 字節槽號,轉換時勿遺漏前導零。db2dart 需實例擁有者權限執行,且數據庫處於非一致狀態會報警告(不影響頁面讀取)。Table,無需 dart,直接由 TableID 查表即可。「應用 → 鎖 → 表 → 行」四步閉環,配合 db2pd 輕量級監控與 db2dart 深度頁面分析,可在分鐘級定位鎖等待根因,指導應用調優(縮短事務、調整隔離級別、索引覆蓋)或殺會話恢復業務。