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: multiple transaction in same extent of one rollback segment

Re: multiple transaction in same extent of one rollback segment

From: Howard J. Rogers <howardjr_at_www.com>
Date: Sun, 2 Sep 2001 10:35:35 +1000
Message-ID: <3b917dc3@news.iprimus.com.au>

"Yerong" <yhe_at_challengerint.com.au> wrote in message news:3fd9ab19.0108272231.6514db1b_at_posting.google.com...
> Hi,
> Multiple transaction can write to the same extent of a
> rollback segment. But can they do this at the same time?
>

Yes.

> I ask this question because according to the Oracle training
> manual:
> "when an extent in a rollback segment is filled up, the Oracle
> server attempts to reuse the next extent in the ring. But if
> this new extent contains one active entry, i.e. an entry
> that was written by a transaction that is still active, it can
> not be used, it need to allocate an addtional extent."
>

The problem there is not of sharing extents, but of wrapping around *into* an extent that is already active.

Basically, there are two pointers in the rollback segment header block: one, the Head POinter, points to the latest block of the most recent active transaction. It sweeps around the rollback segment as new transactions start. Then there is the Tail POinter, which points to the first block of the oldest active transaction. It moves around the rollback segment fairly erratically: it only advances when the oldest transaction commits or rolls back.

If you imagine an empty rollback segment just after Instance startup, both Head and Tail pointers will be located in the same extent, because there are no transactions, active or otherwise. As soon as transactions start, however, the Head pointer starts moving forward... but the Tail pointer stays put until people start committing their transactions (or rolling them back, of course).

The essential rule is that the Head pointer can't subsequently catch up with the Tail. If it threatens to do so, then new extents must be acquired instead. It will do so if you have a blocking transaction (one that refuses to commit or rollback), or if the segment is too small (transactions coming in 100 times faster than they commit, say; or if a single transaction is so huge that the segment can't contain all the redo without looping back on top of itself).

Until that point is reached, though, there is no problem with transactions sharing extents.

Regards
HJR
> Please advise.
>
> Thanks/yerong
Received on Sat Sep 01 2001 - 19:35:35 CDT

Original text of this message

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