千家信息网

Oracle中read by other session等待事件分析

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章主要讲解了"Oracle中read by other session等待事件分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Oracle中r
千家信息网最后更新 2025年01月24日Oracle中read by other session等待事件分析

这篇文章主要讲解了"Oracle中read by other session等待事件分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Oracle中read by other session等待事件分析"吧!

read by other session发生的场景:

当查询数据时,Oracle要把block从硬盘读到buffer cache中。如果有两个或更多session同时读取同一个block数据,第一个session会将block读取到buffer cache,由于block尚未完全读取到buffer cache,就导致其他session处于"read by other session"等待下。这个是oracle 10g从oracle 9i的"buffer busy waits"中分离出来的,也是一种热块现象。

read by other session等待事件有三个参数,属于User I/O类的等待 :

SQL> select name,parameter1,parameter2,parameter3,wait_class from v$event_name where name = 'read by other session';

NAME PARAMETER1 PARAMETER2 PARAMETER3 WAIT_CLASS

------------------------------ -------------------- -------------------- -------------------- -----------

read by other session file# block# class# User I/O

file#:要读取的数据块锁在数据文件的文件号

block#:要读取的起始数据块号

class#:块类型

可根据等待的file#、block#结合下面的sql获取热点块所在的segment:

SELECT OWNER, SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAME, A.PARTITION_NAME

FROM DBA_EXTENTS A

WHERE FILE_ID = &FILE_ID

AND &BLOCK_ID BETWEEN BLOCK_ID AND BLOCK_ID + BLOCKS - 1;

查询热点块对象:

SELECT *

FROM

(

SELECT O.OWNER, O.OBJECT_NAME, O.OBJECT_TYPE, SUM(TCH) TOUCHTIME

FROM X$BH B, DBA_OBJECTS O

WHERE B.OBJ = O.DATA_OBJECT_ID

AND B.TS# > 0

GROUP BY O.OWNER, O.OBJECT_NAME, O.OBJECT_TYPE

ORDER BY SUM(TCH) DESC

)

WHERE ROWNUM <= 10

感谢各位的阅读,以上就是"Oracle中read by other session等待事件分析"的内容了,经过本文的学习后,相信大家对Oracle中read by other session等待事件分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0