Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Mailing Lists -> Oracle-L -> RE: Some rollback doubts
Thanks KG, for your reply. Well, it whets my appetite for more.
This surprises me. All the documentation I have read so far tells me that multiple transactions cannot be write to the same rollback segment data block.
My first question was basically "well, if many transactions can write to an extent, then when a transaction "wraps" around to the first extent, why does it not write to the first extent if it has another active transaction?". I sort of found an answer to this at asktom: "A transaction can be allocated space in an extent that is also used by other transactions. The prohibition against entering an extent that has active update transactions in it applies only when the extent boundaries are crossed". Now, why is this prohibited?
As to the free extent pool, when do blocks get assigned and deallocated from this free pool? No pctfree algorithm here??? And if Oracle always cycles back to the first extent after writing to the last, would this free extent pool always have a block belonging to the first extent in it? From your reply, I deduce that the answer to my second question is that , my transaction could get assigned to any block in the free extent pool. This block could belong to the 1st extent or the 20th extent. ???
The reasons for this questions are:
I have one huge rollback segment, with extents sized at 500M each, with a possible maximum of 22 extents. A batch job has been failing with an "Unable to extend rollback segment" error. I find that there are users executing select statements across a link when this batch job is running. This select takes a TX lock on the rollback segment, and uses 1 block of undo space. The users never commit or rollback this select transactions. So, if theres one user executing a select and using the first extent of the rollback segment, then if my batch job started with writing into the 21st extent, it would only have 2 extents to write to. Thats about 10 Gb of free space that cannot be used.
Regards
Raj
"K Gopalakrishnan To: Multiple recipients of list ORACLE-L <[EMAIL PROTECTED]> " cc: <[EMAIL PROTECTED] Subject: RE: Some rollback doubts o.com> Sent by: [EMAIL PROTECTED] ity.com 06/12/2003 01:55 PM Please respond to ORACLE-L
Rajesh:
I am not sure which document you are referring here. If that documentation says more than one transaction can not use a rollback segment data block means, I would say the documentation is incorrect in this case. But this can not happen concurrently. IT can happen serially.
Each rollback segment's header will have something called free extent pool,
which will link at least 5 undo segment blocks which have more than 400
bytes
of free space. These blocks will be used to store undo information for the
subsequent transactions. This 'free extent pool' will be clearly visible
in the segment header dumps.
You can dump the rollback segment header by using the alter system dump undo header 'undo_segment_name' command. However this free extent pool just keep 5 undo blocks with free space. I hope this answers both of your questions..
Best Regards,
K Gopalakrishnan
-----Original Message-----
[EMAIL PROTECTED]
Sent: Thursday, June 12, 2003 10:00 AM
To: Multiple recipients of list ORACLE-L
>From the docs : Many active transactions can write concurrently to a single
rollback segment--even the same extent of a rollback segment; however, each
data block in a rollback segment's extent can contain information for only
a single transaction.
Thanks
Raj
-- Please see the official ORACLE-L FAQ: http://www.orafaq.net -- Author: INET: [EMAIL PROTECTED] -- Please see the official ORACLE-L FAQ: http://www.orafaq.net -- Author: INET: [EMAIL PROTECTED] Fat City Network Services -- 858-538-5051 http://www.fatcity.com San Diego, California -- Mailing list and web hosting services --------------------------------------------------------------------- To REMOVE yourself from this mailing list, send an E-Mail message to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing).Received on Thu Jun 12 2003 - 13:47:12 CDT