2016-07-26 53 views
1

我正在研究腳本以在應用程序不斷訪問的其中一個表上創建聯機索引。我想知道,如果有方法讓我在網上放棄索引,以防萬一需要退出。正在執行DML操作時刪除索引

我使用Oracle數據庫11g 11.2.0.4.0

爲什麼我問這個的原因是因爲如果我嘗試刪除索引,而不考慮的獨佔鎖,它會給ORA-00054 - 資源忙。 oracle文檔說我可以在線使用12c,有沒有辦法在11g中實現這一點呢? DROP INDEX [ schema. ] index [ ONLINE ] [ FORCE ] ;

有什麼建議嗎?

回答

3

你應該嘗試ddl_lock_timeout(我猜的表不會永遠鎖定):

DDL_LOCK_TIMEOUT指定 將DDL語句多久一個DML鎖排隊等待的時間限制

alter session set ddl_lock_timeout = 1000000; 
drop index idxName; 

也許你應該考慮將其更改爲無形第一:

ALTER INDEX idName INVISIBLE; 
+1

謝謝@vercelli。我的索引非常小,這種方法工作得很好。看看它如何在大型索引對象上工作會很有趣。 – Ankit

+0

@Ankit刪除索引應該非常快。一旦它通過drop index獲取鎖定,其餘的查詢將不得不等待 – vercelli

相關問題