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;
NAME TYPE VALUE
----------