Sure, if disk space is not an issue for the undo tablespace, you can increase the
undo_retention to whatever you want up to the max 2^32 - 1 seconds, or over 136 years :)
Yes, that is one of the choices to attempt to minimize ORA-1555
You can also find out the time for your longest running query:
select max(maxquerylen) seconds from v$undostat;
Setting undo_retention to more than this value should suffice.
There are no drawbacks in setting undo_retention to a large value. If you have ample undo
space, Oracle will try not to overwrite committed data in undo segments, but again, if it
needs the undo space to keep other transactions alive it will simply ignore the
undo_retention setting and use the space.
Actually, you should look in alert log to get the SQL that got ORA-1555
error, and see if
it can be tuned to not run so long. The log will also show how long the query ran before
--- Roger Xu <roger_xu@(protected):
> Hi List,
> Background: Oracle 9.2.0 w/ Auto Undo Management
> We have a huge table and it takes more than 24 hours to collect its statistics.
> But the undo_retention is set to 864000 i.e. 24 hours. As a result we see the following
> a lot.
: snapshot too old: rollback segment number 11 with name "_SYSSMU11$" too
> Since we have lots of space in the undo tablespace, I am thinking of increasing
> undo_retention to 36 hours
> via "ALTER SYSTEM SET UNDO_RETENTION = 129600;"
> Is this my only choice?
> What are the drawbacks to have a large undo_retention value assuming we never run out
> undo tablespace?
> Roger Xu
Yahoo! Mail - PC Magazine Editors' Choice 2005