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 :)
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 (See ORA-1555.ora-code.com) error, and see if it can be tuned to not run so long. The log will also show how long the query ran before getting ORA-1555 (See ORA-1555.ora-code.com) error.
HTH,
- Kirti
--- Roger Xu <roger_xu@(protected)> wrote:
> 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. > > "ORA-01555 (See ORA-01555.ora-code.com): snapshot too old: rollback segment number 11 with name "_SYSSMU11 $" too > small" > > 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? > > > > Thanks, > > Roger Xu > >
__ ____ ____ ____ ____ ____ ______ Yahoo! Mail - PC Magazine Editors' Choice 2005 http://mail.yahoo.com -- http://www.freelists.org/webpage/oracle-l