對資料表執行任何操作(查詢、插入、更新、刪除)均失敗,報錯:
SQL0668N Operation not allowed for reason code "7" on table XXX.
SQLSTATE=57016
執行 db2 ? 57016 可得知:因為表不活動,所以不能對其進行訪問。原因碼 7 代表:表處於 REORG PENDING(重組待決)狀態。這通常發生在執行包含 REORG 建議操作的 ALTER TABLE 陳述式之後(如變更欄位資料類型、新增/刪除欄位、修改壓縮屬性等)。
執行離線重組指令:
db2 reorg table XXX
注意:處於 REORG PENDING 狀態的表不支援 INPLACE REORG(線上重組),必須使用傳統離線 REORG TABLE。
runstats on table <schema>.<table>; —— 收集表統計資訊,供優化器使用。reorgchk on table all —— 檢查所有表是否需要重組,配合自動 runstats 使用極為方便。runstats on table administrator.test;
reorg table administrator.test;
ALTER TABLE 變更結構前,評估是否會觸發 REORG PENDING。REORG TABLE 並更新統計資訊(RUNSTATS),避免業務存取中斷。