The 'Snapshot too old' is an oracle problem not a connect problem.
Basically, Oracle has committed a lot of data while your query is
running and your query gets an error trying to access one of the records
that was updated.  About the only thing that I have found that can be
done in the application is to make sure your query runs as fast as
possible, a WHERE NOT EXISTS is not typically a very fast operation in
Oracle from my experience.  I would recommend tuning your query to run
as fast as possible and/or trying to get some changes to the Oracle
database at the DBA level.

Here's a web site that explains the snapshot problem: 
http://home.clara.net/dwotton/dba/snapshot.htm

>From this page:
"Common recommendations to reduce the possibility of "snapshot too old"
are: 


-Increase the size/number of rollback segments 
-Do not specify an OPTIMAL size for your rollback segments. 
-Avoid executing long-running queries when transactions which update the
table are also executing. 
"

-----Original Message-----
From: Frank Newland [mailto:[EMAIL PROTECTED]]
Sent: Friday, March 15, 2002 10:40 AM
To: [EMAIL PROTECTED]
Subject: dbh connect


Are there any  $dbh->connect  statements I can use to prevent the
following
error message. 


"ORA-01555: snapshot too old:
rollback segment number 19
with name "R20" too small

I'm running a simple 'Where not exists' against an Oracle table of
4Million
records.

my current $dbh->connect reads as follows

$dbh = DBI->connect (
           "dbi:Oracle:$oracle_sid", $db_user, $db_password,
           {PrintError => 0, AutoCommit => 0}
            )  || die "Failed to connect "  ; 

Thanks,

Frank


Reply via email to