遇到應用程式疑似死鎖(Hang 住)時,依循以下步驟快速定位阻塞鏈:
UPDATE MONITOR SWITCHES USING LOCK ON TABLE ONGET SNAPSHOT FOR LOCKS ON <資料庫名> > locks.txt輸出包含多個「應用程式句柄」區塊,重點關注:
UOW 正在等待、聯合請求暫掛 顯示被阻塞。鎖定對象名、對象類型(表、行、內部)、模式(S/IS/NS/X/IX 等)。範例中句柄 43、557 均顯示「聯合請求暫掛」且持有 C_USER 表的行鎖(NS)與表鎖(IS),互相等待,形成經典死鎖。
FORCE APPLICATION (43)
FORCE APPLICATION (557)
操作為非同步,執行 LIST APPLICATIONS 確認進程是否消失。若長時間未退出,可能正執行大量回滾,需耐心等待。
FORCE APPLICATION ALL
TERMINATE
DB2STOP FORCE
DB2START
警告:將中斷所有連線、回滾所有未提交交易,僅在極端情況使用。
Windows 環境下可使用「控制中心」→ 實例右鍵「應用程式」,即時檢視鎖狀態、鎖鏈圖譜,並可直接右鍵強制關閉特定應用,操作直觀、風險可控。
LOCKTIMEOUT 設定非 -1,防止無限等待。掌握監控工具與處理流程,讓死鎖從「恐怖意外」變為「可控事件」。