日期:2014-05-16  浏览次数:20712 次

ORA-00054 的解决方法

系统有一个不用的索引,想删除这个索引,

SQL> drop index GPSTIME_GLOBAL_INDEX
? 2? /
drop index GPSTIME_GLOBAL_INDEX
?????????? *
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified

?

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

?

出现这种问题后查V$LOCKED_OBJECT,要么等事务结束后再做,要么杀掉持有锁的会话(如果不是关键会话):

1.通过上句查找出已被锁定的数据库表及相关的sid、serial#及spid
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
alter system kill session 'sid,serial#';--sid及serial#为第一步查出来的数据。