GoldenGate for mysql to mysql:单向同步


 

http://blog.chinaunix.net/uid-29183167-id-4428698.html

GoldenGate

一对一实施方案

 

一、安装GoldenGate

*源库需要开启归档

安装GoldenGate:源和目标都需要安装

1、创建GoldenGate安装目录:

Mkdir –p /opt/oracle/gg11

2、修改环境变量:

Export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_BASE/gg11:$LD_LIBRARY_PATH

export PATH=$ORACLE_HOME/bin:$ORACLE_BASE/gg11:$PATH

3、安装GoldenGate 注:要对应数据库版本的gg安装包

Tar xvf fbo_ggs_Linux_x64_ora11g_64bit.tar

cd /opt/oracle/gg11

Ggsci

GGSCI (centos6) 1>

GGSCI (centos6) 1>create subdirs

 

二、配置GoldenGate

 

装完GoldenGate后需要执行两步操作,在Source端。

Sql> alter database add supplemental log data;

Sql> alter system switch logfile;

Sql> desc v$database

Sql> select supplemental_log_data_min from v$database;

在Source和target把库都起来,并创建gg用户

Sql>create user ggusr identified by ggusr default tablespace users;

Sql>grant connect,resource to ggusr;

 

1、配置GoldenGate  MGR    注:Source和Target都要配置。

Ggsci

Ggsci(dg1) 1> edit params mgr   创建manager初始化参数文件。

--this is the minimal configuration of manager process   注释

Port 7809

Ggsci(dg1) 2>Start mgr   启动

Ggsci(dg1) 3>Info mgr   查启动信息

Ggsci(dg1) 4>quit

Ps –ef |grep ora

    

2、在Source端

Ggsci

Ggsci(dg1) 1> dblogin userid system, password zsht2014  //红字是用户密码

Ggsci(dg1) 2> add trandata ggusr.*     源数据要捕获的表

Ggsci(dg1) 3> info trandata ggusr.*

源数据库端配置:

 

一、增加Primary Extract

1,GGSCI (centos6) 3> add extract eiexkk,tranlog,begin now,threads 2   //数字代表节点

---抽取进程,负责抓取SourceDB中变化的数据。

2,GGSCI (centos6) 4> edit params eiexkk

Extract eiexkk

Userid ggusr, password ggusr

exttrail ./dirdat/kk

DDL INCLUDE ALL

GETTRUNCATES

GETUPDATES

Table ogg_dbbak.*;                         //红色代表用户

3,GGSCI (centos6) 6> add exttrail ./dirdat/kk,extract eiexkk,megabytes 5 //数字代表抽取文件多大。

EXTTRAIL added.

 

二、增加Pump Extract1 用于向目标1进行数据复制

1,GGSCI (centos6) 7> add extract extpp,exttrailsource ./dirdat/kk

EXTRACT added.

 

2,GGSCI (centos6) 10> edit params extpp

EXTRACT extpp

userid system,password zsht2014

RMTHOST 192.168.31.201, MGRPORT 7809

RMTTRAIL ./dirdat/kk

TABLE ogg_dbbak.*;

3,GGSCI (centos6) 11> add rmttrail ./dirdat/kk,extract extpp,megabytes 5

RMTTRAIL added.

 

三、启动复制进程:

GGSCI (centos6) 16> start extract eiexkk

GGSCI (centos6) 17> start extract extpp

GGSCI (centos6) 19> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           

EXTRACT     RUNNING     EXTKK      00:00:00      00:00:11    

EXTRACT     RUNNING     EXTPP      00:00:00      00:00:00    

 

目标数据库配置:

1.edit params ./globals

 checkpointtable system.ggchkpttab   

 Ggschema ggusr

2,Ggsci

GGSCI (centos7) 7> dblogin userid system, password zsht2014

GGSCI (centos7) 7> add checkpointtable system.ggchkpttab

3,增加Replicat

GGSCI (centos7) 3> add replicat repm1,exttrail ./dirdat/kk  //如果出现错误加上checkpointtable system.ggchkpttab  

REPLICAT added.

----复制进程,将抽取到队列中的文件解析后写进TargetDB。

4,GGSCI (centos7) 5> edit params repm1

REPLICAT REPM1

USERID system, password zsht2014

HANDLECOLLISIONS

