Hi,

Before going into recovery first you should understand how Oracle writes information whenever a transaction occurs.

When a transaction occurs(insert or update or delete) Oracle writes the new information in the database buffer cache and the 'old' information is stored in Rollback Segment for read-consistency.

Oracle says that whenever a block undergoes changes it stores the minimal amount of information necessary for 'redo' in the logfiles. So, it stores the data block(in the buffer cache), the command and the rollback block in the logfiles.

Since Oracle writes all the information into the logfiles sequentially it does not know whether a transaction is committed or not. So, when a transaction gets committed it assigns a 'commit' scn and updates the header of rollback segment's transaction table. This information is also stored in the 'redo' logfile.

When Oracle does the recovery, it writes all the action happened when the transaction occurred. un-committed informations will be rolled back.

HTH.

Vijay.