Goldengate 使用definition file完毕异构表同步

goldengate默认仅仅是依照创建表时,列的顺序来运行数据的复制过程。

所以当两端的表有不同的name、length、type、顺序的时候,goldengate不会识别。会错误发生的现象。

这个时候就须要使用definition file来正确的进行表的映射。

使用definition file仅仅要分三步:

1、生成一个param文件。用于指定须要生成definition的表以及生成的definition file的路径。

2、使用defgen依据param文件来生成definition文件。

3、改动replicat进程的參数文件,增加SourceDefs參数。

实验过程例如以下:

1、创建測试表

首先创建測试表,22节点:
create table ggtb22 (id number primary key , name varchar2(20),sal number) ;

SQL> create table ggtb22 (id number primary key , name varchar2(20),sal number) ;

Table created.

23节点:
create table ggtb23 (id number primary key , name varchar2(20),salyear number) ;

SQL> create table ggtb23 (id number primary key , name varchar2(20),salyear number) ;

Table created.

2、增加trandata表级附加日志

GGSCI (oel51) 11> dblogin userid ggs password ggs
Successfully logged into database.

GGSCI (oel51) 12> add trandata dexter.ggtb22

Logging of supplemental redo data enabled for table DEXTER.GGTB22.

GGSCI (oel52) 19> dblogin userid ggs password ggs
Successfully logged into database.

GGSCI (oel52) 20> add trandata ggtb23
ERROR: No viable tables matched specification.

3、自行编辑一个params文件,放在dirprm文件夹中

[[email protected] ogg]$ vi ./dirprm/defprmggtb22.prm

defsfile ./dirdef/ggtb22.def
USERID ggs, PASSWORD ggs
TABLE dexter.ggtb22;

4、然后使用defgen工具将definition file生成(defgen工具在ogg安装文件夹下)

使用命令后就会在dirdef文件夹中生成ggtb22.def文件

[[email protected] ogg]$ ./defgen paramfile ./dirprm/defprmggtb22.prm

***********************************************************************
        Oracle GoldenGate Table Definition Generator for Oracle
      Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230
   Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 05:08:19

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

                    Starting at 2016-03-12 02:00:02
***********************************************************************

Operating System Version:
Linux
Version #1 SMP Wed Feb 22 17:37:40 EST 2012, Release 2.6.32-300.10.1.el5uek
Node: oel51
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: 13324

***********************************************************************
**            Running with the following parameters                  **
***********************************************************************
defsfile ./dirdef/ggtb22.def
USERID ggs, PASSWORD ***
TABLE dexter.ggtb22;
Retrieving definition for DEXTER.GGTB22

Definitions generated for 1 table in ./dirdef/ggtb22.def

5、然后将该文件传送到目标端。我放在了dirdef文件夹中。

[[email protected] ogg]$ scp ./dirdef/ggtb22.def 192.168.100.23:/u01/ogg/dirdef/
[email protected]‘s password:
ggtb22.def                                       100% 1069     1.0KB/s   00:00

6、改动replicat文件增加例如以下内容

SourceDefs dirdef/ggtb22.def

然后开启相关进程就可以開始同步。

双向复制时把上述步骤再次做一次,这里不再详述。

下面是各个进程參数文件(内容顺序皆为22节点,23节点)。以及測试:

extract

extract eora
setenv (NLS_LANG="AMERICAN_AMERICA.AL32UTF8")
userid ggs, password ggs
tranlogoptions dblogreader
tranlogoptions excludeuser ggs
threadoptions maxcommitpropagationdelay 20000
exttrail ./dirdat/bb
dynamicresolution
TABLE dexter.ggtb22 ;

extract eora
userid ggs, password ggs
tranlogoptions dblogreader
tranlogoptions excludeuser ggs
threadoptions maxcommitpropagationdelay 20000
exttrail ./dirdat/aa
dynamicresolution
TABLE dexter.ggtb23 ;

pump

extract pora23
dynamicresolution
userid ggs, password ggs
rmthost 192.168.100.23, mgrport 7139,compress
rmttrail ./dirdat/bb
TABLE dexter.ggtb22 ;

extract pora22
dynamicresolution
userid ggs, password ggs
rmthost 192.168.100.22, mgrport 7139,compress
rmttrail ./dirdat/aa
TABLE dexter.ggtb23 ;

replicat

replicat rora23
setenv (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
userid ggs, password ggs
--assumetargetdefs
SourceDefs ./dirdef/ggtb23.def
handlecollisions
reperror default,discard
DISCARDFILE ./dirrpt/rora23.dsc, append, megabytes 100
dynamicresolution
INSERTMISSINGUPDATES
MAP dexter.ggtb23, TARGET dexter.ggtb22,
COLMAP (USEDEFAULTS,
SAL = @COMPUTE(SALYEAR / 12)
NAME = @STRCAT(NAME,"HELLO"));

replicat rora22
setenv (NLS_LANG="AMERICAN_AMERICA.AL32UTF8")
userid ggs, password ggs
--assumetargetdefs
SourceDefs ./dirdef/ggtb22.def
handlecollisions
reperror default,discard
DISCARDFILE ./dirrpt/rora22.dsc, append, megabytes 100
dynamicresolution
INSERTMISSINGUPDATES
MAP dexter.ggtb22, TARGET dexter.ggtb23,
COLMAP (USEDEFAULTS,
SALYEAR = @COMPUTE(SAL * 12)
NAME = @STRCAT(NAME,"hello"));

SQL> insert into ggtb22 values (1,‘dex‘,10000) ;

1 row created.

SQL> commit ;

Commit complete.

SQL> select * from ggtb22 ;

        ID NAME                        SAL
---------- -------------------- ----------
         1 dex                       10000

SQL> select * from ggtb23 ;

        ID NAME                    SALYEAR
---------- -------------------- ----------
         1 dexhello                 120000

SQL> insert into ggtb23 values (2 , ‘ter‘ , 10000) ;

1 row created.

SQL> commit ;

Commit complete.

SQL> select * from ggtb23 ;

        ID NAME                    SALYEAR
---------- -------------------- ----------
         1 dexhello                 120000
         2 ter                       10000

SQL> select * from ggtb22 ;

        ID NAME                        SAL
---------- -------------------- ----------
         2 terHELLO             833.333333
         1 dex                       10000

时间: 2025-01-06 08:32:26

Goldengate 使用definition file完毕异构表同步的相关文章

异构平台同步(Mysql到Oracle)

Oracle GoldenGate学习之--异构平台同步(MySQL到Oracle) 如图所示:源端采用Mysql库,目标端采用Oracle库 一.OGG安装配置(源端) 1.OGG下载 https://edelivery.oracle.com/EPD/Download/get_form?egroup_aru_number=14841438 https://edelivery.oracle.com/EPD/Download/get_form?egroup_aru_number=14841440

SymmetricDS 异构数据库同步软件部署案例

SymmetricDS是一个开源的同步软件,该软件是基于java环境编写的,在运行的时候需要安装JDK.SymmetricDS可以同步文件和数据库,本文的重点是数据库方面的同步. SymmetricDS支持多种数据库的同步,支持的数据库如下: Oracle, MySQL, MariaDB, PostgreSQL, MS SQL Server (including Azure), IBM DB2, H2, HSQLDB, Derby, Firebird, Interbase, Informix,

GoldenGate之update操作节点间不同步——处理办法

GoldenGate之update操作节点间不同步 故障现象:节点1.节点2进行update操作后,不能实现同步 解决过程: 1.常规巡检: 检查进程状态:正常 GGSCI (gc1) 7> info all Program     Status      Group       Lag           Time Since Chkpt MANAGER     RUNNING EXTRACT     RUNNING     EORA_1      00:00:00      00:00:04

mysql主从同步分库分表同步

一.mysql数据库的安装 分别在master 和slave上源码安装mysql数据库 1.1 安装相关包1.1.1 cmake软件cd /home/oldboy/tools/tar xf cmake-2.8.8.tar.gzcd cmake-2.8.8./configure#CMake has bootstrapped.  Now run gmake.gmakegmake installcd ../ 1.1.2 依赖包yum install ncurses-devel -y 1.2 开始安装m

Goldengate完成Mysql到Mysql的数据同步

文档参考地址:http://blog.csdn.net/u010587433/article/details/49305019 需求: 使用Goldengate完成Mysql到Mysql的数据同步,源库的o2m-mc库同步到目标库的gmdc库,表名GMQDSJSP,换句话说,就是不同数据库之间表之间数据的同步 实验准备: 系统: CentOS 7.2 mysql版本 :  5.7-12 mysql-1 : 192.168.68.13     mysql-2:192.168.68.14 1.初始化

MySQL数据库异构数据同步–后端以tair为例

在实现levelDB挂载成MySQL引擎时,发现在实际存储是key-value格式时候,MySQL的异构数据同步,可以更简单和更通用. 以tair为例,简要描述一下以MySQL为基础的一种方案. 所谓异构数据同步,是指应用只更新MySQL,而由后端的某些机制将这些更新应用到其他数据存储服务上. 1. MySQL-Tair 引擎 a)       使用 b)       说明 这不是一个"存储引擎",实际上数据存储在tair服务器上.执行insert/update/delete时,只是将

input file上传表单美化file按钮美化篇

一.表单input file样式说明   -   TOP 本上传表单特效是使用纯DIV+CSS代码实现,兼容各大浏览器,使用方便在此美化基础上稍加CSS美化将获得更好的美化效果,也就是通过DIV CSS样式美化上传表单控件. 二.CSS file美化后效果图   -   TOP file表单美化效果图 支持多浏览器与老旧版本浏览器,测试IE6-IE8 火狐.谷歌浏览器均兼容. 三.所有HTML+CSS代码:   -   TOP <!DOCTYPE html PUBLIC "-//W3C//

两个数据库表同步的可视化WEB同步程序

因业务升级,现有一个数据库中的表需要与先前项目中的表进行数据同步,停用先前的表,这两个表只能按其中相同的一个字段同步,认真研究了一下,用WEB程序进行了处理,可视化显示处理进度,同步操作结果.使用到的相关技术资料: 1.界面使用QUI(节省很多界面开发时间) 2.Jquery,AJax 同步请求(异步会有问题的) 3,吉日嘎拉底层数据库访问(可完美实现多种数据库表之间的同步,如目标数据库是MSSQL,源数据库是Oracle等) 前端截图:可视化显示处理进度及结果 前端部分JS 后台使用通用权限管

Navicate Data Modeler 新建的表同步不到数据库中(备忘)

Navicat Data Modeler 是我比较喜欢的一个数据库建模工具,使用过程中,总是避免不了会遇到一些问题. 1.假设我们从数据库中导入了一些模型,然后我们新建了两个模型,默认情况下,如下图所示: 我们选择我们新建的一张表,点击鼠标的右键,在弹出的菜单中选择"设计表",我一般操作的是 红色框框的这四个选项卡,你会问我,为何最后一个"选项"卡没选上,那么重点来了."选项"这里面的信息,对我们同步模型的表结构有比较重要的作用.在我们新建的表,