Oracle数据库buffer busy wait等待事件

当会话意图访问缓冲存储器中的数据块,而该数据块正在被其它会话使用时产生buffer busy waits事件。其它会话可能正在从数据文件向缓冲区存储器度曲同样的数据块,或正在缓冲存储器中对其进行修改。

为了确保读取器会话拥有与获得所有更改或无更改的数据块一致的映像,正在修改该数据块的会话在其标题中标记一个标志,让其他会话知道有一个更改正在进行而等候更改的的完成。

视图v$waitstat不是OWI的组件,但其为没一类缓冲区提供了有用的等待统计。遭遇buffer busy等待事件最常见的缓冲区类为块、段标题、撤消块、撤消标题。

显示一个查询v$waitstat视图的采样输出:

具体示例如下:

SELECT * FROM V$waitstat WHERE COUNT>0;

CLASS COUNT TIME

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

data block 4170082 1668098

segment header 116 98

undo header 916 1134

undo block 2087 1681

1、等待参数

buffer wait busy的等待参数描述如下:

P1 在Oracle 8及其以后版本的数据库里,P1显示询问数据块驻留的绝对文件号。

P2 进程需要访问的实际块号。

P3 在Oracle10g以前的版本中,着是表示等待原因的数字。Oracle在内河代码中在

多个地方用不同的原因码提交。该原因码取决于版本。

2、等待时间

100厘秒或1秒。

。 Oracle会话正在等待钉住一个缓冲区。必须在读取或修改缓冲区前将它钉住。在任何

时刻只有一个进程可以钉住一个缓冲区。

。buffer busy waits表明读/读、读/写、写/写争用。

。采取的适当措施取决于P3参数中的原因码。

在SGA中读取或修改缓冲区的会话必须首先获取cache buffers chains锁存器,并且遍历

这个缓冲区链,直到他发现必需的缓冲区头。然后,他必须以共享模式或独占模式获取

一个缓冲区锁或缓冲区头上的pin,这取决于他计划的操作。一旦缓冲区头被钉住,会话

就释放cache buffers chains锁存器,并在缓冲区自身上执行计划的操作。如果无法获

取一个pin,会话就在buffer busy waits等待事件上等待。这种等待时间不会应用于在

会话的私有PGA中执行的读取或写入操作。

3、诊断的原因、诊断和动作

。表示为什么进程无法获得一个缓冲区pin的主要原因码。

。buffer busy waits等待时间需要的块类。

。和buffer busy waits时间相关的SQL语句。

。缓冲区所属的段。

——查找等待块类型

SELECT 'segment Header' CLASS,

a.Segment_Type,

a.Segment_Name,

a.Partition_Name

FROM Dba_Segments a,

V$session_Wait b

WHERE a.Header_File = b.P1

AND a.Header_Block = b.P2

AND b.Event = 'buffer busy waits'

UNION

SELECT 'freelist Groups' CLASS,

a.Segment_Type,

a.Segment_Name,

a.Partition_Name

FROM Dba_Segments a,

V$session_Wait b

WHERE b.P2 BETWEEN a.Header_Block + 1 AND (a.Header_Block + a.Freelist_Groups)

AND a.Header_File = b.P1

AND a.Freelist_Groups > 1

AND b.Event = 'buffer busy waits'

UNION

SELECT a.Segment_Type || ' Block' CLASS,

a.Segment_Type,

a.Segment_Name,

a.Partition_Name

FROM Dba_Extents a,

V$session_Wait b

WHERE b.P2 BETWEEN a.Block_Id AND a.Block_Id + a.Blocks - 1

AND a.File_Id = b.P1

AND b.Event = 'buffer busy waits'

AND NOT EXISTS (SELECT 1

FROM Dba_Segments

WHERE Header_File = b.P1

AND Header_Block = b.P2);

