Oracle错误代码01555,也称为"snapshot too old"错误,指的是Oracle在尝试构造查询开始时的一个数据快照时失败,因为所需的数据一致性版本(前映像)已经被覆盖或删除。以下是对该错误的详细分析以及相应的解决方法: 一、Oracle 01555错误的具体含义和产生原因 Oracle 01555错误通常发生在执行长时间运行的事务或查询时,UND...
Oracle ORA-01555(快照过旧) 一、引言: [oracle@yft yft]$ oerr ora0155501555,00000, "snapshot too old:rollback segmentnumber%swith name \"%s\" too small"//*Cause:rollback records neededby a readerfor consistentreadare// overwrittenbyother writers//*Action:IfinAutomatic Undo Management mode, ...
ORA-02354: errorinexporting/importingdataORA-01555: snapshot too old: rollback segment number with name""too small ORA-22924: snapshot too old –在导出过程中观察undo的使用情况,发现并未占用多少undo,undo空间其实是够用的 随后查看表的字段,发现有lob字段,很有可能是lob字段损坏导致的 –创建一张临时...
Oracle ORA-01555(快照过旧) 一、引言: [oracle@yft yft]$ oerr ora0155501555,00000, "snapshot too old:rollback segmentnumber%swith name \"%s\" too small"//*Cause:rollback records neededby a readerfor consistentreadare// overwrittenbyother writers//*Action:IfinAutomatic Undo Management mode, ...
1、ORA01555: snapshot too old: rollback segment number %s is too small 这个错误表示回滚段太小,无法满足事务的需求,解决方法是增加回滚段的大小,可以通过以下SQL语句来实现: ALTER DATABASE DATAFILE '/path/to/your/datafile' RESIZE NEW_SIZE;
那么问题就出现了,如果一个查询需要使用被覆盖的回滚段构造前镜像(Before Image)实现一致性读,那么此时就会出现Oracle著名的ORA-01555(snapshot too old,快照过旧)错误。需要注意的是,ORA-01555错误是一个安全的错误,它不会造成数据丢失或者损坏,只是会让收到该错误的查询无法继续。
snapshot too old 就是指你commit,前镜像被覆盖以后如果有查询需要访问这个前镜像构建⼀致性读,就会导致ORA-01555错误 --- 加⼤你的undo segment 的 initial extents 值, 尽量减少warp,当然undo file 要够⼤:) --- A. 回滾段太少/太⼩導致這個錯誤,可以創建更多的回滾段, 為回滾段設置較⼤的EX...
造成ORA-01555错误有三个可能原因:UNDO段太小;提交太频繁;延迟的块清除。 UNDO段太小 有2个解决办法, 1)减少查询的运行时间(调优)。应该首先尝试这种方法。这样就能降低对undo段的需求,不需求太大的undo段。 2)允许UNDO表空间扩大,为之留出扩展的空间,并增加UNDO保持时间。
ORA-01555的直观解释是“snapshot too old”,也就是快照太旧,其根本含义就是查询需要的前镜像过于“久远”,已经无法找到了。可以想象,如果一个历时数个小时或十几个小时的查询,如果最后遭遇ORA-01555错误而失败,会是多么令人沮丧的一件事。一直以来,ORA-01555都是ORACLE最为头痛的问题之一。
可以看到,在遭遇ORA-01555:snapshot too old 错误而失败之前,它只处理了253 个记录。要修正 这个错误,我们要保证做到两点: 1、数据库中UNDO_RETENTION 要设置得足够长,以保证这个读进程完成。这样数据库就能扩大undo 表空间来保留足够的undo,使我们能够完成工作。