sqoop在抽取oracle数据库时报错ORA-01555(快照过旧)时的解决方法

在sqoop读取oracle数据库时,oracle数据库还在不断的添加数据或更新数据,就会导致这个问题

(1)、SQL语句执行时间太长,或者undo表空间过小,或者事务量过大,或者过于频繁的提交,导致执行SQL过程中进行一致性读时,SQL执行后修改的前镜像(既UNDO数据)在UNDO表空间中已经被覆盖,不能构造一致性读块(CR blocks)。这种情况最多。

    (2)、SQL语句执行过程中,访问到的块,在进行延迟块清除时,不能确定该块的事务提交时间与SQL执行开始时间的先后次序。这种情况很少。

解决方法(oracle用户更改的,笔者是数据仓库,也改不了源数据库oracle的配置,只能从网上找一些解决方法)

    (1)、增加UNDO表空间大小;

show parameter undo

NAME                     TYPE       VALUE
-------------------- ----------- --------------
undo_management          string      AUTO
undo_retention           integer     900
undo_tablespace          string      UNDO2

    (2)、增加undo_retention时间,默认只有15分钟;

    (3)、优化出错的SQL,减少查询的时间,首选方法;

    (4)、避免频繁的提交。

参考:Oracle ORA-01555(快照过旧) - lclc - 博客园

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值