解决oracle数据库 ora-00054:resource busy and acquire with NOWAIT specified 错误

Posted javagogogo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决oracle数据库 ora-00054:resource busy and acquire with NOWAIT specified 错误相关的知识,希望对你有一定的参考价值。

解决oracle数据库 ora-00054:resource busy and acquire with NOWAIT specified 错误 

本人在使用pl/sql developer 客户端调用存储过程进行操作时发现中途卡机然后强制终止pl/sql developer 之后,oracle就一直出现锁相关的错误。 
经分析认为在调用存储过程时对表进行了DDL语句操作时导致了悲观封锁。客户端卡机后oracle一直没有对这个锁进行释放且一直不会完成释放导致错误。

 

需要对此会话进行强制杀掉: 
1. 查询当前被锁的对象 

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

 

2. 查询session信息 
SQL> SELECT v.sid,v.SERIAL#,v.USERNAME,v.ACTION FROM v$session v WHERE v.sid IN (SELECT session_id FROM v$locked_object WHERE ORACLE_USERNAME= \'ATHENA\') AND V.MACHINE=\'NBCB\\KJB-080701N\'; 

3. 杀会话 
语法: 
ALTER SYSTEM KILL SESSION \'SID,SERIAL#\'; 
例如: 
ALTER SYSTEM KILL SESSION \'436,62365\'; 

杀完之后再查询,发现sid对应的数据没了,这样就可以啦!实在不行只能重启数据库

以上是关于解决oracle数据库 ora-00054:resource busy and acquire with NOWAIT specified 错误的主要内容,如果未能解决你的问题,请参考以下文章

关于oracle数据库死锁,请大神进。为啥用java synchronized 关键字解决不了?怎么解决死锁问题?

500分悬赏oracle死锁问题解决,决不食言

oracle不能用spfile启动,怎么解决

oracle ORA-01033问题怎么解决

oracle分析表,解决索引失效

cx_Oracle读取Oracle数据库中文乱码问题解决