So far in the series of Oracle storage wait events we have covered several common events such as “db file sequential read”, “db file scattered read” wait events, direct path read and Direct path Read/Write temp. In this post, I will describe another wait event that in many cases is caused by weak storage performance.
Free buffer wait occurs when a user session reads a block from the disk and cannot find a free block in the buffer cache to place it in. This event can be caused by inappropriate Oracle setting (such as buffer cache size is too small for the load running on the system) or the DBWR (Database Writer) is unable to keep up with writing dirty blocks to the disks, freeing the buffer cache. In cases where free buffer wait is one of the dominant wait event, it is recommended to examine the disk performance (using iostat, perfmon etc.) and pay special attention to the performance of small random writes.
The following diagram illustrates an Oracle shadow processes that cannot find a free buffer in the buffer cache while the DBWR struggle to write dirty buffers to the disk: