Oracle FAQ Your Portal to the Oracle Knowledge Grid

Home -> Community -> Usenet -> c.d.o.server -> Re: What's in a Rollback Segment?

Re: What's in a Rollback Segment?

From: Richard Foote <>
Date: Mon, 22 Jul 2002 17:00:55 +1000
Message-ID: <P_N_8.41010$>

Hi Ricky (cool name :)

I think Howard was trying to provide the "simplified" answer and not get too deep into all this undo stuff (this is good, when he gets on a roll, there's no stopping him !! :)

You're of course right in your description. One thing I've noted having taught this stuff for years is how many don't understand the importance of tracking the changes that Oracle makes to the data/index block headers (such as the transaction slots etc.). The ability for Oracle to perform consistent reads on blocks that have had multiple changes (and peel back the "undo onion" as I call it) is dependent on all this other information being stored in the undo segments.

There's a fair bit to these mammas.



"Ricky Sanchez" <> wrote in message
> A couple of minor corrections.
> Oracle stores logical representations of the physical changes to a block
> in the form of "undo vectors". Basically they are logical records
> describing bytes and offsets of change within the block. Sometimes a row
> insert, delete or modification can cause some shuffling of other row or
> index key or cluster or whatever data in a block, so all changes to the
> byte image of a block get represented. I only point this out because it
> might be misleading to suggest a column or row is stored, per se.
> Really, it is just a logical description of byte level changes to a
> block, cobbled up in an orderly "record" form. Conceptually similar to
> the notion of a redo record, only undo instead of redo. This is called
> "physiological logging" and is described in Jim Gray and Andreas
> Reuter's "Transaction Processing: Concepts and Techniques".
> Furthermore, block cache and transaction layer changes also take place,
> so all that stuff gets "vectored" as well. In addition, undo to the
> rollback segment itself gets written, plus changes to the rollback
> segment header block (transaction table) have to be tracked in the
> rollback segment, albeit in different blocks than the target object
> blocks. As you might imagine, rollback is a bunch of work, so try not to
> do it too often. ;-)
> Also, the reuse of a rollback segment block is limited to situations
> where at least several hundred bytes are still available. There is a
> specific number of bytes that limit this, but the precise value is not
> important. Just know that some space conservation takes place when the
> opportunity presents itself.
> - ricky
> >
> > Didn't want to get complicated at this stage, but just answer the
> > as posed about 'whole block-whole row or just-column'.
> >
> > Regards
> > HJR
> >
Received on Mon Jul 22 2002 - 02:00:55 CDT

Original text of this message