veridata使用报错:Failed: Agent remote message (101): Unhandled exception 'java.lang.ArrayIndexOutOfBound

说明:为客户做灾备切换项目,使用veridata对一张200W多条记录的表数据内容比对,目的是查找并定位源端和目标端不一致的数据记录,执行JOB时报错如下(附件一)。

Failed: Agent remote message (101): Unhandled exception 'java.lang.ArrayIndexOutOfBoundsException': Array index out of range: -1


分析:起初以为是数据记录条数过多导致的(但是之前对一张2000W左右数据记录进行比对都是可以的),此时对该200W数据的表进行分区比对。

分区后只有一个GROUP执行JOB失败,报错如上描述。此时,通过veridata对分区后只有400多条记录进行比对时,依然报错如上。

此时,分别在源端和目标端通过SELECT语句查找400多条记录,并导出数据后手动进行源端和目标数据一致性比较,查找不一致的记录。


结果:发现目标比源端多出一条记录内容,是因为该表有主键,但是该条多出来的数据在源端和目标端根据ID值有匹配的记录,多出的记录只是缺少主键值。

处理:目标端执行delete,删除后,通过veridata对该分区执行JOB,执行成功;对全表200W条数据进行整张表比较,执行成功!

原因:veridata在进行数据记录比较时,默认使用表的主键作为KEY,此时因为该差异记录缺少主键,因此执行JOB后的结果不能定位到具体的差异数据,报错。

可采取的办法是在配置时,手动执行比对时使用非主键列作为KEY,应该是可以比对成功的(没有测试)。


附件一:分区后执行JOB报错(执行JOB其实已经全部扫描了整个分区数据,但是不能定位到差异数据记录)



附件二:

通过如下SQL查询数据后,源端显示如下截图;目标端端显示了如下数据,和另一条没有CA_ID值,其余值一模一样的行记录。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值