做了表的空间迁移后,索引失效处理

当对一大表做了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)。

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