环境:源端-sqlserver 目标端-Oracle 目标端ogg应用进程异常停止
报错:2022-01-20 18:00:52 ERROR OGG-01163 Bad column length (12) specified for col
umn FOURTH_ANESTHESIA_ASSISTANT in table MEDSURGERY.MED_OPERATION_MASTER, maximu
m allowable length is 8.
原因:由于源端数据库MED_OPERATION_MASTER表结构发生变更,目标端库表结构没有变,目标端该字段实际长度为12,最大长度8,因此报错
处理步骤:
1、查找报错信息(回车按行下移,空格按页下移)
view report repsm
2、检查源端和ODS表结构是否一致,参考源端,修改ODS端表结构
注:若源端和ODS端都为oracle数据库,且rep应用进程使用assumetargetdefs参数,则无需第3步骤,生成def表结构文件的操作
3、源端重新生成表结构,然后将生成的def文件拷贝到目标端OGG目录dirdef文件夹下进行替换
defgen paramfile .\dirprm\sourcesm.prm --sqlserver命令窗口进到OGG安装路径下执行
4、开启进程,延迟追平之后即表明同步恢复,比对数据差异很小则处理完毕
start repsm
注:若进程停止时间不长,或者同步的表数据量不大,很快能追平则开启进程让其自动恢复,反之则需要抽取数据,开启容错,进行手动恢复同步处理
以上方式处理完报错,新增的字段数据不会同步
若是新增字段还需源端重新添加表附加:
5、OGG界面登录数据库,重新添加表附加,重启进程:
dblogin userid stacs,password oracle
delete trandata stacs.v_exam_patient_rpt --先删除表附加
add trandata stacs.v_exam_patient_rpt,nokey --添加v_exam_patient_rpt表的附加日志
重启捕获进程extpa 和发送进程pumpa --stop extpa / start extpa ...
6、抽数据
1、stop ODS链路进程(异常停止则跳过)
2、抽数据
3、数据抽完,开启容错(编辑配置文件,取消注释容错参数handlecollisions,保存退出),start 链路进程 至延迟追平
4、stop 链路进程,关闭容错(编辑配置文件,注释掉容错参数handlecollisions,保存退出)
5、start 链路进程
注:源端SQL server库 ogg 12.3 版本删除一张表的表附加会影响到其他表。需看清版本