如何查看oracle数据库中哪些session异常阻塞了系统

如何查看oracle数据库中哪些session异常阻塞了系统,第1张

这时候需要找出造成异常阻塞的session并清除。

oracle session通常具有三个特征:

(1)一个session可能阻塞多个session;

(2)一个session最多被一个session阻塞;

(3)session阻塞关系不会形成环路。(环路即死锁,oracle能自动解除)

因此session的阻塞关系为一棵树,进而DB系统所有session的BLOCK阻塞关系是一个由若干session阻塞关系树构成的森林,而异常session一定会在故障爆发时成为根(root)。因此,找寻异常锁表session的过程就是找出异常的root。

一般认为异常root有两个特征:(1)block树的规模过大,阻塞树规模即被root层层阻塞的session总数;(2)阻塞的平均等待时间过长。

查找异常session的方法一:

OEM—>performance—>Blocking Sessions

查找异常session的方法二:

select r.root_sid, s.serial#,

r.blocked_num, r.avg_wait_seconds,

s.username,s.status,s.event,s.MACHINE,

s.PROGRAM,s.sql_id,s.prev_sql_id

from (select root_sid, avg(seconds_in_wait) as avg_wait_seconds,

count(*) - 1 as blocked_num

from (select CONNECT_BY_ROOT sid as root_sid, seconds_in_wait

from v$session

start with blocking_session is null

connect by prior sid = blocking_session)

group by root_sid

having count(*) >1) r,

v$session s

where r.root_sid = s.sid

order by r.blocked_num desc, r.avg_wait_seconds desc

该SQL语句即是根据v$session的字段blocking_session统计阻塞树根阻塞session的计数以及平均阻塞时间、并进行排序,排名最前的往往是异常session。

类投射异常,

检查url,username,password

检查xml配置文件

逆向工程用的xml不是用于Oracle的

数据库连接问题,重启服务

你好!

这时候需要找出造成异常阻塞的session并清除。

oracle session通常具有三个特征:

(1)一个session可能阻塞多个session;

(2)一个session最多被一个session阻塞;

(3)session阻塞关系不会形成环路。(环路即死锁,oracle能自动解除)

因此session的阻塞关系为一棵树,进而DB系统所有session的BLOCK阻塞关系是一个由若干session阻塞关系树构成的森林,而异常session一定会在故障爆发时成为根(root)。因此,找寻异常锁表session的过程就是找出异常的root。

一般认为异常root有两个特征:(1)block树的规模过大,阻塞树规模即被root层层阻塞的session总数;(2)阻塞的平均等待时间过长。

查找异常session的方法一:

OEM—>performance—>Blocking Sessions

查找异常session的方法二:

select r.root_sid, s.serial#,

r.blocked_num, r.avg_wait_seconds,

s.username,s.status,s.event,s.MACHINE,

s.PROGRAM,s.sql_id,s.prev_sql_id

from (select root_sid, avg(seconds_in_wait) as avg_wait_seconds,

count(*) - 1 as blocked_num

from (select CONNECT_BY_ROOT sid as root_sid, seconds_in_wait

from v$session

start with blocking_session is null

connect by prior sid = blocking_session)

group by root_sid

having count(*) >1) r,

v$session s

where r.root_sid = s.sid

order by r.blocked_num desc, r.avg_wait_seconds desc

该SQL语句即是根据v$session的字段blocking_session统计阻塞树根阻塞session的计数以及平均阻塞时间、并进行排序,排名最前的往往是异常session。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6426876.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-22
下一篇 2023-03-22

发表评论

登录后才能评论

评论列表(0条)

保存