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: Problem with SET TRANSACTION USE ROLLBACK SEGMENT

Re: Problem with SET TRANSACTION USE ROLLBACK SEGMENT

From: DA Morgan <damorgan_at_x.washington.edu>
Date: Fri, 31 Dec 2004 12:16:02 -0800
Message-ID: <41d5b265_1@127.0.0.1>


Holger Marzen wrote:

> Oracle 8i / Solaris SPARC
>
> We gather statistics about the tables with a pl/sql script that looks
> like
>
> |for lrec_Table in lcur_Tables
> |loop
> | dbms_stats.gather_table_stats(...)
> |end loop;
>
> But sometimes it crashed, probably due to heavy activity of the
> database (ORA-01555: snapshot too old). So I created a very big rollback
> segment and told Oracle to use it:
>
> |SET TRANSACTION USE ROLLBACK SEGMENT RBSBIG1;
> |@/export/home/oracle/scripts/stats_gather.sql;
>
> What I don't understand is the fact that it still crashes sometimes with
>
> |ORA-01555: snapshot too old: rollback segment number 29 with name
> |"RBS17" too small
>
> Why does Oracle use RBS17 (a small one) and not RBSBIG1? RBSBIG1 is
> definitvely online.
>
> Any ideas?

SET TRANSACTION is generally a bad solution to any problem. There is, for one thing, nothing to prevent another transaction from grabbing that segment first.

Resize all segemnts or, better yet, upgrade to a currently supported version of Oracle (8i has less than 12 hours left in my timezone) and use UNDO.

-- 
Daniel A. Morgan
University of Washington
damorgan_at_x.washington.edu
(replace 'x' with 'u' to respond)
Received on Fri Dec 31 2004 - 14:16:02 CST

Original text of this message

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