首页 > 数据库技术 > 详细

关于Oracle报错ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired这档事

时间:2020-09-02 11:34:24      阅读:85      评论:0      收藏:0      [点我收藏+]

在PLSQL中执行SQL脚本的时候,报错ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
遇事不要慌,Google翻译走一波
技术分享图片

之所以会报这个错误,是因为锁表
可能是我脚本前一个语句执行完后没有commit提交或者rollback回滚;
也可能是在我执行脚本的时候,有其他人对这张表做了insert、update、delete、drop之类的操作后没有commit提交或者rollback回滚;

总之执行完修改语句后commit提交或者rollback回滚很重要

回到锁表
通过下面的SQL语句查出哪个事务有问题

select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid; --查询锁表

技术分享图片

根据SID和SERIAL#来kill掉进程,比如下面的sql语句中,我查出来的SID=248,SERIAL#=64466

ALTER system KILL session ‘248,64466‘;--kill进程

再重新执行脚本,就没有之前的报错了

PS:在查询锁表的时候可能会碰到“动态执行表不可访问,本会话的自动统计被禁止”的问题,可以参考这个解决:PLSQL报错“动态执行表不可访问,本会话的自动统计被禁止”的解决方法

关于Oracle报错ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired这档事

原文:https://www.cnblogs.com/SmallSky-BigWorld/p/13600120.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!