公司项目用的 datax 同步数据,从 oracle 抽取数据,在数据量比较少的时候一切正常,当表数据量到 2y 以上之后,频繁报错 ORA-01555: 快照过旧: 回退段号 XXX
,
在百度后得到方法有:
( 1 )增加 UNDO 表空间大小
( 2 )增加 undo_retention 时间,默认只有 15 分钟
( 3 )优化出错的 SQL,减少查询的时间,首选方法
( 4 )避免频繁的提交
在实际情况中,1,2 方法都行不通,因为 oracle 是客户的数据库,不能做更改; 4 方法也不是原因。 只有 3 方法可以尝试修改,但是 datax 的 sql 是配置在 json 任务文件中。有没有以一种最小改动方式解决问题呢? 现在的 sql select aaa,bbb from table; 计划使用:rownum 分页查询,请教各位 不知这样是否可行,会不会有隐藏的坑呢?
1
xliao 2020-05-26 19:47:39 +08:00 via iPhone
建议 sql 带 where 分批处理呢
|