I thought I understood all about this however, I've been asked a question and I'm having problems putting the answer into words.

My database is working normally, the logs are switching and I am doing full Checkpoint events at every log switch, this is causing DBWR to write all the dirty blocks covered by the last log down to the datafile (this might include committed and uncommitted transactions).

I only instance recover anything which has not previously been written to disk - so in the event of an instance failure in my scenario when checkpoints are only happening on log switches (FASTSTART_MTTR_TARGET isn't set) I need to recover through my current online redo log file.

But what if a previous checkpoint has caused DBWR to write dirty blocks from an uncommitted transaction to disk - I have then, through switching overwritten this redo log file (noarchivelog) how can I this uncommitted transaction be rolled back if I no longer have a record of it in my redo log file.

I know that you never need a previous redo log file for instance recovery and that this wouldn't be a problem - I just can't think why!!! How does oracle rollback an uncommitted transaction during instance recovery if I don't have a record of it in my redo.

Hope this is making sense, because it's making my head sore!!

A