OGG_mysql 12c复制到OGG_oracle 11g部署方案

来源:这里教程网 时间:2026-03-03 17:31:06 作者:

OGG_mysql 12c 复制到 OGG_oracle 11g 部署方案

1、 环境 源端数据库: mysql 5.7.31 目标端数据库: oracle 11.2.0.4 源端 ogg 介质: 122022_ggs_Linux_x64_MySQL_64bit 目标端 ogg 介质: Oracle-GoldenGate-11.2.1.0 注意: 1 )这里源端使用 ogg 12.2.0.2 的版本,如果使用低版本,抽取进程启动会报 600 错误 2 )目标端使用 11g 的版本,使用 ogg initial load 工具进行初始化,直接加载的方式不支持添加版本参数 FORMAT RELEASE 11.2 ,只能使用文件加载方式进行初始化,性能相对较慢。因此,有条件的建议目标端也使用 12c 版本。 3 )虽然 mysql 端设置了表名大小写不敏感的参数 lower_case_table_names=1 ,但是 ogg 对表名大小写依然敏感。 2 、源端配置 2.1 Mysql 参数权限

ogg 相关的 Mysql 数据库参数配置

binlog-format=ROW

log-bin=mysql-bin

需要同步的表要先授权

>GRANT INSERT, UPDATE, DELETE,select ON `psd`.`testb` TO 'ogg'@'%'; 2.2 管理进程: mgr

> view param mgr
PORT 1739
DYNAMICPORTLIST  1740-1838
AUTORESTART EXTRACT *,RETRIES 999,WAITMINUTES 3
STARTUPVALIDATIONDELAY 5
PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 3
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45

  2.3 抽取进程: extpr

> view param EXTTS
extract extts
setenv(MYSQL_HOME="/usr/")
sourcedb ogg@196.14.1.1:1306,userid  ogg,password ogg
tranlogoptions altlogdest /mysql/data/mdb-bin.index
discardfile ./dirrpt/extts.dsc,append,megabytes 1024
exttrail ./dirdat/ts,format release 11.2
gettruncates
dynamicresolution
table psd_bpm.testb;

MYSQL_HOME 可以通过执行 show variables like '%basedir%' 来确定

tranlogoptions altlogdest 配置的是 log-bin index 文件,可以通过查看 my.cnf 配置文件确定,也可以执行 show variables like '%datadir%' 来确定

因为目标端 ogg 11g 版本,需要在 exttail 参数配置 format release 11.2 2.4 传输进程 :dpepr

> view param DPETS
extract dpets
sourcedb ogg@196.14.1.1:1306,userid  ogg,password  ogg
rmthost 196.14.1.2,mgrport 1839
rmttrail ./dirdat/ts,format release 11.2
gettruncates
table psd_bpm.testb;

因为目标端 ogg 11g 版本,需要在 rmttrail 参数配置 format release 11.2 2.5 源端初始化参数文件 :etsinit

> view param etsinit
SOURCEISTABLE
setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
sourcedb ogg@196.14.1.1:1306,userid  ogg,password  ogg
rmthost 196.14.1.2,mgrport 1839
RMTFILE /ogg/dirdat/tsinit,FORMAT RELEASE 11.2, MEGABYTES 1024,PURGE
table psd_bpm.testb;

SOURCEISTALBE 参数表示初始化加载进程直接从源表抽取数据。

RMTFILE 参数配置初始化进程抽取的数据文件存放目标位置,为目标端的位置。目标端版本为 11g ,这里也要配置 FORMAT RELEASE 11.2 的选项。 2.6 生成 def 文件

ogg 主目录新建一个 rtsdef.prm 文件

>vi rtsdef.prm
defsfile ./dirdef/rtsdef.def,purge
sourcedb ogg@196.14.1.1:13306,userid  ogg,password ogg
table psd.testb;

生成 def 文件

>./defgen paramfile rtsdef.prm

找到生成的 rtsdef.def 文件中的内容:

Database type: MYSQL
Character set ID: UTF-8
National character set ID: UTF-16
Locale: en_US
Case sensitivity: 00 00 00 22 22 00 00 00 00 00 00 00 11 00 00 00
TimeZone: CST

这里的 Case sensitivity 表示数据库的表名大小写是否敏感, mysql 数据库参数文件配置了 lower_case_table_names=1 ,表示大小写不敏感,这里对应的值就是表名大小写不敏感。但是我们发现 ogg 11g 入库进程对大小写敏感, mysql 端生成的 def 文件中的表名都是小写,所以我们需要把这个值修改为大小写敏感,其值可以参考 oracle 生产的 def 文件。具体配置:

Case sensitivity: 14 14 14 14 14 14 14 14 14 14 14 14 11 14 14 14

这里如果不做修改,入库进程参数文件配置了 SOURCEDEFS 参数,启动进程会报找不到表定义。这里应该是 ogg 11g bug ogg 12c 已经修复了该问题,无需修改该值。

Ogg 11g 版本不支持 TimeZone: CST ,我们需要手动删除该值。 3 、目标端配置 3.1 入库进程 repts

> view param REPTS
 
