Oracle RAC环境下如何定位并杀掉最终阻塞的会话

本文介绍了在Oracle RAC环境中如何快速定位并结束导致级联阻塞的会话。通过模拟故障,展示从常规方法梳理阻塞会话到使用改进脚本直接找出最终阻塞会话的过程,帮助DBA高效处理复杂阻塞问题。
摘要由CSDN通过智能技术生成

导读:Oracle RAC环境下定位并杀掉最终阻塞的会话,本文通过一个测试demo来具体介绍。

实验环境:
Oracle RAC 11.2.0.4 (2节点)

  • 1.模拟故障:会话被级联阻塞

  • 2.常规方法:梳理找出最终阻塞会话

  • 3.改进方法:立即找出最终阻塞会话

但上文给出的例子过于简单,实际对于生产中复杂的阻塞问题,一步步找最终阻塞就比较麻烦。所以本篇旨在寻求更好更快捷的办法。

1. 模拟故障:会话被级联阻塞

准备工作:
我这里在每个实例开两个会话来模拟RAC在负载均衡模式下的业务会话:
实例1:会话1,会话2;
实例2:会话3,会话4;
在 时间点1 -> 时间点2 -> 时间点3 -> 时间点4 的这个时间轴上分别执行以下操作:

时间点1:
在实例1的会话1(INS1-session1)执行语句未提交或回滚:

select * from v$mystat where rownum = 1;update emp set sal = 8000 where empno = 7788;

时间点2:
在实例2的会话3(INS2-session3)执行语句:

select * from v$mystat where rownum = 1;delete from emp where empno = 7839;update emp set job = 'MANAGER' where empno = 7788;rollback;
时间点3:
在实例2的会话4(INS2-session4)执行语句:
select * from v$mystat where rownum = 1;update emp set sal = 15000 where empno = 7839;rollback;


时间点4:
在实例1的会话2(INS1-session2)执行语句:

select * from v$mystat where rownum = 1;update emp set job = 'CEO' where empno = 7839;rollback;


此时可以看到,在后面3个时间点进行操作的会话均hang住,显然都是被阻塞了。4个会话的现象如下:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值