我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

早晨接到个开发人员的问题,truncat  table T_USER_LABEL表时,报错: ORA-00054:resource busy and acquire with NOWAIT specified or timeout expired,如下图。按照字面意思,是资源忙,被占用了。处理思路:查到谁在占用资源,并且杀掉占用该资源的会话就可以了。有可能产生的原因有:1.创建索引时会产生的锁  2.dml 语句会产生的锁  3.索引创建时加上关键字 online时产生的锁。解决处理方法:1.等待其他会话释放资源 2.找出占用资源的会话,并删除 3.重启数据库,当然只有第2种比较适用。
 
pl-sql中报错:

sqlplus中报错:

REPORTUSER@test > truncate table t_user_label;

truncate table t_user_label
              *
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired

二、故障处理
1.检查哪个用户占用资源 T_USER_LABEL

SYS@test > select l.session_id,o.owner,o.object_name from v$locked_object l,dba_objects o where l.object_id=o.object_id;

SESSION_ID OWNER OBJECT_NAME
---------- ------------------------------ --------------------------------------------------
      2205 REPORTUSER T_USER_LABEL
        76 REPORTUSER T_USER_LABEL
      1849 REPORTUSER T_TEMPORARY_CHANNEL_CUSTOMER
2.利用查出来占用资源 T_USER_LABEL的session_id,查出更加详细的信息
点击(此处)折叠或打开

SYS@test > SELECT sid, serial#, username, oSUSEr, terminal,program ,action, prev_exec_start FROM v$session where sid = 2205;


      SID SERIAL# USERNAME OSUSE TERMINAL PROGRAM ACTION PREV_EXEC_START
---------- ---------- ------------ ----- ---------- --------------- ------------------------------ -------------------
      2205 3045 REPORTUSER huhw PTYY-003 plsqldev.exe - procedure P_USER_LABE 2016-06-29 11:31:02

SYS@test > SELECT sid, serial#, username, osuser, terminal,program ,action, prev_exec_start FROM v$session where sid = 76;

      SID SERIAL# USERNAME OSUSE TERMINAL PROGRAM ACTION PREV_EXEC_START
---------- ---------- ------------ ----- ---------- --------------- ------------------------------ -------------------
        76 1677 REPORTUSER huhw PTYY-003 plsqldev.exe SQL - ? 2016-06-29 14:00:54

根据上面查出来的 SID,SERIAL# 杀掉占用资源 T_USER_LABEL的两个会话

SYS@test > alter system kill session "2205,3045";


System altered.

SYS@test > alter system kill session "76,1677";

System altered.

再次执行truncate table 成功

REPORTUSER@test > truncate table T_USER_LABEL;

Table truncated.
 
三、总结
    问题回顾,通过上述查询信息中得出,有两个SESSION占用了T_USER_LABEL表资源,而且可以看出是在执行某个procedure,名字为P_USER_LABE,查看了这个procedure后,里面语句是通过查询其他表信息,最终要插入T_USER_LABEL表数据,在询问当事人后,昨天中午执行该procedure时,是强制中断了。导致最终没有提交事务,也未回滚,才会一直占用该资源。在这个案例中,学习掌握利用v$locked_object与dba_objects来找出哪个会话占用某对象,并且利用v$session来找出该会话的具体信息,包括SID,SERIAL#,如何连接,正在执行什么等等。最终使用alter system kill session ‘sid,serial#’; 来kill 掉占用资源的会话。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

早晨接到个开发人员的问题,truncat  table T_USER_LABEL表时,报错: ORA-00054:resource busy and acquire with NOWAIT specified or timeout expired,如下图。按照
ORA-00054:resource busy and acquire with NOWAIT specified or timeout expired
2021-06-25

ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired ORACLE 报错 故障修复 远程处理

文档解释ORA-00054: resource busy and acquire with NOWAIT specified or timeout expiredCause: Interested resource is
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired ORACLE 报错 故障修复 远程处理
2023-11-05

ORA-30006: resource busy; acquire with WAIT timeout expired ORACLE 报错 故障修复 远程处理

文档解释ORA-30006: resource busy; acquire with WAIT timeout expiredCause: The requested resource is busy.Action: Retry the
ORA-30006: resource busy; acquire with WAIT timeout expired ORACLE 报错 故障修复 远程处理
2023-11-05

编程热搜

目录