Here’s something that used to make my head spin a bit… A quick quiz: does undo generate redo? does redo generate undo?
When I heard that undo generated redo, it sent me for a loop. Undo is stored in the system tablespace (undo segments), as regular data, and therefore generated redo. Then I thought, OK, would redo generate undo? If so, we’re obviously in a vicious cycle. So, no. Why?
We need redo for undo so that if there is a crash, and some data has (have) been written to disk but not committed, and the undo wasn’t yet written to disk, we can recreate it from the redo, then use it to undo the uncommitted but written data. (Corrections if I’m inaccurate, please. This is all from my head only.)
We don’t need undo for redo – if there is a crash, and a transaction was not fully completed, we need the undo to roll it back. And[Read more...]