我在尝试DROP一个表时遇到此错误。
我已经用Google搜索并搜索了所有可能的解决方案,但到目前为止,这些解决方案都没有对我有效。
这是我得到的错误:
Error starting at line : 1 in command -
DROP TABLE INTEREST
Error report -
SQL Error: ORA-00054: resource busy and acquire with NOWAIT specified
00054. 00000 - "resource busy and acquire with NOWAIT specified"
*Cause: Resource interested is busy.
*Action: Retry if necessary.
请记住,我对SQLDeveloper或SQL本身并不了解,所以请尽量详细说明。
谢谢!
答案 0 :(得分:1)
ORA-00054:资源繁忙并使用NOWAIT指定获取
错误很明显,有一个操作表的会话,即执行了 DML 语句,但是没有 COMMIT 或 ROLLBACK < / strong>发布。而且,您正在尝试 DROP 来自另一个会话的表格。
请注意,当您打开多个标签时,即打开多个SQL工作表时,会有不同的会话。
重现并解决问题的小型演示:
会话#1
SQL> create table t(a number);
Table created.
SQL> insert into t select 1 from dual;
1 row created.
SQL>
所以,我在SESSION#1中做了一个INSERT并且还没有提交它。
会话#2
SQL> drop table t purge;
drop table t purge
*
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
SQL>
所以,当我试图在会话2中删除表时,我收到了错误。
要修复它,请执行COMMIT或ROLLBACK会话#1。
会话#1
SQL> commit;
Commit complete.
SQL>
会话#2
SQL> drop table t purge;
Table dropped.
SQL>