Index
DB2 更改列類型和索引狀態 RBDP 與“需要重建”
我是 DB2 和數據庫的新手。
我正在建構一個腳本來更改幾個表中的幾種列數據類型,其中一些是索引的一部分,而另一些則不是。所以在 ALTER 語句之後,我認為我必須重建索引。根據此來源:“當 ACCTID 列的數據類型從 DECIMAL(4,0) 更改為 INTEGER 時,IX1 索引被置於 REBUILD-pending (RBDP) 狀態。”
我的問題: 1. 如果索引處於 RBDP 狀態,是否意味著它必須重建,我應該如何將索引恢復到可訪問狀態?2.如何找到現在處於RBDP狀態的索引?我在更改列類型後嘗試了這個:
SELECT tabname, indname, index_requires_rebuild FROM TABLE(sysproc.admin_get_index_info('I','','')) AS t WHERE index_requires_rebuild = 'Y';
但我仍然找不到任何需要重建的索引,所以我猜 RBDP 狀態和“需要重建”是不同的動物。那麼有什麼區別,我如何確定索引在我的 ALTER 語句之後仍然正常工作?
我使用的語句是這種形式:
ALTER TABLE TABLE1 ALTER COLUMN COLUMN1 SET DATA TYPE BIGINT GO CALL SYSPROC.ADMIN_CMD('REORG TABLE TABLE1')
這裡的問題是您正在閱讀 z/OS 上的 Db2 文件,但您正在為 Linux、UNIX 和 Windows 執行 Db2 測試。
當您在 Db2 for Linux、UNIX 和 Windows 上執行此特定變更時,它會成功,但該表將立即進入重組暫掛狀態,您可以在其中看到
SYSIBMADM.ADMINTABINFO
(參見REORG_PENDING
專欄)。INDEXES_REQUIRE_REBUILD
仍將顯示為“N”,即使對錶執行 REORG 將重建索引。