Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re:Snapshot too old

Re:Snapshot too old

From: <Rajesh.Rao_at_jpmchase.com>
Date: Tue, 07 Jan 2003 14:21:15 -0800
Message-ID: <F001.00529381.20030107142115@fatcity.com>

Headed for home. So, in short, theres delayed block counts, which could be responsible too.

Raj

                                                                                                                    
                    dgoulet_at_vicr.                                                                                   
                    com                  To:     Multiple recipients of list ORACLE-L <ORACLE-L_at_fatcity.com>        
                    Sent by:             cc:                                                                        
                    root_at_fatcity.        Subject:     Re:Snapshot too old                                           
                    com                                                                                             
                                                                                                                    
                                                                                                                    
                    January 07,                                                                                     
                    2003 04:05 PM                                                                                   
                    Please                                                                                          
                    respond to                                                                                      
                    ORACLE-L                                                                                        
                                                                                                                    
                                                                                                                    




Patrick,

    Chasing down the culprit of a randomly happening ORA-1555 can be a true pain
in the ^%%.

    First thing to check is if you have a commit happening across a cursor.

This little jewel happens when the duhveloper decided that he needed a cursor to
retrieve some data from a table and then does some sporadic updates on the same
table and commits the action. A lot of other database will then invalidate the
cursor, similarly to what happens with a cursor that has the "for update" clause, but Oracle allows one to do that with a normal cursor without closing
and reopening. The end result are some intermittent ORA-1555's. One solution
to that, if possible, is to add an order by or group by to the cursor's statement which forces Oracle to create a temp table. The other solution is to
not do that.

    Second thing is to look around and see if some one else is running a bulk
data load/update/delete. Many more times than I care to remember I have found
that long running jobs fail with an intermittent ORA-1555 not because of anything their doing, but what someone else is doing in the database at the same
time. This is a hard one to find and a harder one to fix since the duhveloper
who creates the offending job does not see the error.

    Lots of luck!!

Dick Goulet

____________________Reply Separator____________________
Author: "Patrick Van der Sande" <patrick.van.der.sande_at_skynet.be>
Date:       1/7/2003 12:14 PM

Dear,

Since a few weeks I am tuning a big conversion batch written in PL/SQL
(millions of lines of code split over 7 batches)
When the job is running, certain batches stop with ORA-1555 : Snapshot too old. Other batches run well till the end.

Bizarre is that not always the same job stops.

When I do a trace I see nothing. With a normal trace I am pretty sure that I will never see it.
Rollback segments are rarely used. So making the rollbacks bigger or smaller is not the solution.
They also tried to change the commit rate. That was not the solution.

When I modified the optimal size to NULL value to avoid shrinking and cached 3 heavily used sequences some runs went all the way but since a week it stops again with the same annoying error.

After that I put an event in the init.ora file : event = "1555 trace name processstate forever, level 10"
A trace file was generated but I could not find the error in the trace file.
I am pretty sure that Oracle just dumps all open cursors in a file. Since there are 100 of cursors opened I do not have a clue which one is provoking the error.

I already looked at the batches and I have identified in 5 of them a "fetch across commit".
Still they have the error. But in the 2 remaining I can not find this.(surely the 2 biggest ones, nice !)

So my question is :

How can I know where in the code the error is generated ? Must I change the definition of the event ? (I know there are other options but I can not find them right away) Should I use DBMS_PROFILER ? (it generates massive files !) Must they write exceptions everywhere in their code ?

Can somebody help me ?

Please do not send me an explanation of the "snapshot too old" error. I wake up with it and I go asleep with it.

Patrick

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: 
  INET: Rajesh.Rao_at_jpmchase.com

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: 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 Tue Jan 07 2003 - 16:21:15 CST

Original text of this message

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