做了表的空間遷移後,索引失效處理

當對一大表做了ALTER TABLE xxx MOVE TABLESPACE xxx後

發現索引不生效,爲什麼會這樣的呢?該如何處理?

 

因爲表的rowid 變了,重建一下不就好了,如下:

 

SQL> alter table F_CREDIT move tablespace HWM;

Move一個表到另外一個表空間時,索引不會跟着一塊move,而且會失效。(LOB類型例外)

在創建失效的索引之前,使用到索引的查詢語句將會報錯。失效的索引需要使用rebuild來重現創建。

Alter index index_name rebuild;

Alter index pk_name rebuild;

如果我們需要move索引到另外一個表空間,則需要使用rebuild

Alter index index_name rebuild tablespace tbs_name;

Alter index pk_name rebuild tablespace tbs_name;

2.2 move分區表及索引

  和普通表一樣,索引也會失效,區別的僅僅是語法而已。

分區表move基本語法

如果是單級分區,則使用關鍵字partition,如果是多級分區,則使用subpartition替代partition。如果分區或分區索引比較大,可以使用並行move或rebuild,parallel(degree 2)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章