在删除列、或表的时候报错“ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效”,一般都是发生锁表造成的,或者上一条语句没有执行完成,阻塞造成了锁表;解决方法:找出锁表sid
select SESS.sid, SESS.SERIAL#, LO.ORACLE_USERNAME, LO.OS_USER_NAME, AO.OBJECT_NAME, LO.LOCKED_MODEfrom V$LOCKED_OBJECT LO, DBA_OBJECTs AO, V$SESSION SESSwhere AO.OBJECT_ID = LO.OBJECT_ID and lo.session_id = sess.sid;或select session_id from v$locked_object;SESSION_ID----------127623根据查询出来的session_id查询
SELECT sid, serial#, username, osuser FROM v$session where sid = 127623;SID SERIAL# USERNAME OSUSER---------- ---------- ------------------------------ ------------------------------127623 3412 SCOTT LILWENkill掉
ALTER SYSTEM KILL SESSION '127623,3412';System altered也可以用系统级杀进程的kill释放锁:
select spid from v$process where addr = (select paddrfrom v$session where sid=&sid);kill -9 127623 ;再次执行删除操作即可;注意点:如果出现了锁的问题, 某个DML操作可能等待很久没有反应。 当你采用的是直接连接数据库的方式,也不要用OS系统命令 $kill process_num 或者 $kill -9 process_num来终止用户连接,因为一个用户进程可能产生一个以上的锁,杀OS进程并不能彻底清除锁的问题。
Tag标签:「锁表 oracle ORA-00054 NOWAIT」更新时间:「2021-11-03 14:39:54」阅读次数:「954」
相关博文:ORA-27102: out of memory 故障处理Oracle查看系统运行情况常用SQLexpdp/impdp/rman会话进度查看Oracle11g查询数据量最大的表及存储空间大小Oracle RMAN控制文件备份