當對一大表做了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)。