最近,我们有台服务器在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;

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

最新文章

  1. 第 31 章 项目实战-PC 端固定布局[3]
  2. MYSQL权限回收
  3. android service 如何弹出dialog
  4. NSIS学习记录の----NSIS插件调用
  5. VIM中文乱码
  6. B - 畅通工程(并查集)
  7. CastleWindsor 使用说明
  8. jmeter压力测试笔记- HTTP协议
  9. Testng基本问题
  10. MySql 版本
  11. day12-(jsp&el&jstl)
  12. centos7如何使用yum命令
  13. 如何构造树状 JSON 数据 JSON-Tree
  14. Zookeeper 重连机制
  15. Nginx配置项优化(转载)
  16. Weblogic在Linux下启动特别慢及进入控制台慢的解决方法
  17. [py]python的私有变量
  18. linux中批量替换文本中字符串--转载
  19. 100+torch的基础操作
  20. Goroutine并发调度模型深度解析之手撸一个协程池

热门文章

  1. c# 利用MailKit.IMap 收取163邮件
  2. Linux学习笔记:常用100条命令(一)
  3. 数据分析与挖掘 - R语言:多元线性回归
  4. .NET拾忆:FormData文件上传
  5. android逆向四则运算
  6. Cocos Creator 为Button添加事件的两种方法
  7. phpstudy的使用
  8. PB窗体之间进行传递参数
  9. uvm设计分析——tlm
  10. 读取文件任意位置的内容——RandomAccessFile