
转: 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。不会的。脏数据最多会导致数据库越来越大,不会导致阻塞,基于锁的并发系统才会引起阻塞、当一个连接控制了一个锁,而另一个连接需要冲突的锁类型时,将发生阻塞。其结果是强制第二个连接等待,或在第一个连接上阻塞。
评论列表(0条)