一、查看系统所有段的有关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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle数据库调整内存应该注意的几个问题
听见风的声音
317次阅读
2025-03-18 09:43:11
Oracle SQL 执行计划分析与优化指南
Digital Observer
207次阅读
2025-04-01 11:08:44
数据库的易用性是多维度的
白鳝的洞穴
124次阅读
2025-03-06 09:26:58
Oracle 物理 DataGuard 机制全面解析(最佳参考)
Albert Tan DBA 之路
101次阅读
2025-03-10 17:28:06
Oracle 10G DG 修复从库-磁盘空间爆满导致从库无法工作
Albert Tan DBA 之路
64次阅读
2025-03-27 16:52:57
Oracle 10.2.0.5 DataGuard主从搭建-呆瓜式
Albert Tan DBA 之路
58次阅读
2025-03-12 10:05:53
Oracle大表数据导出指南
yuki
49次阅读
2025-03-20 16:27:24
紧急救援!SCN调整秘籍(二)
呆呆的私房菜
48次阅读
2025-03-25 10:37:52
oracle 补丁包
凉冰
41次阅读
2025-03-19 15:20:17
oracle巡检的其他检查
听溪
38次阅读
2025-03-23 22:17:19