程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 重置DB2表空間靜默狀態失敗的例子

重置DB2表空間靜默狀態失敗的例子

編輯:DB2教程

在重置DB2表空間靜默狀態時,有時會出現錯誤信息,下文就為您列舉了一個重置DB2表空間靜默狀態失敗的例子,供您參考研究。

一種經常遇到的失敗的重置操作:

由於靜默操作導致的鎖定的存在,對這樣的DB2表空間進行某些操作時,可能會遇到 SQL3805N 或 SQL0290N 等報錯信息,提示表空間不可訪問。例如以位於 DB2INST1.USERSPAC1 表空間的 DB2INST1.STAFF 表為例:

a) 靜默表空間為意向更新狀態:

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”選項,使DB2表空間恢復到正常狀態(0x0000),從而實現對表空間中表的正常訪問。

此時,若嘗試使用任何一個 DB2 用戶,執行如下命令,進行除去該多DB2表空間的靜默狀態的嘗試:

db2 quIEsce tablespaces for table db2inst1.staff reset
DB20000I The QUIESCE TABLESPACES command completed successfully.

可以看到命令已成功完成,但當再次嘗試上述的 DELETE 操作時,卻仍然遇到同樣的 SQL0290N 的報錯,即不允許存取表空間。查詢表空間狀態表明它仍處於原來的意向更新的靜默狀態。為什麼上述重置靜默狀態的命令已成功完成,卻沒有真正除去表空間的靜默狀態呢?

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved