首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 表暫掛狀態成因深度分析(一):八大核心原因

     編輯:DB2 教學

現象

查詢 SELECT * FROM db2admin.AlarmTarget 報錯:
SQL0668N 不允許對表 "<表名>" 執行操作,限制對表 "<表名>" 的存取。

八大根本原因

  1. 設定完整性暫掛無存取
    表完整性未強制執行,內容可能無效。基表操作也可能連帶觸發。
  2. 無資料移動狀態
    禁止導致資料移動的操作:REDISTRIBUTE、分區鍵/MDC 鍵/範圍叢集鍵更新、REORG TABLE。
  3. 載入暫掛
    先前 LOAD 失敗,必須 RESTART 或 TERMINATE 後才能存取。
  4. 讀存取狀態
    線上 LOAD INSERT ... READ ACCESS 期間,或 LOAD 完成後未執行 SET INTEGRITY 前。
  5. 正在載入
    LOAD 實用程式正在操作該表,完成前不可存取。
  6. ESE 環境無法刷新參考別名的 MQT
    企業伺服器版限制。
  7. REORG 暫掛
    執行含 REORG 建議操作的 ALTER TABLE 後產生。
  8. 變更暫掛
    在含 REORG 建議的 ALTER TABLE 所在工作單元中存取該表時觸發。

快速診斷查詢

SELECT TABSCHEMA, TABNAME, STATUS, CONST_CHECKED
FROM SYSCAT.TABLES
WHERE TABNAME = 'ALARMTARGET';
  • STATUS = 'C' (Check Pending)、'L' (Load Pending)、'R' (Reorg Pending)、'M' (Move Pending) 等
  • CONST_CHECKED = 'N' 表示約束未驗證

後續處理

針對具體狀態採取對應動作,詳見《DB2 表暫掛狀態解除指南(二)》。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved