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
转载须注明出处与链接!!!!