重置DB2表空間靜默狀態(tài)失敗的例子
在重置DB2表空間靜默狀態(tài)時(shí),有時(shí)會(huì)出現(xiàn)錯(cuò)誤信息,下文就為您列舉了一個(gè)重置DB2表空間靜默狀態(tài)失敗的例子,供您參考研究。
一種經(jīng)常遇到的失敗的重置操作:
由于靜默操作導(dǎo)致的鎖定的存在,對(duì)這樣的DB2表空間進(jìn)行某些操作時(shí),可能會(huì)遇到 SQL3805N 或 SQL0290N 等報(bào)錯(cuò)信息,提示表空間不可訪問(wèn)。例如以位于 DB2INST1.USERSPAC1 表空間的 DB2INST1.STAFF 表為例:
a) 靜默表空間為意向更新?tīng)顟B(tài):
db2 quiesce tablespaces for table db2inst1.staff intent to update
b) 嘗試刪除表的操作將失敗:
db2 delete from db2inst1.staff
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0290N Table space access is not allowed. SQLSTATE=55039
此時(shí)若使用:
db2 list tablespaces
命令檢查DB2表空間狀態(tài),可以發(fā)現(xiàn)表空間 USERSPACE1 處于 INTENT TO UPDATE 的靜默狀態(tài):
......
Tablespace ID = 2
Name = USERSPACE1
Type = System managed space
Contents = Any data
State = 0x0002
Detailed explanation:
Quiesced: UPDATE
......
如果要除去這一靜默狀態(tài),可使用靜默命令中的“RESET”選項(xiàng),使DB2表空間恢復(fù)到正常狀態(tài)(0x0000),從而實(shí)現(xiàn)對(duì)表空間中表的正常訪問(wèn)。
此時(shí),若嘗試使用任何一個(gè) DB2 用戶,執(zhí)行如下命令,進(jìn)行除去該多DB2表空間的靜默狀態(tài)的嘗試:
db2 quiesce tablespaces for table db2inst1.staff reset
DB20000I The QUIESCE TABLESPACES command completed successfully.
可以看到命令已成功完成,但當(dāng)再次嘗試上述的 DELETE 操作時(shí),卻仍然遇到同樣的 SQL0290N 的報(bào)錯(cuò),即不允許存取表空間。查詢表空間狀態(tài)表明它仍處于原來(lái)的意向更新的靜默狀態(tài)。為什么上述重置靜默狀態(tài)的命令已成功完成,卻沒(méi)有真正除去表空間的靜默狀態(tài)呢?
【編輯推薦】
DB2數(shù)據(jù)庫(kù)卸載的問(wèn)題診斷