oracle查看阻塞的sql,Oracle RAC阻塞排查SQL脚本

该使用到的sql脚本是参考别人技术文档转接过来用于日常工作中使用到的记录下。

1,树形结构分级别显示会话之间的阻塞关系

set lines 200 pages 100

col tree for a30

col event for a40

select *

from (select a.inst_id, a.sid, a.serial#,

a.sql_id,

a.event,

a.status,

connect_by_isleaf as isleaf,

sys_connect_by_path(a.SID||'@'||a.inst_id, '

level as tree_level

from gv$session a

start with a.blocking_session is not null

connect by (a.sid||'@'||a.inst_id) = prior (a.blocking_session||'@'||a.blocking_instance))

where isleaf = 1

order by tree_level asc;

效果如下:

2929636f6fac11b094ea32025e1b443b.png

2,直接显示会话阻塞关系

SELECT DISTINCT

s1.username

|| '@'

|| s1.machine

|| ' ( INST='

|| s1.inst_id

|| ' SID='

|| s1.sid

|| ' Serail#='

|| s1.serial#

|| ' ) IS BLOCKING '

|| s2.username

|| '@'

|| s2.machine

|| ' ( INST='

|| s2.inst_id

|| ' SID='

|| s2.sid

|| ' Serial#='

|| s2.serial#

|| ' ) '

AS blocking_status

FROM gv$lock l1,

gv$session s1,

gv$lock l2,

gv$session s2

WHERE     s1.sid = l1.sid

AND s2.sid = l2.sid

AND s1.inst_id = l1.inst_id

AND s2.inst_id = l2.inst_id

AND l1.block > 0

AND l2.request > 0

AND l1.id1 = l2.id1

AND l1.id2 = l2.id2;

效果如下:

9c73627c657cdc668d1771e7255a6a8c.png

3,显示阻塞实例的sql语句(需要在RAC的每个实例上面去执行)

select b.sid,

a.sql_id,

a.sql_text,

a.hash_value,

b.username,

b.machine,

a.module,

decode(c.block, 1, 'blocking') blocking,

decode(c.request, 0, 'null', 'blocked') blocked,

to_char(b.logon_time, 'yyyy-mm-dd hh24:mi:ss')

from v$sql a, v$session b, v$lock c

where c.type = 'TX'

and a.sql_id = b.sql_id

and b.sid = c.sid

union all

select b.sid,

a.sql_id,

a.sql_text,

a.hash_value,

b.username,

b.machine,

a.module,

decode(c.block, 1, 'blocking') blocking,

decode(c.request, 0, 'null', 'blocked') blocked,

to_char(b.logon_time, 'yyyy-mm-dd hh24:mi:ss')

from v$sql a, v$session b, v$lock c

where c.type = 'TX'

and a.sql_id = b.prev_sql_id

and b.sid = c.sid

and c.block = 1;

效果如下:

81ef7c46ff06b3c977d6e330c092c5d5.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值