Oracle 等待事件之 free buffer waits

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 等待事件之 free buffer waits相关的知识,希望对你有一定的参考价值。

free buffer waits

官网解释:

    This wait event indicates that a server process was unable to find a free buffer and has posted the database writer to make free buffers by writing out dirty buffers. A dirty buffer is a buffer whose contents have been modified. Dirty buffers are freed for reuse when DBWR has written the blocks to disk.


解释:

   此等待事件表示服务器进程无法找到可用的buffer,并通过写出脏buffer来创建空闲缓冲区。

脏buffer指的的那些内容被修改的块儿,当DBWR将块写入磁盘时,可以释放脏的缓冲区以供重用。


Causes:   

DBWR may not be keeping up with writing dirty buffers in the following situations:

  • The I/O system is slow.

  • There are resources it is waiting for, such as latches.

  • The buffer cache is so small that DBWR spends most of its time cleaning out buffers for server processes.

  • The buffer cache is so big that one DBWR process is not enough to free enough buffers in the cache to satisfy requests.

Actions:

    If this event occurs frequently, then examine the session waits for DBWR to see whether there is anything delaying DBWR.

    如果此事件频繁发生,则检查会话是否等待DBWR查看是否有任何延迟DBWR。


解释:

当一个会话将数据块从磁盘读到内存中时,它需要找到空闲的内存空间来存放这些数据块,
当内存中没有空闲的空间时,就会产生这个等待;
会话在做一致性读时,需要构造数据块在某个时刻的前映像(
image),
此时需要申请内存来存放这些新构造的数据块,但内存中无法找到这样的可用内存块。
当数据库中出现比较严重的
free buffer waits 等待事件时,可能的原因是:

(1)database buffer cache 太小,

(2)导致空闲空间不够,比如内存中的脏数据太多, DBWR 无法及时将这些脏数据写到磁盘中以释放空间



本文出自 “Linux Oracle MariaDB” 博客,请务必保留此出处http://wangergui.blog.51cto.com/8504247/1912951

以上是关于Oracle 等待事件之 free buffer waits的主要内容,如果未能解决你的问题,请参考以下文章

log buffer space事件(转)

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

Oracle 等待事件之 db file scattered read

Oracle 等待事件之 db file sequential read

Oracle 等待事件之 db file parallel read

Oracle等待事件之db file scattered read