[ORACLE] ORA-00054 错误的解决方案

错误信息:

ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired

 

关键词:ORA-00054 锁等待

 

原因:如错误信息提示,资源正忙(被占用),一般为有其他进程hold住了这个资源,如insert信息后没有提交,那么其他进程无法对该表做truncate操作。

举例:

A进程新建一张表,插入一行数据,但是没有提交(commit)。

那么B进程想要对此表做truncate,便会报ORA-00054错误。

只有当A进程提交后或资源被释放后,B进程的truncate才可以执行。

请注意,这个情况和两个进程同时对一个资源(如update同一行)进行操作还不同,两个进程同时对一个资源进行操作时,第二个操作会卡住,现象就是在等待,使用sqlplus测试的现象就是回车后卡住,但是truncate会报上图中的错误。

处理方式:可以找出hold住资源的进程,进行commit后释放资源。如无法进行提交的,确认后将其kill掉即可。

SQL> select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;

请注意,使用上述语句后出现的所有信息并非全部是问题进程,因为正常的对表进行操作的只要在查询瞬时有hold住资源都会被select出来,所以可以多次使用该命令确认是否资源一直被hold住,并可以观察下面的表名来进行辅助确认。

查询出sid和serial#。

SQL> select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;

Kill会话进程。

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ORA-00054Oracle数据库中的一个常见错误,表示用户试图在正在被锁定的资源上执行不允许的操作,导致资源处于忙碌状态。 这种情况通常发生在多个会话(用户)同时尝试访问同一资源时。为了解决ORA-00054错误,可以尝试杀死占用该资源的会话,通过使用KILL SESSION命令或者在Oracle Enterprise Manager中手动终止会话。 但需要注意的是,杀死会话只是解决ORA-00054错误的一种方法,而不是根本解决问题的方法。如果ORA-00054错误经常发生,可能需要重新设计应用程序或进行其他调整,以避免多个会话同时访问同一资源。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [[ORACLE] ORA-00054 错误解决方案](https://blog.csdn.net/jaykiller/article/details/107400461)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [oracle ORA-00054 资源正忙](https://blog.csdn.net/weixin_42064877/article/details/130611156)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值