◆ 带有原因码130的数据块(类#1)争用

如果buffer busy waits的等待事件主要集中在数据块(类#1)上,并且原因码130,则

表明应用程序运行在同一时刻查询相同数据集的多个会话,采用如下三件事最小化问题:

§减少并发级别或该表在运行现成直接内分区工作的方法。

§优化SQL语句,减少物理读取和逻辑读取的数量。

§增加freeLists和freeList Groups的数量。

◆ 带有原因码220的数据块(类#1)争用

多个会话同时在相同的对象上DML.采用如下三件事最小化问题:

减少并发级别或改变划分部分的方法。

减少块中行的数量。

在另一个具有较小块尺寸的表空间中重新构建对象(Oracle 9i或以上版本)。

可以使用较大的PCTFREE重新构建表或索引。可以使用命令改变表以最小化每个块的最

小行数:

ALTER TABLE table_name MINIMIZE RECORDS_PER_BLOCK;

从Oracle 9i开始,可以在另外一个具有较小的块尺寸的表空间中移动或重新构建对象。

虽然这些动作可以最小化buffer busy waits问题,但是他们无疑将增加全表扫描时间

和磁盘空间利用率。常言道,世上没有免费的午餐。

◆ 数据段头(类#4)的争用

如果buffer busy waits的等待时间主要集中在数据段头(即表或索引段头,并且不是

插销段头)上,这意味着数据库中的一些表或索引具有高段头活动。如下解决问题:

增加已经确定对象的进程FreeLists和FreeList Groups的数量。

确保PctFree和PctUsed之间内的间隙不会太小。

确保下一个区尺寸不会太小。

如果不希望混浠FreeLists和FreeList Groups,可以依靠自动段空间管理(Automatic

Segment Space Management,ASSM)特性,以分散从插入语句中引入的数据(9i特性)。

◆ 撤消段都(类#17)的争用

如果buffer busy waits等待时间主要集中在撤消段头上,这表明数据库中的回滚段

过少,或者他们的尺寸太小,从而造成对段头的频繁更新。如果在Oracle 9i中引入的系

统管理撤消,就不需要处理这种问题,因为Oracle将根据需要增加额外的撤消段。

◆ 撤消块的争用(类#18)

如果buffer busy waits等待时间主要集中在撤消块上,这通常意味着多个并发会话同

时查询更新的数据。当应用程序可以在不同的时间内查询和DML时,这种问题就不会存在。

◆ 系统级诊断

——文件等待次数

SELECT b.File_Id,

b.File_Name,

a.COUNT

FROM X$kcbfwait a,

Dba_Data_Files b

WHERE a.Indx = b.File_Id-1

AND a.COUNT > 0

ORDER BY a.COUNT;

本文作者:相关阅读:

Windows XP系统中也能享受Flip 3D特效

最短的javascript:地址栏载入脚本代码

系统组策略设置禁止关闭计算机

SQL Server数据备份处理过程探讨

用一个实例讲解Oracle数据库的PL/SQL语句块

使用CSS给图片添加阴影的方法

Winodws下IIS/Apache+PHP+MySQL的安装配置

jQuery中创建实例与原型继承揭秘

CSS用四种方式实现布局

swatch监控程式

Ubuntu 8.10下安装配置友基数位板

零基础学习JavaScript(1)-1.2JavaScript功能简介

实现Form域中Post大于100K的数据的解决方案

微博@符号的用户名提示效果。(想@到谁?)

oracle缓冲等待块,CSS_Oracle数据库buffer busy wait等待事件, 当会话意图访问缓冲存储 - phpStudy...相关推荐

  1. oracle+buffer+busy+wait,Oracle数据库buffer busy wait等待事件 (2)

    --查找等待块类型 SELECT 'segment Header' CLASS, a.Segment_Type, a.Segment_Name, a.Partition_Name FROM Dba_S ...

  2. buffer busy waits等待事件的原因:hot block [转]

    http://blog.chinaunix.net/u/24260/showart_456274.html ********************************************** ...

  3. 分析解决11gR2 双节点RAC环境下的gc cr block busy/gc buffer busy acquire等待

    ?  系统环境 两节点的RAC:AIX6.1+Oracle 11.2.0.3.3 ?  AWR里展示出来的各种症状(数据来自实例2) 虽然应用没有报障,但AWR报告里的各种迹象已经很明显了 (1)   ...

  4. RAC性能分析 - gc buffer busy acquire 等待事件

    概述 --------------------- gc buffer busy是RAC数据库中常见的等待事件,11g开始gc buffer  busy分为gc buffer busy acquire和 ...

  5. buffer busy waits等待事件案例-vage

    讨厌香草冰激凌的汽车与Buffer busy wiats的故事 记得好几年前看到过一个故事,通用公司曾收到一客户的邮件,邮件中客户描述了一个非常奇怪的问题.他们家有晚饭后去吃冰激凌的习惯,如果他们买的 ...

  6. oracle等待事件4——buffer busy wait 特别介绍

    以下内容太整理自网络,完全处于学习目的,如有侵权请及时联系我,我会立即删除. 非空闲等待之:buffer busy waits 事件参数说明: 事件号 事件名 参数一 参数二 参数三 145 buff ...

  7. 等待事件buffer busy waits

    转载自:http://blog.csdn.net/cymm_liu/article/details/7968537 非空闲等待之:buffer busy waits buffer busy wait ...

  8. 2017-03-27Oracle故障gc buffer busy acquire导致数据库不可用

    实施反馈系统有20分钟不可用,然后又自动恢复了.先查看alert日志,看到打开文件数不够,系统已经运行几年了,怎么可能呢. Non critical error ORA-48180 caught wh ...

  9. buffer busy waits

    当进程需要存取SGA中的buffer的时候,它会依次执行如下步骤的操作: 1.获得cache buffers chains latch,遍历那条buffer chain直到找到需要的buffer he ...

最新文章

  1. 磁盘分区形式mbr和gpt哪个好_济南历下区中考美术集训应该选哪个
  2. 【Elasticsearch】数据预加载
  3. uva-10341-二分法
  4. 概念的理解 —— 电学
  5. linux+多路复用socket,socket的select_多路复用
  6. jstack分析线程状态
  7. PMP第六版十五至尊图记忆方法
  8. LimeSDR官方系列教程(一):LimeSDR简介
  9. 地理信息系统导论第八版_地理信息系统导论(原著第8版)
  10. linux视频播放器软件下载,360万能播放器Linux版
  11. 三次握手,为什么不是两次,也不是四次
  12. 「LSTM 之父」亲笔万字长文,只为向世人证明:深度学习不是在母语为英语的地方被发明的...
  13. 解决双蛋问题的C代码实现
  14. 怎么搭配丝袜优雅不低俗?
  15. 计算机网络学生主页链接,计算机网络中一组相关网页通过超链接连接,用于描述一组完整的信息,称为( )。A.网站B.主页C.服 - 扁豆云问答...
  16. 爬虫入门(1)——requests(1)
  17. 如何缩小pdf的大小?如何将pdf文件变小一点?
  18. ROT13 - 维基百科,自由的百科全书
  19. Java基础(六)——多线程的基本使用与原理
  20. 仙剑奇侠传四服务器维护,仙剑奇侠传四手游无法登陆游戏怎么办

热门文章

  1. 2021年黄岩中学高考成绩查询,2021台州中考分数线预测
  2. 多智能体协同:实现智能系统的合作与共赢
  3. 2022年夏 数据可视化期末复习(*机试)
  4. 基金实盘组合总结,继续修正投资策略
  5. Deepin 15.9 下安装Nvidia驱动 RTX 2080显卡
  6. CD光盘音频cda文件拷贝翻录为wma文件
  7. 程序员逛银饰店笑话一则
  8. 本地windows启动nacos报错 ErrCode:500, ErrMsg:jmenv.tbsite.net
  9. MySQL数据库实验二 数据基本查询
  10. 通过程序压缩/解压文件