oracle DDL锁超时问题

oracle数据库在执行truncate table的时候报错: ORA-00054:resource busy and acquire with NOWAIT specified or timeout expired

 

 

该问题原因是oracle在执行DDL操作时,DML操作已经对该对象加锁,由于DDL获取锁超时导致的。

 

模拟场景:

1.在session1中首先向一个表插入一条记录,但是没有提交

SQL> insert into yc_hs_0001(occur_time_utc, occur_time, cur_01, sta_01)

  2  values(to_date('2015-01-01', 'yyyy-mm-dd'), to_date('2015-01-01', 'yyyy-mm-

dd'), 3.4, 1);

 

1 row created.

2. 另外打开一个会话session 2,执行truncate table,立刻出现该错误

 

 

 

在oracle11g 之后,可以根据命令看到ddl锁的等待时间是0,因此一旦检测到有DML锁,立刻抛出错误

SQL> show parameter ddl_lock_timeout;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值