read by other session事件

该事件发生在将相同数据块载入到内存的过程中,多个会话同时select相同的数据块引起buffer lock争用。在 oracle 9i中相当于"buffer busy waits" ,在Oracle 10.1及更高版本中,该事件被被分解为“read by other session”等待事件。

select c.PARAMETER1,c.PARAMETER2,c.PARAMETER3 from v$event_name c where c.name='read by other session';
PARAMETER1  PARAMETER2  PARAMETER3
----------- ----------- ----------
file#       block#      class#


参数:
P1 = file# Absolute File# (AFN)
P2 = block#
P3 = class# Block class
file# 绝对文件编号(AFN)包含等待会话所需块的数据文件的文件号。
block#等待会话要访问的上述文件的块号。
class#等待的块类:
class 1表示“数据块”,可以是表或索引
class 4类表示“段头”
class >=15表示“撤消块”


查找blocker:
SELECT SID mySID, blocking_session,
       p1 "FILE#", p2 "BLOCK#", p3 "class#", row_wait_obj# OBJECT_ID
  FROM v$session
 WHERE event = 'read by other session'
   AND STATE='WAITING'
;

查找对象:
SELECT relative_fno, owner, segment_name, segment_type
  FROM dba_extents
 WHERE file_id = &FILE
   AND &BLOCK BETWEEN block_id AND block_id + blocks - 1
;

减少该等待事件:
1.优化sql,减少数据块读入
2.增加sga大小


mos:WAITEVENT: "read by other session" Reference Note (文档 ID 732891.1)

猜你喜欢

转载自blog.51cto.com/hunt1574/2346467