首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 鎖等待實戰診斷:從 list applications 到 db2pd 定位根因

     編輯:DB2 教學

現場重現

  1. Session 1:db2 +c "INSERT INTO test_lock VALUES(1,'aaa')"(未提交)
  2. Session 2:db2 "SELECT * FROM test_lock" → 長時間無回應
  3. Session 3:診斷分析

第一招:list applications show detail

db2 list applications show detail

關鍵欄位:UOW 狀態。若出現 Lock-waiting(英文)或 鎖定等待(中文)且持續時間長,確認有鎖阻塞。

XUXIAOF db2bp.exe 68 *LOCAL.DB2.090817075736 00003 1 0 4464 鎖定等待 2009-08-18 10:53:24.329893 ...

第二招:db2pd -locks show detail 精準定位

db2pd -d sample -locks show detail

輸出關鍵欄位:

  • Sts = W (Waiting) → 正在等待的鎖
  • Lockname:03000500040080020000000052 解碼得 TbspaceID=3 TableID=5 PartitionID=0 Page=640 Slot=4
  • Mode = .NS:Next-key Share 鎖
  • Owner:持有鎖的 Agent EDU ID

分析口訣

  1. 先用 list applications 確認有無 Lock-waiting 狀態。
  2. 再用 db2pd -locks 找 Sts=W 的紀錄,解析 Lockname 定位到表/頁/槽。
  3. 對應 Owner 找到阻塞者,檢查其 SQL 與事務邏輯。

進階工具

  • db2pd -agents 對應 EDU ID 找完整 SQL 文本。
  • MON_GET_LOCKS 表函數(9.7+)可用 SQL 查詢鎖鏈。
  • 啟用 DB2_CAPTURE_LOCK_TIMEOUT=ON 記錄逾時詳情。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved