MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 数据库 / 正文

Oracle锁表解决方法

2024-11-26 17:14 huorong 数据库 6 ℃ 0 评论

概述

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


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;

可以看到锁对象是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

4、结束

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

Tags:oracle 删除 表

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言