文章标题1.0版
如何解决ORA-00054资源正忙,要求指定NOWAIT?
背景:使用PLSQL时有时会出现报错:ORA-00054: 资源正忙,以下提供解决办法
1. 创建索引时失败报错
create index sa.idx_test_1_id on sa.test_1 (id);
NOWAIT :关键字表示sql语句采用非阻塞的方式,如果发现涉及到的数据被占有(被锁),则立即通知Oracle该资源被占用,返回错误信息
2. 找出占用资源的会话,并删除
2.1:找出所有被锁的对象,定位出哪个会话占用
select l.session_id,o.owner,o.object_name
from v$locked_object l,dba_objects o
where l.object_id=o.object_id
结果:
对比想要创建的索引,定位哪些会话需要被删除
2.2:找出所有锁定的会话
select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;
结果:
3. 从系统中灭掉与会话对应的进程
kill -9 spid; --spid为第一步中查出来的系统进程号
PAGE
北京希嘉创智教育科技有限公司1/2