分区索引的重新rebuild

数据仓库的场景中,在进行大数据量导入之前,通常的做法是先不建索引,因为这个过程中如果要维护索引,会大大降低导入的性能。那么如果在环境下索引已经建好而且不能删除的情况下,有什么好的办法可以绕过去?
在Oracle 11g中提供了不可用索引和不可视索引,今天主要介绍不可用索引,通过如下的SQL可以暂时使索引不可视:

alter index “index name” unusable;

这样在使用之前,只需要在会话级别设置
alter session set skip_unusable_indexes=true
即可。

在使用完成之后,可以通过如下命令
alter index “index name” rebuild tablespace “tbs name”;
在把索引的状态进行恢复。

但是对于分区索引,这个时候就会报错,因为对于分区索引来说,不能通过简单的一句话就把所有的分区都重建,还必须要指定具体的分区来逐一进行重建。索引的分区就是表对应的分区,从视图dba_tab_partitions可以查到表的分区,然后通过如下的命令:

alter index “index name” rebuild partition “partition name” tablespace “tbs name”;

即可。

EOF

PS:使用了代码插件,没想到”“居然被当成了代码,没显示出来。

This entry was posted in 数据库 and tagged . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *