Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Solution for 01555
I've been reading up on Oracle lately and find their multi-version
concurrency model very intruiging. One of the downsides of this model,
though, seems to be the dreaded "01555 snapshot too old" error. It seems to
me that this something Oracle should have handled this problem internally so
that users never get that error. I would propose something like this:
Let's say we are about to overwrite some undo data.
1) Get the SCN of block whose data we're about to overwrite in the rollback
segment.
2) Compare to SCN of oldest active transaction.
3) If smaller, OK to overwrite. Otherwise, cannot overwrite. Must expand
rollback segment and continue writing there.
I would think that data needed for an active transaction's read consistent view should be just as holy as undo data that is need to rollback an uncommitted transaction. Don't touch it until you make sure no user will ever need it. Why couldn't something like this be done to avoid all the grief about "snapshot too old"? Received on Tue Jan 21 2003 - 01:55:36 CST