Oracle: free buffer wait

Data Block Cache lack free buffers
Tune by
Increase data blocks
Try to tune DBWR
If no ASYNC use I/O Slaves (dbwr_io_slaves)
Multiple DBWR (db_writer_processes)
Direct I/O
Improving Inefficient SQL 
requesting large # of blocks

Finding a Free Block:

If the data block isn’t in cache 
    • Get a free block and header in the buffer cache
    • Read it off disk
    • Update the free  header
    • Read the block into the buffer cache

Need Free Block to Read in New Data Block


Cool blog by Jonathan Lewis where free buffer waits were happening because of using the KEEP pool and Oracle putting CR blocks in the RECYCLE pool but the recycle pool was too small and too many buffers pinned: