oracle ORA-00054:资源正忙和ORA-00060:检测到死锁的解决办法

一、"ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效"的快速解决方法:

原因之一:在进行数据修改时somehow数据库 lock住了。

解决办法:

 

SQL> select session_id from v$locked_object;

 

SESSION_ID

----------

       X

 

SQL> SELECT sid, serial#, username, osuser FROM v$session where sid =X

 

       SID   SERIAL# USERNAME                       OSUSER

---------- ---------- ------------------------------------------------------------

      X        Y     SA                            fy

 

 

SQL> ALTER SYSTEM KILL SESSION 'X,Y';

 

三行语句搞定。

 

 

二、ORA-00060:等待资源的时候检测到死锁的解决办法


当ORACLE出现表锁死的情况,会导致其他人员无法编辑相关资料,严重的造成应用程式崩溃。

如何处理表死锁的问题?

 

1、查询锁死的表;
SELECT /*+ rule*/ a.sid, b.owner, object_name, object_type FROM v$lock a, all_objects b WHERE TYPE = 'TM' and a.id1 = b.object_id ;

2、根据SID查询SID和SERIAL#;
SELECT sid,serial# FROM v$session WHERE sid = &sid;

3、根据SID和SERIAL#,杀掉被锁死的表,使之可被编辑。
alter system kill session 'SID,SERIAL#';

 

若是有多个节点,以上SQL语句中,将“v$lock”修改为“gv$lock”,

“v$session ”修改為“gv$session ”,否则会遗漏信息。

 

 三、编译存储过程的时候数据库卡死

 select b.sid,b.serial#,b.machine,b.terminal,b.program,b.process,b.status from v$lock a , v$session b
where a.SID = b.SID


alter system kill session 'SID,SERIAL#' immediate;

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值