In Oracle, when a block of data is updated, the old version of the block is
stored in what is known as a Rollback Segment. Rollback segments are now
called Undo Tablespaces in Oracle 9i but the two names refer to virtually the
same entity with slightly different management characteristics so for the
purposes of this paper we will refer to Rollback Segments or RBS. Note that
these rollback segments are not for crash recovery but rather they are for
transactional purposes. This means that, not only is the old block of data
stored in the rollback segment, but the undo and redo images of the changed
data are also stored in the redo logs for recovery purposes.
Each Oracle block (known as a page in DB2) has what is called a System
Change Number (SCN) associated with it. Logically you can think of this as
a timestamp for the data page to indicate the version of the page. So when a
row on a page is updated, the current version of the block with the current
SCN is copied into the rollback segment, then the data page is updated and
given a new SCN (which is stored in the block header).