DBWR writes dirty buffers to files when one of the following occurs.
- dirty list reaches a threshold value.
- A process scans a specified number of blocks in LRU list but doesn't find a free block.
- a time-out occurs.
- a checkpoint occurs.
So, a checkpoint forces DBWR to write dirty blocks to datafile BUT writing of dirty blocks to datafile in other scenarios doesn't force any checkpoint.
HTH
Sanjay G.
Oracle Certified Professional 8i, 9i.
"The degree of normality in a database is inversely proportional to that of its DBA"