Why does database advance the checkpoint? Aman told in last post that Oracle did not advance the checkpoint due to SCN generation/updates so it is due to other reasons? What is the relation to this with buffer writes with the advance of checkpoint?
Hope now my doubt is clear to all.
The reason that Oracle doesn't increase teh checkpoint marker in the data files at the time of the commit( the event which finally generates/increments the SCN) is because Checkpoint is basically meant like a signs on the road when you are traveling from place A to place B. By looking at those signs, you would be knowingthat from the total distance how much you have already traveled and how much is left still. So checkpoint position in the data file headers basically tells to Oracle that from where they need to start doing the recovery of this file if there is any instant of the database instance crash. So in a very simplified example, if your data files were at checkpoint position 100 and your redo logs and control files were at checkpoint position 200, that means, you would need to recover those missing 100 checkpoint numbers from the redo log file that's required for those transactions. The SCN is incremented with a commit and since with commit, DBWR does not go and start writing in the datafiles, that's the reason that the checkpoint is not incremented in the datafile headers with a commit.
I believe the answer from Joanathan Lewis clearly explains the entire thing in an awesome manner! Have a read (and re-read) it !