DB2數(shù)據(jù)庫(kù)表的解鎖
#p##p#下面為您介紹DB2數(shù)據(jù)庫(kù)中,如何才能將數(shù)據(jù)庫(kù)表進(jìn)行解鎖,供您參考,希望對(duì)您有所幫助。
在DB2的命令行中輸入:
update monitor switches using lock on table on
然后打開(kāi)另一個(gè)DB2命令窗口執(zhí)行我的那個(gè)被吊死的Update語(yǔ)句。
然后在第一個(gè)DB2命令窗口執(zhí)行:
get snapshot for locks on Database_Name(你的數(shù)據(jù)庫(kù)的名字)> locks.TXT
然后,可以看到第一個(gè)DB2的窗口有一個(gè)信息輸出,把這些信息輸出到TXT中,大致如下:
應(yīng)用程序句柄 = 36
應(yīng)用程序標(biāo)識(shí) = AC100C47.IC05.00F6C6095828
序號(hào) = 0246
應(yīng)用程序名 = java.exe
CONNECT 授權(quán)標(biāo)識(shí) = DB2ADMIN
應(yīng)用程序狀態(tài) = UOW 正在等待
狀態(tài)更改時(shí)間 = 未收集
應(yīng)用程序代碼頁(yè) = 1208
掛起的鎖定 = 0
總計(jì)等待時(shí)間(毫秒) = 0
應(yīng)用程序句柄 = 43
應(yīng)用程序標(biāo)識(shí) = *LOCAL.DB2.060512054331
序號(hào) = 2273
應(yīng)用程序名 = java.exe
CONNECT 授權(quán)標(biāo)識(shí) = DB2ADMIN
應(yīng)用程序狀態(tài) = 聯(lián)合請(qǐng)求暫掛
狀態(tài)更改時(shí)間 = 未收集
應(yīng)用程序代碼頁(yè) = 1208
掛起的鎖定 = 6
總計(jì)等待時(shí)間(毫秒) = 0 #p#
鎖定列表
鎖定名稱 = 0x031F9052000000000000000055
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x40000000
鎖定計(jì)數(shù) = 255
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 0
對(duì)象類(lèi)型 = 內(nèi)部
方式 = S
鎖定名稱 = 0x26800000000000000000000044
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x40000000
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 0
對(duì)象類(lèi)型 = 內(nèi)部
方式 = S
鎖定名稱 = 0x020006000F1700000000000052
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x00000001
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 5903 #p#
對(duì)象類(lèi)型 = 行
表空間名 = USERSPACE1
表模式 = DB2ADMIN
表名 = C_USER
方式 = NS
鎖定名稱 = 0x01000000010000000500BC0056
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x40000000
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 0
對(duì)象類(lèi)型 = 內(nèi)部變化鎖定
方式 = S
鎖定名稱 = 0x535953534E333030FD965C0641
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x40000000
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 0
對(duì)象類(lèi)型 = 內(nèi)部方案鎖定
方式 = S #p#鎖定名稱 = 0x02000600000000000000000054
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x00000001
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 6
對(duì)象類(lèi)型 = 表
表空間名 = USERSPACE1
表模式 = DB2ADMIN
表名 = C_USER
方式 = IS
應(yīng)用程序句柄 = 557
應(yīng)用程序標(biāo)識(shí) = *LOCAL.DB2.060512053913
序號(hào) = 1254
應(yīng)用程序名 = java.exe
CONNECT 授權(quán)標(biāo)識(shí) = DB2ADMIN
應(yīng)用程序狀態(tài) = 聯(lián)合請(qǐng)求暫掛
狀態(tài)更改時(shí)間 = 未收集
應(yīng)用程序代碼頁(yè) = 1208
掛起的鎖定 = 6
總計(jì)等待時(shí)間(毫秒) = 0
鎖定列表
鎖定名稱 = 0x031F9052000000000000000055
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x40000000
鎖定計(jì)數(shù) = 255
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 0
對(duì)象類(lèi)型 = 內(nèi)部
方式 = S
鎖定名稱 = 0x26800000000000000000000044
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x40000000
鎖定計(jì)數(shù) = 1 #p#
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 0
對(duì)象類(lèi)型 = 內(nèi)部
方式 = S
鎖定名稱 = 0x02000600071D00000000000052
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x00000001
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 7431
對(duì)象類(lèi)型 = 行
表空間名 = USERSPACE1
表模式 = DB2ADMIN
表名 = C_USER
方式 = NS
鎖定名稱 = 0x01000000010000000500BC0056
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x40000000
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 0
對(duì)象類(lèi)型 = 內(nèi)部變化鎖定
方式 = S #p#
鎖定名稱 = 0x535953534E333030FD965C0641
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x40000000
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 0
對(duì)象類(lèi)型 = 內(nèi)部方案鎖定
方式 = S
鎖定名稱 = 0x02000600000000000000000054
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x00000001
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 6
對(duì)象類(lèi)型 = 表
表空間名 = USERSPACE1
表模式 = DB2ADMIN
表名 = C_USER
方式 = IS #p#
其中應(yīng)用程序句柄43和557的狀態(tài)都是死鎖了,猜測(cè)是這2個(gè)應(yīng)用爭(zhēng)用DB2的表,造成死鎖,根據(jù)日志提示,在DB2的命令窗口輸入:
force application (43)
force application (557)
提示這個(gè)操作是異步的,我執(zhí)行l(wèi)ist applicaions,結(jié)果進(jìn)程中還有那2個(gè)進(jìn)程,那2個(gè)進(jìn)程可能是在執(zhí)行比較大的操作,需要耐心等待,如何還不行,則使用下面的命令來(lái)強(qiáng)制所有的應(yīng)用都停止,然后重啟DB2:
force application all
terminate
db2stop force
db2start
如果DB2在Window上,則可以使用“控制中心”->實(shí)例->右鍵“應(yīng)用程序”,可以看到當(dāng)前的鎖定情況,并且可以強(qiáng)行關(guān)閉某個(gè)進(jìn)程,也可以顯示“鎖定鏈”。
在DB2的命令行中輸入:
update monitor switches using lock on table on #p#
然后打開(kāi)另一個(gè)DB2命令窗口執(zhí)行我的那個(gè)被吊死的Update語(yǔ)句。
然后在第一個(gè)DB2命令窗口執(zhí)行:
get snapshot for locks on Database_Name(你的數(shù)據(jù)庫(kù)的名字)> locks.TXT
然后,可以看到第一個(gè)DB2的窗口有一個(gè)信息輸出,把這些信息輸出到TXT中,大致如下:
應(yīng)用程序句柄 = 36
應(yīng)用程序標(biāo)識(shí) = AC100C47.IC05.00F6C6095828
序號(hào) = 0246
應(yīng)用程序名 = java.exe
CONNECT 授權(quán)標(biāo)識(shí) = DB2ADMIN
應(yīng)用程序狀態(tài) = UOW 正在等待
狀態(tài)更改時(shí)間 = 未收集
應(yīng)用程序代碼頁(yè) = 1208
掛起的鎖定 = 0
總計(jì)等待時(shí)間(毫秒) = 0
應(yīng)用程序句柄 = 43
應(yīng)用程序標(biāo)識(shí) = *LOCAL.DB2.060512054331
序號(hào) = 2273
應(yīng)用程序名 = java.exe
CONNECT 授權(quán)標(biāo)識(shí) = DB2ADMIN
應(yīng)用程序狀態(tài) = 聯(lián)合請(qǐng)求暫掛
狀態(tài)更改時(shí)間 = 未收集
應(yīng)用程序代碼頁(yè) = 1208
掛起的鎖定 = 6
總計(jì)等待時(shí)間(毫秒) = 0 #p#
鎖定列表
鎖定名稱 = 0x031F9052000000000000000055
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x40000000
鎖定計(jì)數(shù) = 255
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 0
對(duì)象類(lèi)型 = 內(nèi)部
方式 = S
鎖定名稱 = 0x26800000000000000000000044
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x40000000
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 0
對(duì)象類(lèi)型 = 內(nèi)部
方式 = S
鎖定名稱 = 0x020006000F1700000000000052
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x00000001
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 5903
對(duì)象類(lèi)型 = 行
表空間名 = USERSPACE1
表模式 = DB2ADMIN
表名 = C_USER
方式 = NS #p#
鎖定名稱 = 0x01000000010000000500BC0056
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x40000000
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 0
對(duì)象類(lèi)型 = 內(nèi)部變化鎖定
方式 = S
鎖定名稱 = 0x535953534E333030FD965C0641
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x40000000
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 0
對(duì)象類(lèi)型 = 內(nèi)部方案鎖定
方式 = S
鎖定名稱 = 0x02000600000000000000000054
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x00000001
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 6
對(duì)象類(lèi)型 = 表
表空間名 = USERSPACE1
表模式 = DB2ADMIN
表名 = C_USER #p#
方式 = IS
應(yīng)用程序句柄 = 557 #p#
應(yīng)用程序標(biāo)識(shí) = *LOCAL.DB2.060512053913
序號(hào) = 1254
應(yīng)用程序名 = java.exe
CONNECT 授權(quán)標(biāo)識(shí) = DB2ADMIN
應(yīng)用程序狀態(tài) = 聯(lián)合請(qǐng)求暫掛
狀態(tài)更改時(shí)間 = 未收集
應(yīng)用程序代碼頁(yè) = 1208
掛起的鎖定 = 6
總計(jì)等待時(shí)間(毫秒) = 0
鎖定列表
鎖定名稱 = 0x031F9052000000000000000055
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x40000000
鎖定計(jì)數(shù) = 255
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 0
對(duì)象類(lèi)型 = 內(nèi)部
方式 = S #p#
鎖定名稱 = 0x26800000000000000000000044
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x40000000
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 0
對(duì)象類(lèi)型 = 內(nèi)部
方式 = S
鎖定名稱 = 0x02000600071D00000000000052
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x00000001
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 7431
對(duì)象類(lèi)型 = 行
表空間名 = USERSPACE1
表模式 = DB2ADMIN
表名 = C_USER
方式 = NS
鎖定名稱 = 0x01000000010000000500BC0056
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x40000000
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 0
對(duì)象類(lèi)型 = 內(nèi)部變化鎖定
方式 = S
鎖定名稱 = 0x535953534E333030FD965C0641
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x40000000
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 0 #p#
對(duì)象類(lèi)型 = 內(nèi)部方案鎖定
方式 = S
鎖定名稱 = 0x02000600000000000000000054
鎖定屬性 = 0x00000000
發(fā)行版標(biāo)志 = 0x00000001
鎖定計(jì)數(shù) = 1
掛起計(jì)數(shù) = 0
鎖定對(duì)象名 = 6
對(duì)象類(lèi)型 = 表
表空間名 = USERSPACE1
表模式 = DB2ADMIN
表名 = C_USER
方式 = IS
其中應(yīng)用程序句柄43和557的狀態(tài)都是死鎖了,猜測(cè)是這2個(gè)應(yīng)用爭(zhēng)用DB2的表,造成死鎖,根據(jù)日志提示,在DB2的命令窗口輸入:
force application (43)
force application (557)
提示這個(gè)操作是異步的,我執(zhí)行l(wèi)ist applicaions,結(jié)果進(jìn)程中還有那2個(gè)進(jìn)程,那2個(gè)進(jìn)程可能是在執(zhí)行比較大的操作,需要耐心等待,如何還不行,則使用下面的命令來(lái)強(qiáng)制所有的應(yīng)用都停止,然后重啟DB2:
force application all
terminate
db2stop force
db2start
如果DB2在Window上,則可以使用“控制中心”->實(shí)例->右鍵“應(yīng)用程序”,可以看到當(dāng)前的鎖定情況,并且可以強(qiáng)行關(guān)閉某個(gè)進(jìn)程,也可以顯示“鎖定鏈”。