在对表进行TRUNCATE操作时,如果表上有DML操作而未提交或回滚事务,则会操作失败
会话一
SQL> insert into emp values(10,100);
1 row created
会话二
SQL> TRUNCATE TABLE EMP REUSE STORAGE;
TRUNCATE TABLE EMP REUSE STORAGE
*
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
提交事务后,TRUNCATE操作执行成功
会话一
SQL> commit;
Commit complete.
会话二
SQL> TRUNCATE TABLE EMP REUSE STORAGE;
Table truncated.
在执行TRUNCATE操作时,可以在会话上使用DDL_LOCK_TIMEOUT参数
DDL_LOCK_TIMEOUT指定了DML锁队列中一个DDL语句的等待时间(单位是秒)。默认值0代表了NOWAIT状态。
会话一
SQL> insert into emp values(10,100);
1 row created.
会话二
SQL> alter session set ddl_lock_timeout=30;
Session altered.
SQL> TRUNCATE TABLE EMP REUSE STORAGE;
(会话等待)
会话一
SQL> commit;
Commit complete.
会话二
SQL> TRUNCATE TABLE EMP REUSE STORAGE;
Table truncated.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26506993/viewspace-2131481/
,如需转载,请注明出处,否则将追究法律责任。