在DML操作正在进行时删除索引

时间:2016-07-26 16:10:24

标签: oracle oracle11g

我正在开发一个脚本,用于在其中一个表上联机创建索引,该表一直由应用程序访问。我想知道,如果我有办法在线删除索引,以防万一需要退出。

我正在使用Oracle Database 11g 11.2.0.4.0

我之所以这样问是因为如果我尝试删除索引而不进行独占锁定,则会给ORA-00054 - 资源忙。 oracle doc说我可以在线使用12c,有没有办法在11g中实现这个目的? DROP INDEX [ schema. ] index [ ONLINE ] [ FORCE ] ;

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

您应该尝试ddl_lock_timeout(我猜这张桌子永远不会被锁定):

  

DDL_LOCK_TIMEOUT指定DDL语句的时间限制   将在DML锁定队列中等待

alter session set ddl_lock_timeout = 1000000;
drop index idxName;

也许您应该考虑先将其更改为INVISIBLE:

ALTER INDEX idName INVISIBLE;