2012-04-12 104 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