Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: Differences between Undo and Rollback Segments?

Re: Differences between Undo and Rollback Segments?

From: Howard J. Rogers <howardjr2000_at_yahoo.com.au>
Date: Fri, 20 Dec 2002 13:53:38 +1100
Message-ID: <DtvM9.6748$jM5.18993@newsfeeds.bigpond.com>


There is absolutely, positively no architectural difference between rollback and undo segments, apart from a name change occasioned by the marketing department (and one or two minor differences that I'll come to, just in case Richard Foote wants to correct something in the near future).

The difference is simply that one talks of 'undo segments' when using automatic undo (as introduced in 9i), and 'rollback segments' when using manual allocation and management methods.

Automatic undo, however, uses boring old rollback segments with funny names. And they work almost exactly as genuine rollback segments always did (sharing extents allowed, no sharing of blocks, cyclical re-use, 1555s if required rollback/undo not available to construct a read-consistent image etc etc etc).

The only discernible differences in architecture are that (1) with automatic undo, a rollback segment can pinch unused extents from another, idle, rollback segment rather than declare an out-of-space error. Marketing decided to call this 'extent stealing', which is fine if you like that sort of thing. And (2) the transaction allocation policy changed slightly. With ye olde methods, Oracle assigned your transaction to the rollback segment with the fewest number of active transactions. With sexie newe methods, Oracle prefers to create new rollback segments for each transactions, until it reaches a number of rollback segments where it feels happy to let transactions start sharing them... at which point it reverts to the 'fewest number of transactions' algorithm.

Someone is bound to mention 'undo retention'. That's not an architectural change per se. It simply means that the old rule whereby the rollback segment's tail pointer was updated at the moment of commit is modified so that it is only updated when the timeout specified by undo_retention is reached. That's an artifice of kernel code, not an architectural change to the rollback segments themselves, however.

And all of the above explains why there is (generally) bugger-all performance worries in going to automatic undo in 9i over traditional manually-managed rollback segments: because, underneath the glitz and glamour of the marketing-induced name-change, there's sod-all difference in the architecture either way.

Regards
HJR "dunesky" <dunesky_at_somewhere.com> wrote in message news:3e02617b$1_at_news.userve.net...
> What's the best way to describe the differences between Undo and Rollback
> segments?
>
> Why did Oracle replace Rollback Segments in version 9. I know it's still
> there but they don't recommend using them.
>
> Thx
>
>
Received on Thu Dec 19 2002 - 20:53:38 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US