概述
后臺數據庫操作某一個表時發現一直處于假死狀態,可能是該表被某一用戶鎖定,接下來模擬介紹下查詢被鎖表及如何解鎖,感興趣的朋友可以參考下,希望可以幫助到你。
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相關技術文檔請雙擊加關注,希望大家以后多多支持。