Oracle 11g DDL_LOCK_TIMEOUT引數說明

feelpurple發表於2016-12-27
在對錶進行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部落格 ” ,連結:http://blog.itpub.net/26506993/viewspace-2131481/,如需轉載,請註明出處,否則將追究法律責任。

相關文章