LOB字段处理:LOB(大对象)字段的撤销处理与普通数据有所不同,如果处理不当(如PCTVERSION或RETENTION设置不合理),也可能导致ORA-01555错误。 延迟块清除(Delayed Block Cleanout):在某些情况下,Oracle的延迟块清除机制可能导致无法准确判断查询SCN和事务提交SCN的先后关系,从而引发ORA-01555错误。 解决ORA-01555错误的常见...
从之前对ORA-01555错误的成因分析可以知道,这个ORA-01555错误,正是由于表上存在未清除的事务,同时导出时间过长,UNDO段头的事务表被全部重用,ORACLE在查询到有未清除事务的块时不能确定事务提交时间是否早于导出(查询)开始时间,这时候就报ORA-01555错误。 要解决这个错误,除了提高性能,那么从另一个角度来思考这个问题...
增加Undo空间:ORA-01555错误的一个常见原因是Undo段不足。可以通过增加Undo表空间的大小来解决这个问题。在Oracle中,可以使用ALTER TABLESPACE命令来增加Undo表空间的大小。 优化查询:减少查询的运行时间也是解决ORA-01555错误的有效方法。优化查询可以降低对Undo段的需求,从而减少出现ORA-01555错误的可能性。优化查询的方法...
1、UNDO段对于系统所运行的工作负荷太小; 2、在循环过程中有事务提交是造成ORA-01555错误的最常见的原因; 3、block cleanout; 解决ORA-01555错误的解决方案有下面几种: 1、适当的设置UNDO_RETENTION参数值(大于事务执行可能需要的最长时间);如果UNDO_RETENTION参数值变大,那么同时也需要根据果UNDO_RETENTION参数值大...
ORA-01555:snapshot too old。 问题原因 报错为 ORA-01555 表示读取器读取所需的回滚记录时,被其它编辑器覆盖。 解决方法 在源Oracle 数据库执行下述命令,修改 Oracle 源端的参数 _FIX_CONTROL。 oracle> ALTER SYSTEM SET "_FIX_CONTROL" = "11814428:0" scope=both sid='*'; 修改参数后,重启 Oracle 实...
高频错误:ORA-01555深入剖析 黄玮(Fuyuncat) 资深Oracle DBA,个人网站www.HelloDBA.com,致力于数据库底层技术的研究,其作品获得广大同行的高度评价. ORA-01555(快照过旧)问题让很多人感到十分头痛。最近我们的生产系统上也报出了ORA-01555错误。就结合这次案例将ORA-1555问题作个案例分析,并浅析产生原因和各种解决...
ORA-01555(快照过旧)问题让很多人感到十分头痛。最近我们的生产系统上也报出了ORA-01555错误。就结合这次案例将ORA-1555问题作个案例分析,并浅析产生原因和各种解决办法。 如果要了解1555错误产生的原因,就需要知道ORACLE的两个特性:一致性读(Consistent Get)和延迟块清除(Delayed Block Cleanout)。此外,还要知道关于...
ORA-01555错误的原因分析 1、SQL语句执行时间太长,或者UNDO表空间过小,或者事务量过大,或者过于频繁的提交,导致执行SQL过程中进行一致性读时,SQL执行后修改的前镜像(即UNDO数据)在UNDO表空间中已经被覆盖,不能构造一致性读块。 2、SQL语句执行过程中,访问到的块,在进行延迟块清除时,不能确定该块的事务提交时间...
ORA-01555 快照过旧,是数据库中很常见的一个错误,比如当我们的事务需要使用undo来构建CR块的时候,而此时对应的undo 已经不存在了, 这个时候就会报ORA-01555的错误。 有关CR 块,参考我的Blog: CR (consistent read) blocks create 说明 http://blog.csdn.net/xujinyang/article/details/6823237 ...
今天我们来分析ORA-01555发生的场景和各种解决方案 1555发生的场景 测试环境 首先建立测试环境。由于我们只是要模拟1555错误的发生,所以需要建立一个小的回滚表空间,并且设置undo_retention时间为1(秒),以便回滚数据尽快被覆盖(呵呵,要防止1555错误发生,这就一定要避免的)。