ORA-1555错误发生的主要原因是,当一个长时间运行的查询在执行过程中,其需要访问的数据块在归档日志或重做日志中已经被覆盖,导致Oracle无法为查询提供一致的数据视图。这通常发生在以下情况: 长时间运行的查询:如果查询执行时间过长,期间产生的归档日志或重做日志可能会被覆盖,导致查询所需的数据块无法被恢复。 归档日志空间不足:如果
不过从这个报错现象可以接触到ORA-1555这个经典的错误号,尤其是在生产中,也是一种不多见的情况,尤其在现在UNDO基本都是用Oracle自动管理方式,且磁盘空间分配都比较大的情况下。 这个ORA-1555的错误是Oracle回滚段错误中的一种经典。UNDO用于记录DML操作数据的前镜像,ORA-1555的错误简单用一句话总结,我觉得就是当DML...
“ORA-1555:snapshot too old(快照过旧)”错误明确指出,撤销数据的保存时间不够长,不足以满足查询工作负载的要求:没有足够的可用撤销数据。A是错误的,因为它根本不指撤销,指的是快照(存在于早先的数据库版本中,现称为物化视图)。B和D都是错误的,因为它们描述了相反的情形:撤销数据的保留时间过长。这不是问题...
这个ORA-1555错误报告是在访问UNDO表空间的UNDO数据时发生错误的,用后续的方法来诊断问题。 2)查询耗时太长 在一些ORA-1555错误发生时,会在alert日志或者是应用日志中出现查询失败时耗时(Duration)的秒数: ORA-01555 caused by SQL statement below (Query Duration=1974 sec, SCN: 0x0002.bc30bcf7): 如果发现错...
因hang导致夜维的DELETE语句一直处于等待状态(超过一天),直到资源锁释放,但此时由于开始存放于UNDO中的前镜像超过UNDO_RETENTION参数设置的时间,且这是高并发的一个系统,很快可能就会被应用session覆盖UNDO中的记录,导致无法找到UNDO中的记录产生一致性读,因此报错ORA-1555,此次执行失败。
这个ORA-1555的错误是Oracle回滚段错误中的一种经典。UNDO用于记录DML操作数据的前镜像,ORA-1555的错误简单用一句话总结,我觉得就是当DML语句需要用UNDO记录的数据找到前镜像时,该记录已经被覆盖,导致无法利用UNDO中的记录完成一致性读。当然Oracle也有UNDO_RETENTION等参数避免这种情况的产生,但仍旧可能...
或者,LOB字段前映像超过了RETENTION的值,在查询发生时一些行的LOB字段前映像已经被覆盖,于是ORA-1555触发。 解决方案 1 检查错误日志信息 通过检查告警日志,或者包含ORA-1555错误信息的跟踪日志,可以更详细的看到具体的错误类型: 1)提示回滚段太小 错误提示: ...
pragma exception_init(error_1555,-1555); pragma exception_init(error_22922,-22922); n number;beginforcursor_lobin(select rowid r, COLUMN_NAME from DBA_LOBS where owner=upper('&&tab_owner')andTABLE_NAME=upper('&&tab_name')) loopbeginn:=dbms_lob.instr(cursor_lob.COLUMN_NAME,hextoraw('889...
问ORA-1555:快照太旧:回滚段编号EN1.外部起事务,内部起事务,内外都有Try Catch 内部出错:如果内部...
报错误:ora--1555 :快照过旧:回退段号 9(名称为 "_SYSSMU9_1650507775$")过小)有一张大表大约7亿,想删除历史数据,delete from 表 where time<sysdate-180 (只保留半年的数据) 报错误:ora–1555 :快照过旧:回退段号 9(名称为 “_SYSSMU9_1650507775$”)过小)说明:redo 三个log组 每个200...