DB2表空間處於靜默狀態的話,由於靜默操作導致的鎖定的存在,對這樣的表空間進行某些操作時,可能會遇到 SQL3805N 或 SQL0290N 等報錯信息,提示表空間不可訪問。
例如以位於 DB2INST1.USERSPAC1 表空間的 DB2INST1.STAFF 表為例:
a) 靜默DB2表空間為意向更新狀態:
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
此時若使用:
db2 list tablespaces
命令檢查表空間狀態,可以發現DB2表空間 USERSPACE1 處於 INTENT TO UPDATE 的靜默狀態:
......
Tablespace ID = 2
Name = USERSPACE1
Type = System managed space
Contents = Any data
State = 0x0002
Detailed explanation:
QuIEsced: UPDATE
......
如果要除去這一靜默狀態,可使用靜默命令中的“RESET”選項,使表空間恢復到正常狀態(0x0000),從而實現對DB2表空間中表的正常訪問。
此時,若嘗試使用任何一個DB2 用戶,執行如下命令,進行除去該表空間的靜默狀態的嘗試:
db2 quIEsce tablespaces for table db2inst1.staff reset
DB20000I The QUIESCE TABLESPACES command completed successfully.
可以看到命令已成功完成,但當再次嘗試上述的 DELETE 操作時,卻仍然遇到同樣的SQL0290N 的報錯,即不允許存取表空間。查詢表空間狀態表明它仍處於原來的意向更新的靜默狀態。