该事件发生在将相同数据块载入到内存的过程中,多个会话同时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)
转载于:https://blog.51cto.com/hunt1574/2346467