Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Mailing Lists -> Oracle-L -> Re:Rollback Segments
Rollback segments are one of those PUBLIC assets that can be somewhat of a nightmare. While your running a simple select you may have interest in every rollback segment in the database because of the nature of these beasts. When a transaction modifies data the original copy of the row is held in a rollback segment so that the transaction can rollback (hence the name). The problem that occurs is when one transaction modifies a row in a table and your select statement is interested in that table. Then the data in the rollback segment MUST be held until whichever of you finishes LAST. This is how Oracle creates it's "read consistent view" of the data. Using the SET TRANSACTION command is really a holdback from Oracle6 where rollback segments just grew to whatever size was allowed. Most of us had one really large segment that we used for long running transactions that would modify a ton of data. Since Oracle7 and the 'optimal' setting on rollback segments I have not found a reason to use that particular set transaction command. The basics are pretty simple, run utlbstat/utlestat periodically on your DB looking at the shrinks and wraps for each rollback segment. Then resize the segments as needed to minimize, but not eliminate these.
Dick Goulet
____________________Reply Separator____________________ Author: Nixon_Villanueva_at_manulife.com Date: 5/9/2001 12:40 AM
Hi All,
Here is my environment;
NT v4
Db Oracle Workgroup v8.1.6
Rollback Segments
SEGMENT_NAME OWNER TABLESPACE_NAME ------------------------------ ------ ------------------------------ SYSTEM SYS SYSTEM RBS0 PUBLIC RBS RBS_P1 SYS RBS RBS_P2 SYS RBS RBS_P3 SYS RBS RBS_P4 SYS RBS RBS_P5 SYS RBS
Is it possible to assign one public rollback segment explicitly to one
particular transaction?
I tried using SET TRANSACTION USE ROLLBACK SEGMENT but other users I found out
can still use it. So, I guess
the best alternative is to set that RB segment to OFFLINE after using and set
ONLINE before executing the SET TRANSACTION ...
Do you know how it can be done inside Forms?
Thanks in advance!
--
Please see the official ORACLE-L FAQ: http://www.orafaq.com
--
Author:
INET: Nixon_Villanueva_at_manulife.com
Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 San Diego, California -- Public Internet access / Mailing Lists --------------------------------------------------------------------To REMOVE yourself from this mailing list, send an E-Mail message to: ListGuru_at_fatcity.com (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).
Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 San Diego, California -- Public Internet access / Mailing Lists --------------------------------------------------------------------To REMOVE yourself from this mailing list, send an E-Mail message to: ListGuru_at_fatcity.com (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 Wed May 09 2001 - 11:15:27 CDT