可以更改Oracle的默认对象锁定超时吗?

cag*_*boy 6 oracle locking

> ALTER PACKAGE blah COMPILE;
(wait about 10 minutes)
> ORA-04021: timeout occurred while waiting to lock object
Run Code Online (Sandbox Code Playgroud)

我明白为什么我得到超时错误(包正在使用中).

有谁知道是否有办法改变默认的10分钟等待间隔?可以在数据库/会话/语句级别配置吗?

谢谢

Vin*_*rat 6

DDL_LOCK_TIMEOUT从11gR1开始有一个参数:

DDL_LOCK_TIMEOUT指定DDL语句在DML锁定队列中等待的时间长度.默认值为零表示状态为NOWAIT.最大值1,000,000秒将导致DDL语句永远等待获取DML锁.

我不确定您是否可以更改以前版本中的默认超时.

  • @ShoeLace我认为如果你等待DML,它只会改变行为,例如试图删除一个表,而某些人在这个表的行上有一个非公开的事务(默认行为是立即引发错误).当替换当前正在使用的包时,它可能不起作用(默认行为是等待包不再使用). (2认同)