转 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

 (如果是19C,如果是impdp 导致的锁,有可能需要在CDB 上执行)

 


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

(如果是11.2.0.4,)
alter system kill session 'sid,serial#';--sid及serial#为第一步查出来的数据。

 (如果是19C,如果是impdp 导致的锁,有可能需要在CDB 上执行))

 

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

 

 

 

 

 

 

http://blog.sina.com.cn/s/blog_681cd80d0100l4rd.html

posted @ 2017-07-05 14:57  feiyun8616  阅读(254)  评论(0编辑  收藏  举报