OMS迁移随笔

全量校验速度优化

OMS版本4.3.1 ,源端oracle12.2备库,目标端OB_Oracle 4.2.1.11

根据OMS主机、源端、目标端主机资源,根据实际情况按需调整如下参数,可以提升全量校验速度。
生产实测全量校验速度由40M提升到500+M每秒。注意不要调整太高,会对源端、目标端、OMS产生较大压力,影响生产业务。

limitator.platform.threads.number 64~ 128, 机器资源够用的情况下可以适当调大一些(默认值8)数据源读线程数所有版本  
limitator.platform.split.threads.number 64~ 128,机器资源够用的情况下可以适当调大一些(默认值是16) 切片线程数所有版本  
limitator.datasource.connections.max 128~256,机器资源够用的情况下可以适当调大一些(默认值是50)链接数>=数据源读线程数+切片线程数数据库最大链接数 所有版本  

limitator.source.max.thread.size 32~64,机器资源够用的情况下可以适当调大一些(默认值是8) 更改读线程数所有版本 
limitator.select.batch.max  可调至2000~10000(默认是600)单个切片最大记录数所有版本
"task.checker_jvm_param":string"-server -Xms20g -Xmx20g -Xmn10g -Xss512k"  ---配置校验程序内存
"task.coordinatorsection.cacheCapacity":“512” --避免hang住
"limitator.image.source.thread.size:"32"    --调整为32
"imitator.master.source.thread.size": "32"  ---调整为32

OMS迁移BUG导致数据不一致

环境:源端:oracle 目标端:ob_oracle

源端Oracle执行delete操作时使用并行命令(如/*+ PARALLEL(8) */,alter session force parallel dml parallel 8),此类并行DML(PDML)会将单个delete任务拆分为多个“子事务”执行,导致事务整体执行周期延长,进而形成“跨3个Oracle归档日志”的长事务(事务的开始、执行、提交环节分别分布在3个不同的日志文件中)。而OMS的store组件存在解析限制——仅支持事务跨2个归档日志的完整解析,当事务跨3个及以上归档日志时,若OMS未完整挖掘所有关联日志文件,会将本该“提交(commit)”的事务误判为“回滚(rollback)”,最终导致delete事务同步被丢弃。

OMS全版本都有该缺陷,截至此文前,原厂暂无修复计划。只能通过源端规避并行dml或者防止并行dml跨超过2个归档日志规避。

posted @ 2025-12-05 14:46  z_uncle  阅读(1)  评论(0)    收藏  举报