ORA-00054I (oracle资源被锁定) 的解决方法

系统有一个不用的表,想删除这个表,或者删除表中的数据,

SQL> drop table testtable;
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified

资源正忙,要求制定NOWAIT

 

出现这个问题的原因是正在执行的操作请求的资源正被其他事务锁定。

 

出现这种问题后查V$LOCKED_OBJECT,要么等事务结束后再做;

要么杀掉持有锁的会话(如果不是关键会话):

1.通过上句查找出已被锁定的数据库表及相关的sid、serial#及spid

sqlplus / as sysdba

SQL> 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;

2.在数据库中灭掉相关session

SQL> alter system kill session 'sid,serial#';--sid及serial#为第一步查出来的数据。

你可能感兴趣的:(oracle,object,session,数据库,system,kill,oracle)