Monday, 7 July 2008

snapshot too old

.increasing undo retention is one method.

.array fetching out the table names (making the query run for a short time) is another.

.using gather schema stats is (easiest) another..
.From Oracle metalink, Oracle suggested to prevent ORA-01555 due to delayed block cleanout, you
can use select count(*) from table to force the block cleanout.

use operations that can bypass undo:

truncate
insert /*+ append */
disable indexes, rebuild afterwards

--------
More simply put:

o at the beginning of your transaction you removed a row from block #1.

o you commit - allowing the undo that protected this modification to be overwritten.

o you in fact DO overwrite that undo - as the rollback segment wraps around.

o later you need to REVISIT block #1, but you cannot as the undo you need has been overwritten BY
YOU

No comments: