"ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源"的解决方法

对表做DDL操作,报ORA-00054的错误

中文:ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源

英文:ORA-00054: resource busy and acquire with NOWAIT specified


Cause & Solution

Oracle的文档对于ORA-00054解释比较含糊,只是简单的说资源忙,建议重新尝试。

ORA-00054: resource busy and acquire with NOWAIT specified

Cause: Resource interested is busy.

Action: Retry if necessary.

ORA-00054一般是由于其他Session已经对目标表做了操作,并且已经有排他锁在表上了,所以新的Session无法做DDL操作。


可能的解决方法:

*  就像Oracle文档建议的那样,稍后重试;

* Kill那个排他锁

如果是Kill Lock的话,可以参考下边的方法:

SELECT OBJECT_NAME AS 对象名称,S.SID,S.SERIAL#,P.SPID AS 系统截程号
FROM V$LOCKED_OBJECT L , DBA_OBJECTS O , V$SESSION S , V$PROCESS P
WHERE L.OBJECT_ID=O.OBJECT_ID AND L.SESSION_ID=S.SID AND S.PADDR=P.ADDR;

ALTER SYSTEM KILL SESSION 'SID,SERIAL#';--sid及serial#为第一步查出来的数据。






你可能感兴趣的:(Oracle,DB)