概述
后台数据库操作某一个表时发现一直处于假死状态,可能是该表被某一用户锁定,接下来模拟介绍下查询被锁表及如何解锁,感兴趣的朋友可以参考下,希望可以帮助到你。
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相关技术文档请双击加关注,希望大家以后多多支持。