DB2如何將數據庫表解鎖


在DB2的命令行中輸入: 
update monitor switches using lock on table on 
然后打開另一個DB2命令窗口執行我的那個被吊死的Update語句。 
然后在第一個DB2命令窗口執行: [@more@]get snapshot for locks on Database_Name(你的數據庫的名字)> locks.TXT 

然后,可以看到第一個DB2的窗口有一個信息輸出,把這些信息輸出到TXT中,大致如下: 

應用程序句柄 = 36 
應用程序標識 = AC100C47.IC05.00F6C6095828 
序號 = 0246 
應用程序名 = java.exe 
CONNECT 授權標識 = DB2ADMIN 
應用程序狀態 = UOW 正在等待 
狀態更改時間 = 未收集 
應用程序代碼頁 = 1208 
掛起的鎖定 = 0 
總計等待時間(毫秒) = 0 

應用程序句柄 = 43 
應用程序標識 = *LOCAL.DB2.060512054331 
序號 = 2273 
應用程序名 = java.exe 
CONNECT 授權標識 = DB2ADMIN 
應用程序狀態 = 聯合請求暫掛 
狀態更改時間 = 未收集 
應用程序代碼頁 = 1208 
掛起的鎖定 = 6 
總計等待時間(毫秒) = 0 

鎖定列表 
鎖定名稱 = 0x031F9052000000000000000055 
鎖定屬性 = 0x00000000 
發行版標志 = 0x40000000 
鎖定計數 = 255 
掛起計數 = 0 
鎖定對象名 = 0 
對象類型 = 內部 
方式 = S 

鎖定名稱 = 0x26800000000000000000000044 
鎖定屬性 = 0x00000000 
發行版標志 = 0x40000000 
鎖定計數 = 1 
掛起計數 = 0 
鎖定對象名 = 0 
對象類型 = 內部 
方式 = S 

鎖定名稱 = 0x020006000F1700000000000052 
鎖定屬性 = 0x00000000 
發行版標志 = 0x00000001 
鎖定計數 = 1 
掛起計數 = 0 
鎖定對象名 = 5903 
對象類型 = 行 
表空間名 = USERSPACE1 
表模式 = DB2ADMIN 
表名 = C_USER 
方式 = NS 

鎖定名稱 = 0x01000000010000000500BC0056 
鎖定屬性 = 0x00000000 
發行版標志 = 0x40000000 
鎖定計數 = 1 
掛起計數 = 0 
鎖定對象名 = 0 
對象類型 = 內部變化鎖定 
方式 = S 

鎖定名稱 = 0x535953534E333030FD965C0641 
鎖定屬性 = 0x00000000 
發行版標志 = 0x40000000 
鎖定計數 = 1 
掛起計數 = 0 
鎖定對象名 = 0 
對象類型 = 內部方案鎖定 
方式 = S 

鎖定名稱 = 0x02000600000000000000000054 
鎖定屬性 = 0x00000000 
發行版標志 = 0x00000001 
鎖定計數 = 1 
掛起計數 = 0 
鎖定對象名 = 6 
對象類型 = 表 
表空間名 = USERSPACE1 
表模式 = DB2ADMIN 
表名 = C_USER 
方式 = IS 

應用程序句柄 = 557 
應用程序標識 = *LOCAL.DB2.060512053913 
序號 = 1254 
應用程序名 = java.exe 
CONNECT 授權標識 = DB2ADMIN 
應用程序狀態 = 聯合請求暫掛 
狀態更改時間 = 未收集 
應用程序代碼頁 = 1208 
掛起的鎖定 = 6 
總計等待時間(毫秒) = 0 

鎖定列表 
鎖定名稱 = 0x031F9052000000000000000055 
鎖定屬性 = 0x00000000 
發行版標志 = 0x40000000 
鎖定計數 = 255 
掛起計數 = 0 
鎖定對象名 = 0 
對象類型 = 內部 
方式 = S 

鎖定名稱 = 0x26800000000000000000000044 
鎖定屬性 = 0x00000000 
發行版標志 = 0x40000000 
鎖定計數 = 1 
掛起計數 = 0 
鎖定對象名 = 0 
對象類型 = 內部 
方式 = S 

鎖定名稱 = 0x02000600071D00000000000052 
鎖定屬性 = 0x00000000 
發行版標志 = 0x00000001 
鎖定計數 = 1 
掛起計數 = 0 
鎖定對象名 = 7431 
對象類型 = 行 
表空間名 = USERSPACE1 
表模式 = DB2ADMIN 
表名 = C_USER 
方式 = NS 

鎖定名稱 = 0x01000000010000000500BC0056 
鎖定屬性 = 0x00000000 
發行版標志 = 0x40000000 
鎖定計數 = 1 
掛起計數 = 0 
鎖定對象名 = 0 
對象類型 = 內部變化鎖定 
方式 = S 

鎖定名稱 = 0x535953534E333030FD965C0641 
鎖定屬性 = 0x00000000 
發行版標志 = 0x40000000 
鎖定計數 = 1 
掛起計數 = 0 
鎖定對象名 = 0 
對象類型 = 內部方案鎖定 
方式 = S 

鎖定名稱 = 0x02000600000000000000000054 
鎖定屬性 = 0x00000000 
發行版標志 = 0x00000001 
鎖定計數 = 1 
掛起計數 = 0 
鎖定對象名 = 6 
對象類型 = 表 
表空間名 = USERSPACE1 
表模式 = DB2ADMIN 
表名 = C_USER 
方式 = IS 

其中應用程序句柄43和557的狀態都是死鎖了,猜測是這2個應用爭用DB2的表,造成死鎖,根據日志提示,在DB2的命令窗口輸入: 
force application (43) 
force application (557) 
提示這個操作是異步的,我執行list applicaions,結果進程中還有那2個進程,那2個進程可能是在執行比較大的操作,需要耐心等待,如何還不行,則使用下面的命令來強制所有的應用都停止,然后重啟DB2: 
force application all 
terminate 
db2stop force 
db2start 
如果DB2在Window上,則可以使用“控制中心”->實例->右鍵“應用程序”,可以看到當前的鎖定情況,並且可以強行關閉某個進程,也可以顯示“鎖定鏈”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM