一.报错ogg复制进程ABENDED状态
二、报错问题分析(检查日志)
# 在ogg命令./ggsci 里执行查看报错
view report sr_hy1
1.查看报错:
2024-12-04 14:10:18 ERROR OGG-01163 Bad column length (30)specified for column TYPE in table xxx.TEST03, maximum allowable length is 25.
2.错误分析:
由于源端OGG进行字段类型变长导致(varchar2(25)-> varchar2(30))
源端数据结构变更后未及时重启OGG抽取、投递端进程导致
3.解决方案:
1.【解决方案一】设置ogg从最新记录开始读(可以解决但是会丢失数据)
# 进入ogg命令行
./ggsci
# 重启抽取端进程
stop EXT_HY1
start EXT_HY1
# 重启投递端进程
stop PM_HY1
start PMT_HY1
# 进入ogg命令行
./ggsci
# 修改当前进程从最新记录开始读
alter sr_hy1,begin now
# 重启复制进程就会恢复
start sr_hy1
查看进程抽数情况目前重启后跳过异常数据
插入数据后看到数据已经过来了,插入10条数据
2.【解决方案二】生成报错表的最新结构信息生成def文件发送到投递端进行处理异常数据。
./ggsci
edit param d_hy1
把以下代码写入 后保存退出
USERID oggadm@user,PASSWORD "pwd"
defsfile ./dirdef/d_hyl.def purge
TABLE xxx.T_test03
到ogg目录下 找到:defgen
执行以下命令:
./defgen paramfile ./dirprm/d_hy1.prm
如下图标红部分路径下已经生成文件。
文件生成完毕后,把生成文件发送到目标端ogg目录下dirprm目录下(这个我就不展示了利用scp命令)。
重启源端抽取、投递进程
目标端复制进程进行修改:
# 根据下面命令进行编辑文件
./ggsci
edit param sr_hy1
添加以下内容进去
SOURCEDEFS ./dirprm/d_hyl.def override
重启目标端复制进程
查看异常数据已经处理完成(进程已经恢复):
异常数据处理完成后去除临时加的配置文件(如配置文件不删除的情况下,后续还有结构变更的话,也不会自己更新过来,会优先使用def文件的结构)
./ggsci
edit param sr_hy1
删除以下内容进去
SOURCEDEFS ./dirprm/d_hyl.def override
重新启动复制进程(修复完成)
stop sr_hy1
start sr_hy1
注意:
1.源端oracle表结构变更后(禁止对表数据进行任何 dml 操作),ogg应及时进行对抽取、投递进程重启后,Oracle才能对数据表(dml)操作。