查询处理死锁会话的sql语句(转贴)

本文提供了一种查询Oracle数据库中死锁会话的方法,并展示了如何通过SQL语句确定阻塞的进程及被阻塞的对象。此外,还介绍了杀死死锁会话以释放资源的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一直以来自己都想写一个能够查询系统中有死锁的会话的语句,查到后杀掉会话,

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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/631872/viewspace-1044505/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值