|
|
Re: 因为
最初由 biti_rainy 发布
[B]当某个查询a开始之后
这个时候b更新了a将可能查询的数据,然后b提交了事务
然后这个时候因为c的事务,这个时候去使用了b曾经使用过的回滚段数据块,于是原先的数据消失(造成这样的原因是因为回滚段轮循使用了一圈)
或者因为optimal收缩的缘故导致数据丢失
这个时候查询a才扫描到该数据块,在buffer cache中发现数据已经被更改过,于是去回滚段中找 before image,但是却发现数据已经被覆盖了!
于是就出了ora-1555 snapshot too old 错误
undo_rention:是决定事务结束后继续保持一段数据的时间 [/B]
提出疑议,我刚做了一个查询,从一张很多数据量的表中一个分区查询,而对此分区的无任何修改和插入操作,可长时间查询不到,报出ora-1555 snapshot too old 错误。不知biti能否给以解释。 |
|