环境:DB/10.2.0.4(64bit) OS/AIX 5.3.0.0
之前遇到个这样一个性能问题(on rac),应用运维人员反映前台出单缓慢,于是我第一时间登陆后台数据库,查询当前每个实例的非空闲等待事件,发现有大量的session在经历read by other session,通过event的p1和p2参数发现这些阻塞会话都在等待同一个block,即p1和p2的值是一样的,然后将p1和p2的值代入sql进一步查询等待,结果发现除了之前查出的read by other session之外,还伴随着一个等待是db file sequencial read,观察到这个顺序读的等待对应的会话竟然等了几十分钟,当时临时解决的方法是直接kill掉这个顺序读对应的会话,当kill掉这个会话后,之前大量的read by other session马上消失。
以上现象在生产中出现过几次,发生频率不定,有时read by other session与db file sequencial read等待事件发生了不同节点,有时候又发生在相同节点,我的疑问就是从现象判断应该是db file sequencial read导致阻塞了大量的read by other session,可是又是谁阻塞了db file sequencial read这个会话了,按常理说读取一个block所花的时间肯定不要几十分钟啊?监控整个等待的过程中p1与p2都是保持不变的!