Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> snapshot to old again
I'm sure this topic has been beaten to death on this group but hopefully
a few people won't mind beating it some more. I created a very large 1G
rollback segment for a very large data load and the writter of the code
received a snapshot too old message after about half
an hour. The high water mark on the rollback segment was 300M. (It had
unlimited extents). So, to my understanding, this can only mean that
the data load code (2 pieces of code were kicked off at once),
referenced the same table from two different procedures.
My comprehension is as follows.
a) no read locks in oracle
so -
b) transaction 1 begins and starts a read-consistent rollback image of
how every many gazillion rows there are.
c) transaction 2 also (smaller transaction) begins on to do the same
thing on a smaller scale, but because of a lock, it waits for the first
transaction to finish.
d) transaction 1 commits, thereby rendering the "before" image in
transaction 2's rollback
extents futile.
e) snapshot error.
Is this correct?
Secondly, if someone has the time - this is a quote from an Oracle book handed out in their DBA class.
<<begin quote>>
If the Oracle server cannot construct a read-consistent image of data,
the user will receive an ORA-01555 SNAPSHOT TO OLD error. This error
can occur when the transaction that made the change has already commited
and:
If my understanding above is correct, I assume that #2 applies, in that
transaction 2's redo image is not literally overwritten but something
indicates that is is now out of synch.
Is this correct?
And finally, what causes #1? What would cause a transaction slot in the rollback header to be re-used inappropriately I guess. I don't quite follow #1.
Have at it folks
I really appreciate this group. There are many of you out there who are
EXTREMELY
helpful.
![]() |
![]() |