在重置DB2表空間靜默狀態時,經常會遇到一些問題,下面就教您重置DB2表空間靜默狀態的正確方法,希望可以解決您遇到的問題。
正確的重置DB2表空間靜默狀態的方法:
導致上述問題的原因是由於進行重置操作的用戶不正確。靜默命令的 RESET 選項只有由原來發出靜默命令的用戶執行才能真正生效,即使使用其他執行 RESET 成功,也無法除去原用戶對表空間設置的靜默狀態。因此正確除去表空間靜默狀態的步驟為:
a) 查找靜默DB2表空間的用戶:
借助 db2dart 工具產生的報告,我們可以查詢到原始發出 QUIESCE 命令的用戶。具體執行步驟如下:
b) 停止 DB2 實例:
db2stop force
c) 產生 DB2DART 的報告:
db2dart <數據庫別名> /DTSF
d) 從報告中查找發靜默命令的用戶:
根據命令執行結果的提示,找到 DB2DART 產生的報告文件,打開該文件,對於靜默的表空間,可以在文件中找到類似如下信息:
- Information for Tablespace ID: 2
- -------------------------------------
- Tablespace name: USERSPACE1
- Table space flags (HEX): 0101
- Table space type: System Managed Space (SMS)
- Page size: 4096
- Extent size: 32
- Prefetch size: 32
- Version: 9
- Tablespace state: 2
- Number of quIEscers: 1
- 1) Userid of quIEscer: DB2INST1
- QuIEsce state: 2
- Tbspace ID of quIEsced object: 2
- Table ID of quIEsced object: 3
- EDU ID: 0
- Agent ID: 0
- ......
從而可以確定最早發出靜默命令的用戶為:DB2INST1。
e) 以正確的用戶登陸進行重置操作:
使用查找到的 DB2INST1 用戶登陸後,執行重置命令:
db2 quIEsce tablespaces for table db2inst1.staff reset
命令成功後連接數據庫
f) 驗證DB2表空間狀態:
- db2 list tablespaces
- ......
- Tablespace ID = 2
- Name = USERSPACE1
- Type = System managed space
- Contents = Any data
- State = 0x0000
- Detailed explanation:
- Normal
- ......
上述輸出表明重置的靜默命令執行成功,表空間狀態已正常,其中的表均可被正常訪問至此完成了除去表空間靜默狀態,使表空間狀態恢復正常的操作。