<返回更多

Oracle锁表解决方法

2022-04-12    死磕IT
加入收藏

概述

后台数据库操作某一个表时发现一直处于假死状态,可能是该表被某一用户锁定,接下来模拟介绍下查询被锁表及如何解锁,感兴趣的朋友可以参考下,希望可以帮助到你。


1、模拟操作

select * from demo for update;

2、查看哪个session引起的锁

   SELECT 
           object_name,
           s.username,
           s.inst_id,
           s.sid,
           s.serial#,
           s.status,
           to_char(p.spid) spid,
           to_char(s.logon_time, 'yyyy-mm-dd hh24:mi:ss') logon_time
      FROM gv$locked_object l, dba_objects o, gv$session s, gv$process p
     WHERE l.object_id = o.object_id
       AND l.session_id = s.sid
       and l.inst_id = s.inst_id
       and s.inst_id = p.inst_id
       AND s.paddr = p.addr;
Oracle锁表解决方法

 

可以看到锁对象是DEMO,sid,serial=2545,54807

解锁命令:

alter system kill session '2545,54807'

注意点:

a、如果状态为INACTIVE,则直接执行L_SQL脚本即可(任意节点均可以)

b、如果状态为ACTIVE且EVENT为安全的等待事件,则直接kill -9 spid即可(注意要到对应的节点)

c、杀了这个进程感觉舒服多了,如果是我们自己玩没什么 ,可要是在生产环境你就要小心了 所以我们需要注意一下了

3、通过OS命令删除

ps -ef | grep 27422

Oracle锁表解决方法

 

4、结束

到此这篇关于Oracle锁表解决方法的文章就介绍到这了,更多DBA相关技术文档请双击加关注,希望大家以后多多支持。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>