ASSUMETARGETDEFS

DISCARDFILE ./dirrpt/REPM1.DSC, PURGE

GETTRUNCATES

GETUPDATES

Dynamicresolution

DDL INCLUDE ALL

MAP oggtest.*, TARGET oggtest.*;

5,GGSCI (centos7) 36> start replicat repm1

 

GoldenGate DDL配置方案:

一、在源端配置。 注:(每个充当源的数据库都要配置,如多主,双向环境)

1,关闭Oracle 10G回收站机制,11G可以开启。

10g可以用:

Sql> alter system set recyclebin=off; 关闭

Sql> alter system set recyclebin=on; 开启

11g可以用:

Sql> alter system set recyclebin=off deferred; 关闭

Sql> alter system set recyclebin=on deferred; 开启

2,授予权限

SQL> grant execute on utl_file to ggusr;

3,编辑Global参数,加入以下内容:

Ggschema ggusr

4,执行配置脚本:列表如下

marker_setup.sql

ddl_setup.sql

role_setup.sql

grant the role to all goldengate extract users

ddl_enable.sql

install and use the optional performance tool

4.1)执行marker_setup脚本

该脚本安装marker系统,这部分为启用DLL支持所必备,执行该脚本时会提示输入GoldenGate管理帐户schema名

SQL> @marker_setup.sql

Marker setup script

Enter Oracle GoldenGate schema name:ggusr

4.2) 执行ddl_setup脚本

执行该脚本要确认关闭掉所有ORACLE会话,未被关闭的会话会以列表形式显示,执行过程中会要求希望对象属主,并选择安装模式。如果是初次安装就选择“INITIALSETUP”,该模式假设当前没有任何GoldenGate DDL对象存在,如果存在则会删除并重建。如果是重新安装,则应该选择“NORMAL”。具体执行示例如下

SQL> @ddl_setup.sql

4.3) 执行role_setup脚本

该操作会重建DDL同步所需的权限,授予GoldenGate中的DDL对象以DML权限,执行示例如下:

SQL> @role_setup.sql

4.4) 按照上面返回的提示,执行授权操作,注意是将权限授予执行Extract/GGSCI或其它管理操作的用户,我们这里的情况看显然是ggate,执行命令如下:

SQL> grant ggs_ggsuser_role to ggusr;

4.5) 执行ddl_enable脚本

启用DDL触发器,以捕获DDL操作:

SQL> @ddl_enable.sql

4.6) 安装性能优化工具(可选项)

要提高DDL触发器的性能,可以通过ddl_pin脚本,该脚本会将触发器使用的包加载到内存,以此提高效率。该脚本执行时需要引用dbms_shared_pool系统包,因此在使用ddl_pin脚本前需要确保dbms_shared_pool可用

SQL> @?/rdbms/admin/dbmspool.sql

4.7) 执行ddl_pin脚本需要指定GoldenGate管理员schema名称,例如:

SQL> @ddl_pin ggusr

 

 

配置完成,验证数据同步。

....

http://curran.blog.51cto.com/2788306/1252451

GoldenGate用于在各种企业系统间以亚秒级速度复制和集成事务数据,是同类最佳的、易于部署的产品。GoldenGate 可以灵活地在同类和异类系统(包括不同版本、不同的硬件平台)之间移动数据。

  Oracle 于 2009 年收购了 GoldenGate,我们可以看到在全球各行业超过 4,000 个解决方案中实施了 Oracle GoldenGate。该软件执行实时的、基于日志的更改数据捕获 (CDC),能够在异构数据库间以极低的延迟和很小的空间移动大量事务数据。

  GoldenGate TDM 是基于日志的实时CDC软件平台,提供异构环境下大量交易数据的实时捕捉、变换和投递,同时保持亚秒一级的数据延迟。

  基于GoldenGate TDM,我们提供高可用/容灾和实时数据集成的解决方案。

  GoldenGate TDM 采用高内聚低耦合的结构,能够支持多种拓扑结构,包括一对一,一对多,多对一,多对多,层叠和双向复制。

  image

1:GoldenGate 工作原理

image

2:交易数据管理

  GoldenGate提供异构环境下交易数据的实时捕捉、变换、投递。

image

3:GoldenGate变化数据捕捉的优势

1:都提供基于日志的CDC

