oracle 如何形成死锁,ORACLE死锁
一、查看有哪些表被鎖住
select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
select b.username,b.sid,b.serial#,logon_time from v$locked_object
a,v$session b where a.session_id = b.sid order? by b.logon_time;
殺進程中的會話
alter system kill session 'sid,serial#';e.galter system kill session '29,5497';
如果有ora-00031錯誤,則在后面加immediate;
alter system kill session '29,5497' immediate;
二、如何殺死oracle死鎖進程
1.查哪個過程被鎖:
查V$DB_OBJECT_CACHE視圖:
SELECT * FROM V$DB_OBJECT_CACHE A? WHERE A.OWNER='GSEOPROD' AND A.LOCKS != '0';
2. 查是哪一個SID,通過SID可知道是哪個SESSION:
查V$ACCESS視圖:
SELECT * FROM V$ACCESS WHERE OWNER='過程的所屬用戶' AND NAME='剛才查到的過程名';
3. 查出SID和SERIAL#:
查V$SESSION視圖:
SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='剛才查到的SID';
查V$PROCESS視圖:
SELECT SPID FROM V$PROCESS WHERE ADDR='剛才查到的PADDR';
4. 殺進程:
(1)先殺ORACLE進程:
ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#';
(2)再殺操作系統進程:
KILL -9 剛才查出的SPID或ORAKILL 剛才查出的SID 剛才查出的SPID。
總結
以上是生活随笔為你收集整理的oracle 如何形成死锁,ORACLE死锁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 让主页或Blog日访问量增加3000
- 下一篇: 反弹式后门代码