最近,我们有台服务器在delete操作期间发现一直在等待log buffer space,其他节点就没与这个问题。经查,向重做缓冲区上写入重做记录的进程,为了确保拥有重做缓冲区内必要的空间,需要获得redo allocation锁存器。已获得redo allocation锁存器的状态下,在想要得到重做缓冲区时,若没有适当的剩余空间,则需要等到直到获得空间为止。这时,根据情况等待两种事件。如果当前正在使用的重做日志文件已满,因此无法获得剩余空间,LGWR就会执行日志文件切换,服务器进程则等待log file switch completion事件。除此之外,需等待log buffer space事件。前者在日志文件切换结束后,可能发生log buffer space等待瞬间增加的现象。这是因为欲在重做日志缓冲区上写入的多数会话,等待日志文件切换的结束,然后争前恐后的为了写入到重做日志缓冲区上而发生争用。

重做缓冲区小于重做数据量时,发生log buffer space等待。所以广泛发生log buffer space等待时,应该调整重做缓冲区是否过小,必要时应将重做缓冲区调整到足够大。如果log buffer space等待和log file switch completion等待同时出现,就有必要怀疑重做缓冲区大小和重做日志文件大小合理与否。许多情况下,这两个等待是同时出现的。若重做日志文件过小,则log file switch completion等待会增加,在日志文件切换结束后,重新出现log buffer space等待现象。为减少log buffer space等待加大重做日志缓冲区大小时,log file sync等待可能会增加。

减少log buffer space等待的另一个方法是较少创建重做数据。适当使用Direct load功能、赋予nologging选项等,都属于此方法。
log buffer space等待具有与free buffer waits等待相似的属性。free buffer waits等待,是因为DBWR进程无法满足服务器进程寻找空闲缓冲区的速度而发生的。与此相同,log buffer space等待,是因为LGWR进程无法满足服务器进程的寻找空闲重做缓冲区的速度而发生的。减少free buffer waits等待的一种方法就是改善DBWR的性能。与此相同,减少log buffer space等待,也是改善LGWR的性能。将更快、更有效的I/O系统应用于重做日志文件,可改善LGWR的写入性能。

我们系统配置了足够大的logfile,所以虽然一直在等待log buffer space,但是并没有明显的log file switch completion,因此解决方法是将log buffer从默认的30M调整为64M,如下:

ALTER SYSTEM SET LOG_BUFFER=67108864 SCOPE=BOTH;

重启数据库,观察后面确定是否缓解该问题。

log buffer space等待事件的更多相关文章

  1. log buffer space事件(转)

    看了这篇文章: Oracle常见的等待事件说明http://database.ctocio.com.cn/tips/38/6669538.shtml 对于Log Buffer Space-日志缓冲空间 ...

  2. 完全揭秘log file sync等待事件-转自itpub

    原贴地址:http://www.itpub.net/thread-1777234-1-1.html   谢谢 guoyJoe 老大 这里先引用一下tanel poder大师的图: 什么是log fil ...

  3. RAC 性能分析 - 'log file sync' 等待事件

    简介 本文主要讨论 RAC 数据库中的'log file sync' 等待事件.RAC 数据库中的'log file sync' 等待事件要比单机数据库中的'log file sync' 等待事件复杂 ...

  4. RAC Wait Event: gcs log flush sync 等待事件 转

    RAC Wait Event: gcs log flush sync https://www.hhutzler.de/blog/rac-wait-event_gcs_log_flush_sync/#o ...

  5. oracle之 等待事件LOG FILE SYNC (awr)优化

    log file sycn是ORACLE里最普遍的等待事件之一,一般log file sycn的等待时间都非常短 1-5ms,不会有什么问题,但是一旦出问题,往往都比较难解决.什么时候会产生log f ...

  6. Oracle中常见的33个等待事件小结

    在Oracle 10g中的等待事件有872个,11g中等待事件1116个. 我们可以通过v$event_name 视图来查看等待事件的相关信息     一. 等待事件的相关知识 1.1 等待事件主要可 ...

  7. 30种oracle常见的等待事件说明

    1Buffer busy waits从本质上讲,这个等待事件的产生仅说明了一个会话在等待一个Buffer(数据块),但是导致这个现象的原因却有很多种.常见的两种是: 当一个会话视图修改一个数据块,但这 ...

  8. ORACLE 常见等待事件

    一. 等待事件的相关知识 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件.1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候, ...

  9. oracle常见的等待事件说明

    转自 http://blog.itpub.net/29371470/viewspace-1063994/ 1. Buffer busy waits 从本质上讲,这个等待事件的产生仅说明了一个会话在等待 ...

随机推荐

  1. leetcode的注意点

    读懂一个题其实非常非常重要,读懂题包括要读懂题的问题是什么,条件是什么,考察的是什么知识点.所以能够读懂题就已经成功一半了,但是如果没有读懂题目就开始答题,就不假思索地乱写答案,那么会事倍功半,还得返 ...

  2. [LeetCode] 系统刷题5_Dynamic Programming

    Dynamic Programming 实际上是[LeetCode] 系统刷题4_Binary Tree & Divide and Conquer的基础上,加上记忆化的过程.就是说,如果这个题 ...

  3. 机器学习算法的调试---梯度检验(Gradient Checking)

    梯度检验是一种对求导结果进行数值检验的方法,该方法可以验证求导代码是否正确. 1. 数学原理   考虑我们想要最小化以 θ 为自变量的目标函数 J(θ)(θ 可以为标量和可以为矢量,在 Numpy 的 ...

  4. CSU 1859 Gone Fishing(贪心)

    Gone Fishing [题目链接]Gone Fishing [题目类型]贪心 &题解: 这题要先想到枚举走过的湖,之后才可以贪心,我就没想到这,就不知道怎么贪心 = = 之后在枚举每个湖的 ...

  5. c#基础思维导图

  6. C# 对数据库操作的帮助类SQLHelper.cs

    using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...

  7. Bootstrap-全局样式的文本颜色和背景颜色

    .text-五种颜色   文本颜色.text-info文本浅蓝颜色-提示.text-warning文本黄色-警告颜色.text-success文本绿色-成功颜色.text-primary文本深蓝色-警 ...

  8. linux文件目录管理命令

    1.touch命令 touch命令用于创建空白文件或设置文件的时间,格式为“touch [选项] [文件]”. touch test命令可以创建出一个名为test的空白文本文件  touch命令的参数 ...

  9. js切换背景颜色

    我将全部的代码上传到了github,你可以下载查看 <!-------change the background color--------------> <script> f ...

  10. html5 手机端 通讯录 touch 效果

    不说那么多直接上代码. <html> <head> <meta http-equiv="Content-Type" content="tex ...