2:直接从数据库日志中通过自己的专有程序抽取数据

3:支持在备份系统上抓取变化数据

4:对一些数据类型如LONG,XML,BLOB都提供了支持

4:基于日志的实时数据复制

•亚秒级复制 
•不依赖源数据库的触发器和规则,对源数据库影响小。

image

5:GG在数据传输方面的优势

1:GG有很好的机制来保证传输的交易一致性和断点续传。 
2:事务完整性-事务级粒度 
3:只复制成功提交的事务 
4:防止源和目标的不一致性

image

实验:goldengate for mysql  to  mysql

1:环境Centos 6.3 + Mysql 5.5.14 + ggs_Linux_x64_MySQL_64bit.zip

2:install  mysql

GoldenGate配置:

源数据库:

[root@litong ~]# useradd  oggadm1

[root@litong ~]# usermod -g mysql oggadm1

[root@litong ~]# mkdir /ogg

[root@litong ~]# chown -R oggadm1:mysql /ogg

[root@litong ~]# chmod -R 775 /ogg

[root@litong ~]# su - oggadm1

[oggadm1@litong ~]cd /ogg

[oggadm1@litong ~]./ggsci

[oggadm1@litong ogg]create subdirs

[oggadm1@litong ogg]exit

 

mysql:

create user 'oggadm1'@'%' identified by '123456';

grant all privileges on *.* to 'oggadm1'@'%';

flush privileges;

create database oggdb1;

use oggdb1;

create table t1 (id int,name varchar(20));

exit

[root@litong ~]# rpm -q *odbc*

[root@litong ~]# yum install mysql-connector-odbc.x86_64

[root@litong ~]# cat /etc/odbcinst.ini #Mysql 驱动

[root@litong ~]# vim /etc/odbc.ini

[mysql] 
Driver = MySQL #MySQL 是 /etc/odbcinst.ini 
Server = 192.168.0.235 
Port = 3306 
User = oggadm1 
Password = 123456 
Database = oggdb1 
Option = 3 
Socket = /tmp/mysql.sock

测试:

[root@litong ~]# isql mysql

Creating Startup Files and Managers:

[oggadm1@litong ogg]./ggsci

ggsci>edit param  ./GLOBALS

CheckpointTable oggdb1.oggchkpt

ggsci>edit param ./startup.oby

