一、使用kettle从源端数据库抽到目标端数据库时,当数据量过大时,会报ORA-01555快照过旧报错

二、产生的原因:

(1):sql执行比较久,需要优化sql

(2):回滚段过小

(3):undo保存时间过短

三、执行步骤:

1:查看sql语句,是否可以优化

2:检查回滚段大小

3:查看undo_retention参数

打开plsql命令窗口,输入:show parameter undo_

Undo_retention:是undo数据保存的时间,是一个目标期望值,单位为秒,默认为900s

用户设置出这个值之后,Oracle内部会尽量保证将Undo数据保留超过undo_retention设置的时间,但是如果Undo使用紧张,没有额外的方法,那么这个时间段也是不能保证的,这个时间如果设置的比较小,数据很快就覆盖了,那么执行较长时间的查询语句就会报ORA-01555的错误。

修改语句:alter system set undo_retention=7200;

修改成功后,执行 show parameter undo_,查看时间已变