查詢處理死鎖會話的sql語句(轉貼)

hljhrbsjf發表於2011-01-12

一直以來自己都想寫一個能夠查詢系統中有死鎖的會話的語句,查到後殺掉會話,

select
(select username from v$session where sid=a.sid) blocker,
a.sid, 'is blocking',
(select username from v$session where sid=b.sid) blockee,
b.sid
from v$lock a,v$lock b
where a.block=1 and b.request>0
and a.id1=b.id1 and a.id2=b.id2

查詢哪些session阻塞了哪些其他程式.

BLOCKER SID 'ISBLOCKING BLOCKEE SID
---------- ---------- ----------- ------------------------------ ----------
SYS 46 is blocking SYS 36
SYS 46 is blocking SYS 49

這個查的不是死鎖,,只是"查詢哪些session阻塞了哪些其他程式

select * from v$sqltext
where address in (
select sql_address from v$session where sid in (
select session_id from v$locked_object))

這個只查詢什麼語句阻塞

然後自己寫了個語句,該語句可以查詢哪個使用者的哪個物件,會話的sid,serial以及阻塞的語句,還是很全面的。

col owner format a10;
col oracle_username format a10;
col object_type format a10;
select a.owner,a.object_name,a.object_type,b.oracle_username,b.process,c.sid,c.serial#,d.sql_text from dba_objects a,v$locked_object b,v$session c,v$sqltext d
where a.object_id=b.object_id and b.session_id=c.sid and c.sql_address=d.address;

OWNER OBJECT_NAM OBJECT_TYP ORACLE_USE PROCESS SID SERIAL#
---------- ---------- ---------- ---------- ------------ ---------- ----------
SQL_TEXT
----------------------------------------------------------------
SYS T1 TABLE SYS 3768:3772 36 11
update t1 set id =15 where id=1

SYS T1 TABLE SYS 4008:2660 49 21
update t1 set id =30 where id=2

另外一篇文章處理死鎖會話的sql

翻了一下以前的一些文件, 發現儲存著查詢oracle 死鎖的sql 語句, 這是以前的一個前輩教給我的, 拿出來貼貼
--查詢死鎖SQL
SELECT /*+ rule */ s.username,
decode(l.type,'TM','TABLE LOCK',
'TX','ROW LOCK',
NULL) LOCK_LEVEL,
o.owner,o.object_name,o.object_type,
s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser
from v$session s,v$lock l,dba_objects o
WHERE l.sid = s.sid
AND l.id1 = o.object_id(+)
AND s.username is NOT NULL ;

--殺死死鎖的session, 釋放死鎖
alter system kill session '1055,621'; -- 第一個引數是 sid, 第二個引數是 serial#
可能有很多的死鎖, 但是釋放了前面的幾個, 可能後面的鎖就都解開了 ......

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/631872/viewspace-1044505/,如需轉載,請註明出處,否則將追究法律責任。

相關文章