DBLogin SourceDB oggdb1, UserID oggadm1, Password 123456
Start Mgr
Info Mgr
Info CheckpointTable 
ggsci>edit param mgr
Port 15001
PurgeOldExtracts ./dirdat/*, UseCheckpoints
ggsci>Add CheckpointTable
Creating Column Definitions (defgen):

[oggadm1@litong ogg]vim dirprm/dsalesab.prm

DefsFile dirdef/dsalesab.def, Purge
SourceDB oggdb1, UserID oggadm1, Password 123456
Table oggdb1.*; 

[oggadm1@litong ogg]./defgen paramfile dirprm/dsalesab.prm

[oggadm1@litong ogg]scp dirdef/dsalesab.def oggadm2@mysql:/ogg/dirdef

Configuring the Primary Extract:

[oggadm1@litong ogg]./ggsci

ggsci>obey  startup.oby

ggsci>Edit Param esalesaa

Extract esalesaa
ExtTrail ./dirdat/aa
SourceDB oggdb1, UserID oggadm1, Password 123456
TranLogOptions AltLogDest /usr/local/mysql/data/mysql-bin.index
Table oggdb1.*;
ggsci>Add Extract esalesaa, TranLog, Begin Now
ggsci>Add ExtTrail ./dirdat/aa, Extract esalesaa, Megabytes 5
Configuring the Data Pump:
ggsci>Edit Param psalesab
Extract psalesab
RmtHost 192.168.1.21, MgrPort 15002, Compress
RmtTrail ./dirdat/ab
Passthru
Table oggdb1.*;
ggsci>Add Extract psalesab, ExtTrailSource ./dirdat/aa

ggsci>Add RmtTrail ./dirdat/ab, Extract psalesab, Megabytes 5

Verify the Extract Processes (Optional):

ggsci>Info  All

ggsci>Info ExtTrail *

Starting All Processes:

ggsci>Start Extract *

ggsci>Info All

ggsci>Info Extract *

Viewing Reports:

ggsci>Send Extract esalesaa, Report

ggsci>View Report esalesaa

Viewing Statistics:

ggsci>Send Extract esalesaa, Stats

 

 

目标数据库:

[root@mysql ~]# useradd oggadm2

[root@mysql ~]# usermod -g mysql oggadm2

[root@mysql ~]# mkdir /ogg

[root@mysql ~]# chown -R oggadm2:mysql /ogg

[root@mysql ~]# chmod -R 775 /ogg

[root@mysql ~]# su - oggadm12

[oggadm2@mysql ~]cd /ogg

[oggadm2@mysql ogg]./ggsci

[oggadm2@mysql ogg]create subdirs

[oggadm2@mysql ogg]exit

 

mysql:

create user 'oggadm2'@'%' identified by '123456';

grant all privileges on *.* to 'oggadm2'@'%';

flush privileges;

create database oggdb2;

use oggdb2;

create table t1 (id int,name varchar(20));

exit

[root@mysql ~]# rpm -qa *odbc*

[root@mysql ~]# yum install mysql-connector-odbc.x86_64

[mysql] 
Driver = MySQL 
Server = 192.168.1.21 
Port = 3306 
User = oggadm2 
Password = 123456 
Database = oggdb2 
Option = 3 
Socket = /tmp/mysql.sock

测试:

[root@mysql ~]# isql mysql

Creating Startup Files and Managers:

[oggadm2@mysql ogg]./ggsci

ggsci>edit param ./GLOBALS

CheckpointTable oggdb1.oggchkpt

ggsci>edit param ./startup.oby

DBLogin SourceDB oggdb2, UserID oggadm2, Password 123456
Start Mgr
Info Mgr
Info CheckpointTable 
ggsci>edit param mgr
Port 15002
PurgeOldExtracts ./dirdat/*, UseCheckpoints
ggsci>Add CheckpointTable
Configuring the Replicat:

ggsci>Obey startup.oby

ggsci>Edit Param rsalesab

Replicat rsalesab 
DBOptions Host 127.0.0.1, ConnectionPort 3306 
TargetDB oggdb2, UserId root, Password 123456 
SourceDefs dirdef/dsalesab.def 
DiscardFile dirrpt/rsalesab.dsc, Append 
Map oggdb1.*,        Target oggdb2.*;

 

Create the Replicat process:

ggsci>Add Replicat rsalesab, ExtTrail ./dirdat/ab

ggsci>Info All

ggsci>Start Replicat *

ggsci>Info All

ggsci>Info rsalesab

ggsci>Info rsalesab, Detail

ggsci>Send Replicat rsalesab, Report

ggsci>View Report rsalesab

ggsci>Send Replicat rsalesab, Stats

 

 

.............

http://f.dataguru.cn/thread-238464-1-1.html

通过这个文章可以看出OGG并不是必须从Oracle同步到别的数据库。是可以在满足条件的任意数据库之间同步数据的。
原文链接:http://www.xifenfei.com/666.html

一、source端

add extract extl,vam,begin now
ADD EXTTRAIL F:\ogg\mysql\dirdat\rl, EXTRACT EXTL

edit params extl
extract extl
sourcedb test@localhost:3306,userid root,password xifenfei
exttrail F:\ogg\mysql\dirdat\rl
dynamicresolution
gettruncates
table test.t_1;

add EXTRACT pump1, EXTTRAILSOURCE F:\ogg\mysql\dirdat\rl, BEGIN now
add rmttrail /ogg/mysql/dirdat/rl extract pump1

edit params pump1
extract pump1
rmthost 192.168.1.111,mgrport 7808
rmttrail /ogg/mysql/dirdat/rl
PASSTHRU
gettruncates
table test.t_1;

二、target端


edit params ./GLOBALS
dblogin sourcedb test@localhost:3306,userid root,password xifenfei
CHECKPOINTTABLE ogg.chkpoint

ADD CHECKPOINTTABLE ogg.chkpoint

add replicat repl exttrail /ogg/mysql/dirdat/rl,begin now,checkpointtable ogg.chkpoint 

edit params repl
replicat repl
DBOPTIONS HOST 127.0.0.1, CONNECTIONPORT 3306
TARGETDB test,userid root,password xifenfei
assumetargetdefs
reperror default,discard
discardfile /tmp/mysql.dsc,append,megabytes 100
gettruncates
map TEST.T_1, target "test.t_1";

三、说明
本实例是win 中的mysql同步到linux中的mysql
有个注意点:
1、add extract extl,vam,begin now 不像oracle中的tranlog
2、注意各个参数中schema.tablename大小写问题
1)win中不区分,全部使用小写会自动转换为大写
2)在replicate参数中,因为map是从win中的data pump中得到,所以map后面的schema.tablename需要大写
3)在replicate参数中,因为table是linux中的对应linux中的数据库名和表名(mysql是以文件形式存储,一般均为小写),所以map后面的schema.tablename需要小写+双引号,防止转为大写
3、注意mysql数据库编码
四、与oracle不同之处
1、登录
dblogin sourcedb dbname@localhost:3306,userid root,password xifenfei

2、Extract中访问mysql
sourcedb dbname@localhost:3306,userid root,password xifenfei

3、Replicat中访问mysql
DBOPTIONS HOST 127.0.0.1, CONNECTIONPORT 3306
TARGETDB dbname,userid root,password xifenfei

 

 

 

 

............

http://www.acehat.com/database/201410/6408.html

goldengate算是数据同步的利器,可以在不同的库,平台间进行数据的同步,当然还是有一些bug的,不过还是优点大过缺点。

算是尝尝鲜,从官网下载了一个版本12的,可以支持11g,12c。安装的过程我开始以为会很繁琐。结果安装的过程很简单,不过配置和管理要费一些功夫的。后续再说。

下载安装包可以从官网上得到,大概300多兆的样子。

-rw-r--r-- 1 ogg dba 341316447 May 11 03:26 121200_fbo_ggs_Linux_x64_shiphome.zip

选择一下需要基于哪个版本的库来安装goldengate.

ogg1 

选择一下安装目录和Oracle_home的路径。可以配置一个goldengate得管理器。

pic1

然后就是安装了。

pic2

过了一会儿,就提示安装成功了。

pic3

 

 

 

看似实在是太简单了,不过启动的时候还是碰到了两个问题。

一个问题是,启动的时候报了如下的错误。

[ogg@rac1 ~]$ ggsci 
ggsci: error while loading shared libraries: libnnz11.so: cannot open shared object file: No such file or directory

最后查得需要设置变量LD_LIBRARY_PATH的值为Oracle_HOME/lib

在.bash_profile中添加了两个地方。

.bash_profile 
export Oracle_HOME=/u04/app/11.2.0/db/product/11.2.0/dbhome_1 
export LD_LIBRARY_PATH=$Oracle_HOME/lib

再次尝试,环境变量的问题解决了,但是又抛了一个错误。

[ogg@rac1 ~]$ ggsci 
Cannot load ICU resource bundle 'ggMessage', error code 2 - No such file or directory 
Aborted (core dumped)

切换到安装目录下。

[ogg@rac1 oggcore_1]$ ggsci

Oracle GoldenGate Command Interpreter for Oracle 
Version 12.1.2.0.0 17185003 OGGCORE_12.1.2.0.0_PLATFORMS_130924.1316_FBO 
Linux, x64, 64bit (optimized), Oracle 11g on Sep 25 2013 00:31:13 
Operating system character set identified as UTF-8.

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

GGSCI (rac1) 1>

 

=============================

http://hunter8888.blog.51cto.com/1850277/1440622

GoldenGate作为Oracle公司大力发展的核心战略产品,在高可用、容灾、
数据抽取转换方面扮演着越来越重要的作用。goldengate可以做什么,说起来真的太多了,
高可用、容灾、Real-Time数据同步,如果你做过BI,一定知道ETL的工具(datastage、infomatica等),
goldengate也可以做,而且,还有两个很关键的因素,第一,goldengate支持异构的数据库,几乎囊括
了所有的主流数据库,到底哪些呢,
去这里看看吧http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html
主流的DB2、mysql、sql server、sysbase都支持。
第二,是oracle大力发展的核心战略产品。

goldengate同步在源端捕获日志,extract日志信息发送到目标端,由目标端的replicat日志应用进程
应用事务,达到数据同步。同时,源端的extract抽取进程也可以选择性配置抽取的trail磁盘文件,
目标端的replicat应用进程也可以选择性配置抽取到的日志的trail文件,防止日志丢失。

类似售前性质的话不多说,
本文精确的介绍了在64位linux环境下oracle对oracle的goldengate安装配置(不区分10g、11g),
本文同时配置了batch模式下的数据初始化过程和online模式的实时数据同步过程,按照本文安装配置
能让你快速的构建goldengate环境,不会有任何问题。

1、环境介绍及准备:
两台装有oracle 10g软件的centos(本文安装配置同样适用于oracle 11g).
源端: IP:192.168.1.201   ORACLE_SID=ggsource
目标端: IP:192.168.1.202  ORACLE_SID=ggtarget

1.配置环境变量:
source:
ORACLE_SID=ggsource
ORACLE_BASE=/u01
ORACLE_HOME=$ORACLE_BASE/oracle
PATH=$ORACLE_HOME/bin:$ORACLE_BASE/gg:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_BASE/gg11:$LD_LIBRARY_PATH

export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH

target:
ORACLE_SID=ggtarget
ORACLE_BASE=/u01
ORACLE_HOME=$ORACLE_BASE/oracle
PATH=$ORACLE_HOME/bin:$ORACLE_BASE/gg:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_BASE/gg11:$LD_LIBRARY_PATH

export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH
其他的没什么,搜索路劲加入了goldengate的安装目录$ORACLE_BASE/gg和LD_LIBRARY_PATH,
(后面在安装goldengate时,我的goldengate产品解压安装在$ORACLE_BASE/gg目录下)
LD_LIBRARY_PATH一定要配置,否则在create subdirs会报如下错误:
[oracle@mycentos02 ~]$ ggsci
ggsci: error while loading shared libraries: libnnz10.so: cannot open shared object file: No such file or directory


2.goldengate下载及安装(需要同时在source机器和target机器安装):
哪里下载?www.oracle.com->middleware->goldengate
怎么安装?goldengate的安装简单到吓人,解压就是安装。将下载到的64位gg for oracle 10g,解压到/u01/gg目录下,
/u01/gg及为我的goldengate安装目录。解压之后,cd到/u01/gg目录下,运行ggsci,在ggsci下面ggsci>create subdirs,
创建goldengate对应的目录,就算安装完成。

GGSCI (mycentos) 1> create subdirs

Creating subdirectories under current directory /u01/gg

Parameter files                /u01/gg/dirprm: already exists
Report files                   /u01/gg/dirrpt: created
Checkpoint files               /u01/gg/dirchk: created
Process status files           /u01/gg/dirpcs: created
SQL script files               /u01/gg/dirsql: created
Database definitions files     /u01/gg/dirdef: created
Extract data files             /u01/gg/dirdat: created
Temporary files                /u01/gg/dirtmp: created
Stdout files                   /u01/gg/dirout: created


GGSCI (mycentos) 2>

我们看到,在gg的安装目录下面建立了一些目录,这些目录是goldengate运行过程中保存相关信息的目录。譬如,
/u01/gg/dirrpt是report也就是goldengate的报表目录, /u01/gg/dirprm是parameter目录,也就是goldengate
进程的参数配置目录等等,其他的不再一一论述。
至此,goldengate安装完成。

3.在source端增加supplemental log支持:

SQL> alter database add supplemental log data;

Database altered.

SQL> alter system switch logfile;

System altered.

SQL> select supplemental_log_data_min from v$database;

SUPPLEME
--------
YES

SQL>

4.在source端和target端同时创建gguser及其对应的表空间:

SQL> create user gguser identified by oracle default tablespace users quota unlimited on users;

User created.

SQL> grant dba to gguser;

Grant succeeded.

SQL>

5.在source端和target端数据库的gguser用户下创建测试表,并在source端插入初始数据:
source端:
SQL> create table ggtable(id number,name varchar2(50));

Table created.

SQL>

SQL> insert into ggtable values(1,'hunter01');

1 row created.

SQL> insert into ggtable values(2,'hunter02');

1 row created.

SQL> insert into ggtable values(3,'hunter03');

1 row created.

SQL> commit;

Commit complete.

SQL>

target端:
SQL> create table ggtable(id number,name varchar2(50));

Table created.

SQL>

6.在source和target端配置mgr进程,并启动:
manager是goldengate的管理进程,在goldengate运行时必须启动,所以source和target两端都要配置。

GGSCI (mycentos) 2> edit params mgr


GGSCI (mycentos) 3> start mgr

Manager started.


GGSCI (mycentos) 4> info mgr

Manager is running (IP port mycentos.7809).


GGSCI (mycentos) 5>

7.配置goldengate要同步的表:
GGSCI (mycentos) 1> dblogin userid gguser,password oracle
Successfully logged into database.

GGSCI (mycentos) 2> add trandata gguser.ggtable

2014-07-20 15:37:47  WARNING OGG-00869  No unique key is defined for table 'GGTABLE'. All viable columns will be used to represent the key, but may not guarantee uniqueness.  KEYCOLS may be used to define the key.

Logging of supplemental redo data enabled for table GGUSER.GGTABLE.

 

GGSCI (mycentos) 3> info trandata gguser.*

Logging of supplemental redo log data is enabled for table GGUSER.GGTABLE.

Columns supplementally logged for table GGUSER.GGTABLE: ID, NAME.

GGSCI (mycentos) 4> 
这里有一个表没有unique key的warning,我们忽略,你也可以给表建立unique key.

8.完成initial load:
goldengate有batch和online两种运行模式,在online模式同步source端的数据之前,需要
初始化target端的数据,当然,如果在goldengate启动运行同步之前你的源和
目标端的数据一致,此步骤可以省略。另外,就算你要在goldengate运行之前初始化两端的数据,
也可以用其他任何的数据复制和同步手段,例如exp/expdp等等。这里,是介绍goldengate的initial
load过程,并且我这里用的是direct load模式,其他模式我不详细列举,有兴趣查阅goldengate的相关
文档:
source端:
配置extract进程并配置该进程参数:
GGSCI (mycentos) 2> add extract einikk,sourceistable
EXTRACT added.


GGSCI (mycentos) 3>

 

GGSCI (mycentos) 3> edit params einikk

参数文件:
EXTRACT EINIKK
USERID gguser, PASSWORD "oracle"
RMTHOST 192.168.1.202, MGRPORT 7809
RMTTASK REPLICAT, GROUP RINIKK
TABLE gguser.ggtable;
其中einikk为抽取的组名称,sourceistable表示是一个initial load的task.

目标端:
配置replicat进程rinikk,并编辑该进程的参数:
add replicat rinikk,specialrun

edit params rinikk

参数文件:
REPLICAT RINIKK
ASSUMETARGETDEFS
USERID gguser, PASSWORD oracle
DISCARDFILE ./dirrpt/RINIKK.dsc, PURGE
MAP gguser.*, TARGET gguser.*;

开始initial load:
启动抽取进程einikk,及进行了initial load的过程:

GGSCI (mycentos) 5> start extract einikk

Sending START request to MANAGER ...
EXTRACT EINIKK starting

我们view report einikk查看einikk的报告,可以看到已经完成了源端数据的初始化,
也就是在目标端插入了初始的三条数据:

Processing table GGUSER.GGTABLE

***********************************************************************
*                   ** Run Time Statistics **                         *
***********************************************************************


Report at 2014-07-20 17:01:13 (activity since 2014-07-20 17:01:03)

Output to RINIKK:

From Table GGUSER.GGTABLE:
       #                   inserts:         3
       #                   updates:         0
       #                   deletes:         0
       #                  discards:         0

至此,initial load过程完成。

9.配置online模式的数据同步:
此过程也就是配置源端的extract进程和目标端的replicat进程.

在源端配置抽取进程eorakk,并配置该进程参数:
GGSCI (mycentos) 7> add extract eorakk,tranlog,begin now,threads 1
EXTRACT added.


GGSCI (mycentos) 8> info extract *

EXTRACT    EORAKK    Initialized   2014-07-20 17:09   Status STOPPED
Checkpoint Lag       00:00:00 (updated 00:00:13 ago)
Log Read Checkpoint  Oracle Redo Logs
                     2014-07-20 17:09:47  Thread 1, Seqno 0, RBA 0
                     SCN 0.0 (0)


GGSCI (mycentos) 9>

GGSCI (mycentos) 9> edit params eorakk


EXTRACT EORAKK
USERID system, PASSWORD oracle
RMTHOST 192.168.1.202, MGRPORT 7809
RMTTRAIL ./dirdat/kk
TABLE gguser.ggtable;


在source端增加目标端的trail文件:
add rmttrail ./dirdat/kk,extract eorakk

GGSCI (mycentos) 10> add rmttrail ./dirdat/kk,extract eorakk
RMTTRAIL added.


GGSCI (mycentos) 11> info rmttrail *

       Extract Trail: ./dirdat/kk
             Extract: EORAKK
               Seqno: 0
                 RBA: 0
           File Size: 100M

 

GGSCI (mycentos) 12>

然后,启动该抽取进程:
GGSCI (mycentos) 12> start extract eorakk

Sending START request to MANAGER ...
EXTRACT EORAKK starting


GGSCI (mycentos) 13> info extract eorakk

EXTRACT    EORAKK    Last Started 2014-07-20 17:18   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:09 ago)
Log Read Checkpoint  Oracle Redo Logs
                     2014-07-20 17:18:49  Thread 1, Seqno 4, RBA 2489344
                     SCN 0.578967 (578967)


GGSCI (mycentos) 14>

在目标端配置replicat进程,并启动:
首先,配置checkpoint表:
edit params ./GLOBALS

GGSCI (mycentos02) 1> edit params ./GLoBALS


CHECKPOINTTABLE system.ggchkptable

创建ggchkptable:
GGSCI (mycentos02) 1>dblogin userid system,password oracle

add checkpointtable
这样我们就建立了checkpointtable:system.ggchkptable,我们登陆到目标端的system用户下可以
看到该表:
[oracle@mycentos02 ~]$ sqlplus system/oracle

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jul 20 05:27:58 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL> desc ggchkptable
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 GROUP_NAME                                NOT NULL VARCHAR2(8)
 GROUP_KEY                                 NOT NULL NUMBER(19)
 SEQNO                                              NUMBER(10)
 RBA                                       NOT NULL NUMBER(19)
 AUDIT_TS                                           VARCHAR2(29)
 CREATE_TS                                 NOT NULL DATE
 LAST_UPDATE_TS                            NOT NULL DATE
 CURRENT_DIR                               NOT NULL VARCHAR2(255)
 LOG_CSN                                            VARCHAR2(129)
 LOG_XID                                            VARCHAR2(129)
 LOG_CMPLT_CSN                                      VARCHAR2(129)
 LOG_CMPLT_XIDS                                     VARCHAR2(2000)
 VERSION                                            NUMBER(3)

SQL>

配置replicat进程rorakk,并启动:
GGSCI (mycentos02) 1> add replicat rorakk,exttrail ./dirdat/kk
REPLICAT added.


GGSCI (mycentos02) 2>

参数:
edit params rorakk

REPLICAT RINIKK
ASSUMETARGETDEFS
USERID gguser, PASSWORD oracle
DISCARDFILE ./dirrpt/RINIKK.dsc, PURGE
MAP gguser.*, TARGET gguser.*;


启动:
start replicat rorakk

这样我们就在source端和target端完成了goldengate数据同步的进程,之后我们在
源端的gguser.ggtable表中插入数据时,可以在目标端的数据库中看到能达到数据同步,
同步有多快呢,oracle公司说sub-second。

补充说明:
goldengate的命令可以在ggsci下面输入help进程查看,进程有stop、running和ABENDED状态,
正常运行时是running状态,我在配置过程中,给rorakk进程的参数文件中
USERID gguser, PASSWORD oracle刚开始写错了gguser的密码,并且,start之后,进程在ABENDED,当然也就无法同步数据,
通过查看该进程的report,
view report rorakk:
2014-07-20 05:43:43  ERROR   OGG-00664  OCI Error beginning session (status = 1017-ORA-01017: invalid username/password; logon denie
d).
发现了该问题。

另外,在映射表这里,MAP gguser.*, TARGET gguser.*;我也忘记写了TARGET,也可以在该进程的report里面检查到了错误原因:
2014-07-20 06:02:43  ERROR   OGG-00212  Invalid option for MAP: gguser.ggtable.

改正了上述两处错误之后,我再次start rorakk,数据立即同步过来了。
总之,遇到错误,要学会查看相关日志和报告,所有的命令,都可以help来查看。

 

本文出自 “hunter的Oracle世界” 博客,转载请与作者联系!

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM