Db2
Db2 REORGCHK 返回 SQL2310N(錯誤“-668”)消息
我的 Linux 筆記型電腦上有一個 Db2 數據庫。數據庫負載不重。我出於開發目的不時訪問它。
我刪除了一個列:
db2 "alter table SCHEMA.TABLE drop column COLUMN"
然後,我執行
REORGCHK
:db2 "reorgchk update statistics on table all"
並收到以下消息:
Doing RUNSTATS .... SQL2310N The utility could not generate statistics. Error "-668" was returned.
但是,如果我不要求
REORGCHK
更新統計資訊,則命令成功:db2 "reorgchk current statistics on table all"
進一步調查表明,
RUNSTATS
在更改後的桌子上:db2 "runstats on table SCHEMA.TABLE for indexes all"
失敗並出現與上述相同的錯誤(即 SQL2310N,-668)。
我試圖增加相同參數(、、、和)的值
LOGFILSIZ
,但這LOGPRIMARY
沒有幫助。LOGSECOND``STAT_HEAP_SZ
錯誤的原因可能是什麼?如何調試它?我該如何解決?
我不確定 REORGCHK UPDATE STATISTICS 是否是對錶進行破壞性操作(刪除列)的方法。我懷疑 drop 語句在某些目錄表上設置了 Z 鎖,這會阻止更新 STATISTICS。如果您只對是否需要因刪除而重新組織表感興趣,您可以:
SELECT NUM_REORG_REC_ALTERS, REORG_PENDING FROM SYSIBMADM.ADMINTABINFO WHERE (TABSCHEMA, TABNAME) = (..., ...)
由於某種原因,它確實很慢(不要要求不存在的表),但它比 reorgchk 快。
除非表真的很大,否則我通常會在遷移腳本中添加一個 REORG 命令以防萬一:
REORG TABLE ...;
請注意,REORG 將送出任何正在進行的事務,因此您應該在 REORG 之前結束目前的 uow,並將它們放在單獨的事務中。