OGG-01161 源和目标端的表结构不一致导致应用进程abended

在OGG21.3环境下,源端MySQL5.7.27到目标端Oracle11.2.0.4的数据同步过程中,由于源端新增字段但目标端未同步导致Replicat进程ABENDED。通过在目标端添加对应字段,使用defgen生成异构配置文件并更新sourcedefs,最终重启并调整参数使同步恢复正常。
摘要由CSDN通过智能技术生成

OGG同步架构如下:
源端:MySQL 5.7.27
目标端:Oracle 11.2.0.4
OGG版本:OGG 21.3

源端抽取进程和投递进程都正常运行:

GGSCI (204) 1> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
EXTRACT     RUNNING     EXJLB2      00:00:02      00:00:01
EXTRACT     RUNNING     PXJLB2      00:00:00      00:00:00

目标端进程ABENDED:

GGSCI (193) 3> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
REPLICAT    ABENDED     RXJLB2      00:00:00      62:53:41

检查应用进程日志信息如下:

2023-02-24 19:39:31  INFO    OGG-01020  Processed extract process RESTART_ABEND record at seq 0, rba 681771 (canceled 0 records).

Source Context :
  SourceModule            : [ggstd.conv.endian]
  SourceID                : [ggstd/lecnv.c]
  SourceMethod            : [convCompSQL]
  SourceLine              : [579]
  ThreadBacktrace         : [15] elements
                          : [/ogg213/libgglog.so(CMessageContext::AddThreadContext())]
                          : [/ogg213/libgglog.so(CMessageFactory::CreateMessage(CSourceContext*, unsigned int, ...))]
                          : [/ogg213/libgglog.so(_MSG_QualTableName_Int32_Int32(CSourceContext*, int, ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1> const&, int, int, CMessageFactory::MessageD
isposition))]
                          : [/ogg213/replicat()]
                          : [/ogg213/replicat(ggConvRecLE(char*, ObjectMetadata*, int, unsigned char, char, bool))]
                          : [/ogg213/replicat(ggs::gglib::gglcr::CommonLCR::normalize())]
                          : [/ogg213/replicat(ggs::er::ReplicatContext::processReplicatLoop())]
                          : [/ogg213/replicat(ggs::er::ReplicatContext::run())]
                          : [/ogg213/replicat()]
                          : [/ogg213/replicat(ggs::gglib::MultiThreading::MainThread::ExecMain())]
                          : [/ogg213/replicat(ggs::gglib::MultiThreading::Thread::RunThread(ggs::gglib::MultiThreading::Thread::ThreadArgs*))]
                          : [/ogg213/replicat(ggs::gglib::MultiThreading::MainThread::Run(int, char**))]
                          : [/ogg213/replicat(main)]
                          : [/lib64/libc.so.6(__libc_start_main)]
                          : [/ogg213/replicat()]

2023-02-24 19:45:05  ERROR   OGG-01161  Bad column index (91) specified for table java.per, max columns = 91.

从日志中,可以判断到出问题的地方可能是表的字段信息有异常。分别检查源和目标端的表结构信息,果不其然,源端新增加了几个表字段,但是目标库没有新增加字段。因为异构数据库环境不支持DDL同步。

最终处理方法如下:
第一步:目标端增加表字段

alter table java.per add (_NAME varchar2(80))
alter table java.per add (_CODE varchar2(80))

第二步:源端生成异构配置文件

#cd /ogg
#./defgen paramfile dirprm/defxjlb6.prm

***********************************************************************
        Oracle GoldenGate Table Definition Generator for MySQL
      Version 21.3.0.0.0 OGGCORE_21.3.0.0.0_PLATFORMS_210728.1047
 Oracle Linux 7, x64, 64bit (optimized), MySQL  on Jul 28 2021 18:36:12

Copyright (C) 1995, 2021, Oracle and/or its affiliates. All rights reserved.

                    Starting at 2023-02-27 10:34:40
***********************************************************************

Operating System Version:
Linux
Version #1 SMP Fri Sep 13 22:55:44 UTC 2019, Release 3.10.0-1062.1.1.el7.x86_64
Node: oa-itsm-236-204
Machine: x86_64
                         soft limit   hard limit
Address Space Size   :    unlimited    unlimited
Heap Size            :    unlimited    unlimited
File Size            :    unlimited    unlimited
CPU Time             :    unlimited    unlimited

Process id: 48094

***********************************************************************
**            Running with the following parameters                  **
***********************************************************************
defsfile ./dirdef/defxjlb6.prm
sourcedb jepaas@localhost:3306, userid ogg, password ***
table java.per;
Retrieving definition for java.per.
table java.per1;
Retrieving definition for java.per1.
table java.per2;
Retrieving definition for java.per2.
table java.per3;
Retrieving definition for java.per3.
table java.per4;
Retrieving definition for java.per4.
table java.per5;
Retrieving definition for java.per5.
table java.per6;
Retrieving definition for java.per6.
table java.per7;
Retrieving definition for java.per7.


Definitions generated for 8 tables in ./dirdef/defxjlb6.prm.

第三步:把异构配置文件拷贝到目标端

# scp ./dirdef/defxjlb6.prm oracle@192.168.1.1:/ogg/dirdef

第四步:重启应用进程

GGSCI (193) 4> start rxjlb2

Sending START request to Manager ...
Replicat group RXJLB2 starting.

GGSCI (193) 6> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
REPLICAT    RUNNING     RXJLB2      00:00:00      62:53:48

这一步可能会出现重启进程后还是ABENDED,此时需要更改一个OGG参数配置,sourcedefs 增加 OVERRIDE 关键字

GGSCI (193) 15> view param rxjlb2

replicat rxjlb2
SETENV (TNS_ADMIN = "/u01/app/oracle/product/11.2.0/dbhome_1/network/admin")
userid ggadmin@cdc,password Password
sourcedefs ./dirdef/defxjlb6.prm OVERRIDE

第五步:刷新进程查看同步已经恢复正常,数据已经在同步

GGSCI (193) 9> info rxjlb2

Replicat   RXJLB2    Last Started 2023-02-27 10:38   Status RUNNING
Checkpoint Lag       00:00:00 (updated 62:54:01 ago)
Process ID           16209
Log Read Checkpoint  File ./dirdat/et000000000
                     2023-02-24 19:44:08.568819  RBA 709088


GGSCI (193) 10> info rxjlb2

Replicat   RXJLB2    Last Started 2023-02-27 10:38   Status RUNNING
Checkpoint Lag       62:44:19 (updated 00:00:00 ago)
Process ID           16209
Log Read Checkpoint  File ./dirdat/et000000000
                     2023-02-24 19:54:44.571404  RBA 3063876


GGSCI (193) 11> info rxjlb2

Replicat   RXJLB2    Last Started 2023-02-27 10:38   Status RUNNING
Checkpoint Lag       37:30:22 (updated 00:00:00 ago)
Process ID           16209
Log Read Checkpoint  File ./dirdat/et000000000
                     2023-02-25 21:08:51.379681  RBA 6280235


转载须注明出处与链接!!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值