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: [EMAIL PROTECTED]
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: [EMAIL PROTECTED]

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: [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).
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: 
  INET: [EMAIL PROTECTED]

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: [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).

Reply via email to