2012-04-12 93 views
2

我想知道,如果假设在计划停机时间内完成这些操作,那么删除Oracle索引并重新创建索引会造成任何数据问题。Oracle删除并创建索引

最近发现某些索引停放在不正确的表空间上,想要通过删除索引并在正确的表空间中重新创建它来纠正它。

请提醒。

回答

8

我没有看到一个问题,但不是滴/创建你也可以使用下面的语法:

alter index <INDEX_NAME> rebuild tablespace <TABLESPACE_NAME> 

为了解决你在下面的评论打听,alter index rebuild应该更快。原因是当你删除索引并重新创建索引树时,索引树将从表本身构建。但是使用alter index rebuild时,Oracle自己读取索引,从而导致更少量的I/O。

+0

谢谢。你会认为改变索引比drop + create快得多吗? – 2012-04-12 07:44:34

+0

@ChinBoon,它应该大致相同的时间长度。但是,在重新构建时,您将锁定受影响的表,以便它不能被更改,或者像drop/create一样违反任何完整性约束。 – Ben 2012-04-12 07:49:27

+0

再次感谢。再一次,我怎么知道重建结束了?我是否等待SQL语句回来? – 2012-04-12 13:37:58