REPLICAT repts
SETENV(ORACLE_SID = "ffdb")
SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2/db_1")
setenv (NLS_LANG=AMERICAN_AMERICA.UTF8)
USERID ogg, PASSWORD ogg
REPORT AT 01:59
REPORTCOUNT EVERY 30 MINUTES, RATE
REPERROR DEFAULT, ABEND
SOURCEDEFS ./dirdef/repts.def
DISCARDFILE ./dirrpt/repts.dsc, APPEND, MEGABYTES 1024
DISCARDROLLOVER AT 02:30
GETTRUNCATES
ALLOWNOOPUPDATES
HANDLECOLLISIONS
map psd.testb,target bpm.testb,KEYCOLS(TID);

跨版本同步, ogg initial load 只能使用文件加载方式,初始化不设置检查点,因此入库进程启动前需要配置 HANDLECOLLISIONS 参数,忽略错误。 3.2 目标端初始化进程 repinit

> view param rtsinit
SPECIALRUN
END RUNTIME
USERID ogg, PASSWORD GG_yxcb161
SOURCEDEFS ./dirdef/repts.def
REPERROR DEFAULT,DISCARD
EXTFILE /ogg/dirdat/tsinit
map psd.testb,target bpm.testb,KEYCOLS(TID);

SPECIALRUN 表示将初始化进程实现为不使用检查点的一次性运行

END RUNTIME 表示初始化进程在加载完成后终止

EXTFILE 配置源端传过来的初始化数据文件在本地的位置 4、 添加并启动进程 4.1 添加进程 4.1.1 源端

> add extract extts,tranlog,begin now   
> add exttrail ./dirdat/ts,extract extts,MEGABYTES 512
> add extract dpets,exttrailsource ./dirdat/ts
> add rmttrail ./dirdat/ts,extract dpets,MEGABYTES 512

4.1.2 目标端

>add replicat repts,exttrail ./dirdat/ts,nodbcheckpoint

4.2 启动进程 4.2.1 源端

启动抽取和传输进程

>start extract extpr

>start extract dpepr

启动初始化加载工具

>./extract paramfile dirprm/etsinit.prm reportfile ./dirrpt/estinitrp.log

etsinit.prm就是上面配置的初始化参数文件,estinitrp.log为初始化加载日志文件。

跟踪日志estinitrp.log输出:

Report at 2022-03-17 09:38:57 (activity since 2022-03-17 09:38:52)
Output to /ogg/oraogg/dirdat/tsinit:
From Table psd_bpm.testb:
       #                   inserts:        11
       #                   updates:         0
       #                   deletes:         0
       #                  discards:         0

看到上面的日志,表示数据已经抽取完成,第一行为完成时间,要记住这个时间,入库进程删除HANDLECOLLISIONS参数就是以这个时间点作为标准,必须在这之后才能删除。 4.2.2 目标端

启动初始化加载工具

>./replicat paramfile dirprm/rtsinit.prm reportfile ./dirrpt/rstinitrp.log

加载完成后,启动入库进程

>start replicat repts

跟踪观察入库进程,直到入库到初始化抽取完成时间之后

>info replicat repts

删除入库进程中的HANDLECOLLISIONS参数,并重启入库进程 5 、问题解决

Q1 :启动抽取进程报  error 600

2022-03-11 10:39:01  ERROR   OGG-00146  VAM function VAMRead returned unexpected result: error 600 - VAM Client Report <CAUSE OF FAILURE : Sanity Check Failed for events
WHEN FAILED : While reading log event from binary log
WHERE FAILED : MySQLBinLog Reader Module
CONTEXT OF FAILURE : No Information Available!>.

解决方法: 源端 mysql 使用 OGG-11.2.0.1 ,启动抽取进程会报上面的错误,需要升级到 12.2.0.2 以上版本。  

Q2 :入库进程启动报 ERROR   OGG-00303

2022-03-16 17:10:21  ERROR   OGG-00303  Problem at line 37.  Expecting file, table, or record definition: TimeZone: CST.
2022-03-16 17:10:21  ERROR   OGG-01668  PROCESS ABENDING.

解决方法: def 文件使用 12c defgen 生成, ogg 11g 不支持 TimeZone: CST 参数,需要手动删除该行。

Q3 :入库进程启动报 ERROR   OGG-00423

2022-03-14 15:59:01  ERROR   OGG-00423  Oracle GoldenGate Delivery for Oracle, repbpm.prm:  Could not find definition for psd_bpm.bpm_worklist_cur.
2022-03-14 15:59:01  ERROR   OGG-01668  Oracle GoldenGate Delivery for Oracle, repbpm.prm:  PROCESS ABENDING.

解决方法: 修改 def 文件中的 case sensitivity Case sensitivity: 00 00 00 22 22 00 00 00 00 00 00 00 11 00 00 00 改为 Case sensitivity: 14 14 14 14 14 14 14 14 14 14 14 14 11 14 14 14 上面的是 mysql 的,表示大小写不敏感 下面复制 oracle 的值,表示大小写敏感  

Q4 :抽取进程无数据生成 抽取进程启动后不报错, trail 文件大小不增长 解决方法: 表名大小写问题,修改进程中的表名大小写与数据库字典中的一致  

Q5 :传输进程数据不传输 传输进程启动后不报错,目标端 trail 文件大小不增长 解决方法: 表名大小写问题,修改进程中的表名大小写与数据库字典中的一致

相关推荐