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 -> Why create a new extent in rollback segment when the next is used and the one after that is free

Why create a new extent in rollback segment when the next is used and the one after that is free

From: ErikYkema <erik.ykema_at_xs4all.nl>
Date: 19 Oct 2005 13:43:13 -0700
Message-ID: <1129754593.612183.132770@z14g2000cwz.googlegroups.com>


I am trying to understand the nature of the rollback extent allocation mechanism.
See also:

*

http://groups.google.com/group/comp.databases.oracle.server/browse_thread/thread/5e03d4ec3b2e3e23/e017bf61cb88d7c8?lnk=st&q=oracle+next+extent+rollback+segment+deallocate+ora-01555&rnum=1#e017bf61cb88d7c8

I am particularly puzzled by the mechanism, as I understand it, that a transaction that needs a new extent, will try the next already allocated extent and if it is in use by an uncommitted transaction, it will allocate a new extent (if possible). This seems to be the basis for the 100%-proof prevention of ORA-01555 as laid out by Steve Adams in the afore mentioned page (unless maxextents is hit). But his statement " Note further that for those blocks to be unavailable by virtue of extent reuse, all extents in that rollback segment must have been used at least once since the snapshot SCN. This is why the error message suggests that the rollback segment is too small." is puzzling me. How is this statement logically derived from the available documentation, and why is it like that.

Why is the mechanism not as follows: try the next allocated extent, if it is in use, try the next allocted extent after that etc. and if there is really no free allocated extent free, only then allocate a new extent. This could be easily facilitated by some bitmap structure in the rollback tablespace 'header' or however this might be properly called.

Have I misunderstood Oracle's implementation of the rollback extent allocation and reuse mechanism, and if not, why is it not implemented as I have described in the before paragraph. Is it because in this way, also a very recently committed transaction's rollback extents might become reused, and chances for succesfull read consistency are highly reduced?

I have studied several references, but are stuck here. Thanks for enlightening me.
Erik Ykema Received on Wed Oct 19 2005 - 15:43:13 CDT

Original text of this message

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