暂无图片
Oracle的ORA-01555:snapshot too old错误
我来答
分享
三阳
2023-01-02
Oracle的ORA-01555:snapshot too old错误

Oracle的ORA-01555:snapshot too old错误

我来答
添加附件
收藏
分享
问题补充
8条回答
默认
最新

导致这个错误的一个原因:提交得太过频繁。ORA-01555与数据破坏或数据丢失毫无关系,它算得上是一个“安全”的错误,唯一的影响是:收到这个错误的查询无法继续处理。

这个错误实际上很简单,只有三个原因:

(1)undo段太小,不足以支撑系统上执行的工作;

(2)程序跨commit获取数据;

(3)块清除。

给出如下解决方案:

(1)首先,保证使用的事务“大小适当”,确保没有过于频繁的提交。

(2)加载完数据之后,使用DBMS_STATS扫描相关的对象从而完成对这些对象的清理。由于块清除是极大量的UPDATE和INSERT造成的,所以请务必在这些操作完成之后对表进行分析。

(3)允许undo表空间扩大,为之留出扩展的空间,并增加undo保持时间。

暂无图片 评论
暂无图片 有用 2
打赏 0
暂无图片
zy
2023-01-03
打卡学习了打卡学习了打卡学习了
鸿惊九天

如果一个查询需要使用被覆盖的回滚段构造前镜像实现一致性读,那么此时就会出现Oracle著名的ORA-01555错误。

ORA-01555错误的另外一个原因是因为延迟块清除(Delayed Block Cleanout)。当一个查询触发延迟块清除时,Oracle需要去查询回滚段获得该事务的提交SCN,如果事务的前镜像信息已经被覆盖,并且查询SCN也小于回滚段中记录的最小提交SCN,那么Oracle将无从判断查询SCN和事务提交SCN的大小,此时出现延迟块清除导致的ORA-01555错误。

暂无图片 评论
暂无图片 有用 1
打赏 0
szrsu
暂无图片

–设置UNDO自动调优,它会使的UNDO长期得不到释放
alter system set “_undo_autotune” = false scope=spfile;

–调整undo_retention保留时间
sql> alter system set undo_retention=7200; 调整为2个小时。

暂无图片 评论
暂无图片 有用 1
打赏 0
猫瞳映月
2023-01-02
感觉设置这个治标不治本,还是得把代码找出来分析一下根本原因才行
伊伊相印

如果一个查询需要使用被覆盖的回滚段构造前镜像实现一致性读,那么此时就会出现Oracle著名的ORA-01555错误。

ORA-01555错误的另外一个原因是因为延迟块清除(Delayed Block Cleanout)。当一个查询触发延迟块清除时,Oracle需要去查询回滚段获得该事务的提交SCN,如果事务的前镜像信息已经被覆盖,并且查询SCN也小于回滚段中记录的最小提交SCN,那么Oracle将无从判断查询SCN和事务提交SCN的大小,此时出现延迟块清除导致的ORA-01555错误。


–设置UNDO自动调优,它会使的UNDO长期得不到释放
alter system set “_undo_autotune” = false scope=spfile;

–调整undo_retention保留时间
sql> alter system set undo_retention=7200; 调整为2个小时。

暂无图片 评论
暂无图片 有用 0
打赏 0
猫瞳映月

ORA-1555错的根本原因是因为oracle要保证读一致性。
解决方法就不说了,楼上各位大神都写出来了

暂无图片 评论
暂无图片 有用 0
打赏 0
Thomas

网友“山”的回答:首先,保证使用的事务“大小适当”,确保没有过于频繁的提交。 为何提交过于频繁会导致这个错误,能否举例解释下。我至今没想明白。

暂无图片 评论
暂无图片 有用 1
打赏 0
游湖
2023-01-03
首先,保证使用的事务“大小适当”,确保没有过于频繁的提交。 为何提交过于频繁会导致这个错误,能否举例解释下。我至今没想明白。
游湖

导致这个错误的一个原因:提交得太过频繁。ORA-01555与数据破坏或数据丢失毫无关系,它算得上是一个“安全”的错误,唯一的影响是:收到这个错误的查询无法继续处理。

这个错误实际上很简单,只有三个原因:

(1)undo段太小,不足以支撑系统上执行的工作;

(2)程序跨commit获取数据;

(3)块清除。

给出如下解决方案:

(1)首先,保证使用的事务“大小适当”,确保没有过于频繁的提交。

(2)加载完数据之后,使用DBMS_STATS扫描相关的对象从而完成对这些对象的清理。由于块清除是极大量的UPDATE和INSERT造成的,所以请务必在这些操作完成之后对表进行分析。

(3)允许undo表空间扩大,为之留出扩展的空间,并增加undo保持时间。

暂无图片 评论
暂无图片 有用 6
打赏 0
lelepapa
2023-01-03
允许undo表空间扩大,为之留出扩展的空间,并增加undo保持时间。
H

允许undo表空间扩大,为之留出扩展的空间,并增加undo保持时间。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