暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

buffer busy waits(不全)

原创 凌韵 2023-11-07
53

一、查看系统所有段的有关buffer busy waits事件的统计:


set linesize 1000 pagesize 1000
col OWNER for a20
col OBJECT_NAME for a30
col SUBOBJECT_NAME for a10
col TABLESPACE_NAME for a20
col OBJECT_TYPE for a10
col STATISTIC_NAME for a30
SELECT * FROM v$segment_statistics s WHERE s.statistic_name = 'buffer busy waits' AND s.owner <> 'SYS';

二、常见引起原因


1、当一个会话视图修改一个数据块,但这个数据块正在被另一个会话修改时。

2、当一个会话需要读取一个数据块,但这个数据块正在被另一个会话读取到内存中时。

3、当一个会话需要读取一个数据块,但这个数据块正在被另一个会话修改时。

三、解决方案


1、查询等待发生的位置

select
o.object_name obj,
o.object_type otype,
ash.SQL_ID,
w.class
from v$active_session_history ash,
( select rownum class#, class from v$waitstat ) w,
all_objects o
where event='buffer busy waits'
and w.class#(+)=ash.p3
and o.object_id (+)= ash.CURRENT_OBJ#
Order by sample_time;
2、缓冲区所属的对象是什么?(由P1和P2参数配合dba_extents找出)

select s.segment_name, s.partition_name
from dba_extents s
where <P2的值> between s.block_id and (s.block_id + s.blocks -1) and s.file_id = <P1的值>

四、参数含义


P1: File ID

P2: Block ID

P3: Class ID

p1、p2参数和dba_extents进行联合查询得到block所在的segment名称和segment类型

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论