我正在开发一个脚本,用于在其中一个表上联机创建索引,该表一直由应用程序访问。我想知道,如果我有办法在线删除索引,以防万一需要退出。
我正在使用Oracle Database 11g 11.2.0.4.0
我之所以这样问是因为如果我尝试删除索引而不进行独占锁定,则会给ORA-00054
- 资源忙。 oracle doc说我可以在线使用12c,有没有办法在11g中实现这个目的? DROP INDEX [ schema. ] index [ ONLINE ] [ FORCE ] ;
有什么建议吗?
答案 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;