Oracle FAQ Your Portal to the Oracle Knowledge Grid

Home -> Community -> Mailing Lists -> Oracle-L -> RE: Strange snapshot too old during a select statement

RE: Strange snapshot too old during a select statement

From: Justin Cave (DDBC) <>
Date: Thu, 11 Mar 2004 01:59:17 -0700
Message-ID: <87E9F113CEF1D211A4C3009027301874195D32@ddbcinc.ddbc.local>

I'll wager that what is happening is the following:  

  1. Your long SELECT starts and the system notes that the system change number (SCN) is x
  2. Another transaction comes along and updates a row. The current version of the row has a SCN of x+1. The old version of the row, the one from SCN x, is stored in the rollback segments (or UNDO)
  3. At some point, your SELECT needs to read this block as of SCN x, so it has to visit the rollback segment to get the old version of the data.
  4. When Oracle visits the rollback segment, it finds that the data has been overwritten. Since Oracle cannot reconstruct a picture of the data at SCN x, it throws the ORA-01555 error.

If you were using UNDO, this would be a bit easier to deal with-you would set the undo retention time to the length of your query and ensure that you throw enough disk in to handle the UNDO generation for that amount of time. When you're dealing with rollback segments, though, you have to figure out why the data is no longer available when the query wants it. You may have too few rollback segments, you may have rollback segments whose OPTIMAL values are too small, your rollback segment size may be too small.  

Justin Cave

Distributed Database Consulting, Inc.  

From: [] On Behalf Of NGUYEN Philippe (Cetelem) Sent: Thursday, March 11, 2004 1:46 AM
To: ''
Subject: Strange snapshot too old during a select statement Importance: High  

Hi list!
we encounter a very strange "ORA-01555 : snapshot too old :rollback segment number 3 with name "_SYSSMU3$" too small" This is a very long query
With a query that only make a select statement. We have open a TAR with Oracle Support but they say that it's not possible since this only a "select" statement ?!! Any idea ?


Please see the official ORACLE-L FAQ:

To unsubscribe send email to: put 'unsubscribe' in the subject line.

Archives are at FAQ is at
Received on Thu Mar 11 2004 - 02:53:49 CST

Original text of this message