Index

DB2 更改列類型和索引狀態 RBDP 與“需要重建”

  • December 4, 2017

我是 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 將重建索引。

引用自:https://dba.stackexchange.com/questions/192355