前言:最近刚好在弄数据库同步,网上查了些资料再加上自己整理了一些,做个分享!

一、GoldenGate的安装

官方文档:

Oracle®GoldenGate安装和配置Oracle GoldenGate for Oracle数据库(https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/toc.htm)

1、安装包准备

数据库版本:Oracle Database 11g Release 2(11.2.0.1.0)

此次使用的安装包版本为Oracle GoldenGate 12.3.0.1.2 for Oracle on Linux x86-64

root权限

(创建安装包存放目录)

  1. [root@dbsrc oracle]# mkdir /data/goldengate

(创建源端安装目录)

  1. [root@dbsrc oracle]# mkdir /data/oracle/product/ogg_src

(创建目标端安装目录)

  1. [root@dbtrg oracle]# mkdir /data/oracle/product/ogg_trg

将U盘中的安装包拷贝到本地目录进行解压缩(此处不再赘述)

2、配置环境变量

(oracle权限)

  1. [oracle@dbsrc ~]$ vim ~/.bash_profile

添加以下参数

  1. # User specific environment and startup programs
  2.  
  3. PATH=$PATH:$HOME/.local/bin:$HOME/bin
  4.  
  5. export PATH
  6.  
  7. export ORACLE_BASE=/data/oracle
  8. export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
  9. export ORACLE_SID=orcl
  10. export ORACLE_TERM=xterm
  11. export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
  12. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
  13. export LANG=C
  14. export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
  15. #以上参数为安装oracle时配置的环境变量
  16. # Path Oracle GoldenGate
  17. export OGG_HOME=/data/oracle/product/ogg_src
  18. export PATH=$OGG_HOME:$PATH
  19. export LD_LIBRARY_PATH=$OGG_HOME:$LD_LIBRARY_PATH

注:OGG_HOME为GoldenGate的安装目录

  1. [oracle@dbsrc ~]$ source ~/.bash_profile

3、运行安装程序进行图形化界面安装

  1. [root@dbsrc oracle]# cd /data/goldengate/fbo_oggs_Linux_x64_shiphome/Disk1
  2. [root@dbsrc Disk1]# ./runInstaller

根据使用的数据库版本选择相应的版本

选择安装目录为刚才创建的安装目录其他都默认,接下来都步骤都默认直至安装完成。

4、配置快捷命令

详见上一篇:Rlwrap工具的安装和配置(http://www.cnblogs.com/VoiceOfDreams/p/8576850.html)

(源端)

  1. alias ggsci="rlwrap /data/oracle/product/ogg_src/ggsci"

(目标端)

  1. alias ggsci="rlwrap /data/oracle/product/ogg_trg/ggsci"

路径均为GoldenGate的安装目录

5、查看GoldenGate是否安装成功

  1. [oracle@dbsrc ~]$ ggsci
  2.  
  3. Oracle GoldenGate Command Interpreter for Oracle
  4. Version 12.3.0.1.2 OGGCORE_12.3.0.1.0_PLATFORMS_171208.0005_FBO
  5. Linux, x64, 64bit (optimized), Oracle 11g on Dec 8 2017 21:13:00
  6. Operating system character set identified as US-ASCII.
  7.  
  8. Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
  9.  
  10. GGSCI (dbsrc) 1> view param mgr
  11. PORT 7809
  12.  
  13. GGSCI (dbsrc) 2> info mgr
  14. Manager is running (IP port dbsrc.7809,Process ID 5682)

此版本已经自动建立子目录,无需再使用(create subdirs)命令创建

二、配置数据库支持GoldenGate

1、为GoldenGate创建独立的用户和分配必要的权限

  1. [oracle@dbsrc ~]$ sqlplus / as sysdba
  2.  
  3. SQL*Plus: Release 11.2.0.1.0 Production on Mon Mar 12 16:09:25 2018
  4.  
  5. Copyright (c) 1982, 2009, Oracle. All rights reserved.
  6.  
  7. Connected to:
  8. Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
  9. With the Partitioning, OLAP, Data Mining and Real Application Testing options
  10.  
  11. SQL> create tablespace OGG logging datafile '/data/oracle/oradata/orcl/OGG.DBF' size 20m autoextend on uniform size 2m;

注:autoextend on 打开自动扩展         uniform 指定表空间extend的大小,缺省值为1m

此表空间只用于DDL模式,不可用于其他模式

若需删除表空间:

  1. SQL> drop tablespace OGG including contents and datafiles cascade constraints;

创建用户并授权

  1. SQL> create user ogg identified by pwd default tablespace OGG temporary tablespace TEMP quota unlimited on OGG;

注:create user 用户名 identified by 密码 default tablespace 表空间名 temporary tablespace 临时表空间名 quota unlimited on 表空间名;

若需要删除用户,执行以下SQL

  1. SQL> drop user 用户名 cascade

给用户授权

SQL> grant unlimited tablespace to ogg;

SQL> grant connect, resource, dba to ogg;

SQL> grant create session, alter session to ogg;

SQL> grant alter system to ogg;

SQL> grant select any dictionary to ogg;

SQL> grant flashback any table to ogg;

SQL> grant select any table, insert any table, update any table, delete any table, drop any table to ogg;

SQL> grant create table, create sequence to ogg;

SQL> grant select on dba_clusters to ogg;

SQL> grant select on v_$database to ogg;

SQL> grant select on sys.logmnr_buildlog to ogg;

SQL> grant select any transaction to ogg;

SQL> grant lock any table to ogg;

SQL> grant execute on dbms_flashback to ogg;

SQL> grant execute on dbms_logmnr_d to ogg;

SQL> grant execute on dbms_capture_adm to ogg;

SQL> grant execute on dbms_streams to ogg;

SQL> grant execute on utl_file to ogg;

SQL> exec dbms_streams_auth.grant_admin_privilege('ogg');

创建测试用表和数据

  1. SQL> create table ogg.togg(id primary key, name, type, CREATED, update_date) as select object_id, object_name, object_type, CREATED, sysdate from dba_objects where rownum < 101;

2、开启数据库附加日志

oracle 11.2.0.4和oracle 12.1.0.2及之后的版本需要设置如下参数,本次所用数据库版本为Oracle 11.2.0.1.0就无需设置此参数了,做个记录吧!

  1. SQL> alter system set enable_goldengate_replication=true scope=both;

查看归档模式、附加日志和强制日志是否开启

  1. SQL> select log_mode, supplemental_log_data_min, force_logging from v$database;

修改模式

  1. SQL> shutdown immediate; #立即关闭数据库,不允许新的连接和事物启动
  2. SQL> startup mount; #装载数据库而不启动
  3. SQL> alter database archivelog; #启用归档模式
  4. SQL> alter database open; #打开数据库
  5. SQL> alter database force logging; #启用强制日志
  6. SQL> alter database add supplemental log data; #启用附加日志
    SQL> alter system switch logfile; #切换日志文件

(用户级别的附加日志和表级别的附加日志可以在最后配置,即启动同步服务前一步进行配置。两种类型的附加日志只需配置其中之一,不过可以配置用户级别的附加日志的话就不需要每张表都配置了)

用户级别的附加日志

  1. [oracle@dbsrc ~]$ ggsci
    ...
    GGSCI (dbsrc) 1> dblogin userid ogg, password pwd
  2. Successfully logged into database
  3.  
  4. GGSCI (dbsrc as ogg@orcl) 2> add schematrandata ogg

(由于此版本数据库为11.2.0.1,需要打补丁)

官方参考文献:https://docs.oracle.com/goldengate/1212/gg-winux/GWURF/ggsci_commands066.htm#GWURF265

(如果Oracle版本早于11.2.0.2,则将Oracle Patch 10423000应用于源数据库。)

表级别的附加日志

  1. [oracle@dbsrc ~]$ ggsci
    ...
    GGSCI (dbsrc) 1> dblogin userid ogg, password pwd
  2. Successfully logged into database
  3.  
  4. GGSCI (dbsrc as ogg@orcl) 2> add trandata ogg.togg;

注:add trandata 用户名.表名;

3、执行配置脚本

进入GoldenGate安装目录

(源端)

  1. [oracle@dbsrc ~]$ cd /data/oracle/product/ogg_src

(目标端)

  1. [oracle@dbtrg ~]$ cd /data/oracle/product/ogg_trg

登录sqlplus

  1. SQL> @marker_setup
  2. 输入GoldenGate账户名ogg
  3. SQL> @ddl_setup
  4. 输入GoldenGate账户名ogg
  5. SQL> @role_setup
  6. 输入GoldenGate账户名ogg
  7.  
  8. GRANT GGS_GGSUSER_ROLE TO <loggedUser>
  9.  
  10. SQL> grant ggs_ggsuser_role to ogg;
  11. SQL> @ddl_enable

(DDL同步配置完成)

4、配置Manager进程(管理进程)

Manager进程必须在源端和目标端运行,并且在Extract和Replicat进程之前启动,没有该进程OGG无法做其它的操作,它管理启动Oracle GoldenGate进程、启动动态进程、分配端口给GoldenGate进程、管理trail file、创建事件,错误和诊断报告工作;

  1. [oracle@dbsrc ~]$ ggsci
  2.  
  3. GGSCI (dbsrc) > info mgr
  4. Manager is running (IP port dbsrc.,Process ID )

源端:

  1. GGSCI (dbsrc) > edit param mgr
  2.  
  3. PORT 7839
  4. DYNAMICPORTLIST 7840-7939
  5. AUTOSTART EXTRACT *
  6. AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 2
  7. PURGEOLDEXTRACTS /data/oracle/product/ogg_src/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 5
  8. LAGREPORTHOURS 1
  9. LAGINFOMINUTES 30
  10. LAGCRITICALMINUTES 45

注:

PORT 7839

通信端口7839, 源端和目标端需要保持一致。

DYNAMICPORTLIST  7840-7939

动态端口列表的范围从7840到7939。当制定端口被占用或者出现通信故障,管理进程将会从列表中选择下一个端口尝试连接,避免通信端口的单点故障。

AUTOSTART EXTRACT *

当MGR进程启动后启动EXTRACT进程

AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 2

当EXTRACT进程中断后尝试自动重启,每隔2分钟尝试启动一次,尝试5次。

PURGEOLDEXTRACTS /data/oracle/product/ogg_src/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 5

(相对路径写法)PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 5

定期清理dirdat路径下的本地队列(local trail)。保留期限10天,过期后自动删除。从而控制队列文件的目录不会增长过大。

LAGREPORTHOURS 1

每隔一小时检查各进程延时情况,并记录到goldengate report文件。

LAGINFOMINUTES 30

进程复制延时超过30分钟,向日志文件记录一条错误日志

LAGCRITICALMINUTES 45

传输延时超过45分钟将写入警告日志

目标端:

  1. GGSCI (dbtrg) > edit param mgr
  2.  
  3. PORT 7839
    USERID ogg, PASSWORD pwd
  4. DYNAMICPORTLIST 7840-7939
  5. AUTOSTART REPLICAT *
  6. AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 2
  7. PURGEOLDEXTRACTS /data/oracle/product/ogg_trg/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 10
  8. PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10
  9. PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10
  10. LAGREPORTHOURS 1
  11. LAGINFOMINUTES 30
  12. LAGCRITICALMINUTES 45

注:

USERID ogg, PASSWORD pwd

GoldenGate用户登录数据库的用户名和密码,密码未做加密处理。

如果密码需要加密使用:GGSCI (dbtrg) 1> encrypt password pwd ,ENCRYPTKEY default

可以得到加密后的密码字符串,之后配置进程若使用加密过的密码,需要带参数(ENCRYPTKEY default)。

例如:USERID ogg, PASSWORD xxx(加密过的密码) ,ENCRYPTKEY default

AUTOSTART REPLICAT *

当MGR进程启动后启动REPLICAT进程

AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 2

当REPLICAT进程中断后尝试自动重启,每隔2分钟尝试启动一次,尝试5次。

PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10

删除DDL历史表,最小保存7天,最大保存10天。

PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10

删除MARKER历史表,最小保存7天,最大保存10天。

5、配置Extract进程(只在源端配置)

  Extract 运行在源端或者根据系统和业务的需求可以同时运行在两端,抽取捕获系统变更统数据;它可以配置为初始化数据加载(直接从数据源中加载静态的数据)和在某个时间点后源端与服务端变更数据同步(从在线日志或归档日志抽取捕获变更的数据),它也可以在支持DDL变更的系统中抽取捕获DDL;

  当配置为数据同步时,extract进程抽取捕获extract配置文件里配置的对象的任何DML和DDL(需要额外配置)的操作,extract进程记录这些操作,直到用户提交或回滚事务;当收到回滚(rollback)时,extract撤销这些记录;当收到(commit)操作后,extract进程记录保存这些操作到一个或多个trail文件里并以队列的形式发送到目标端,以确保数据传输速度和数据的一致性。

1)、配置主抽取进程(Primary Extract)

使用ogg用户登录GoldenGate

  1. GGSCI (dbsrc) > dblogin userid ogg, password pwd

创建主抽取进程

  1. GGSCI (dbsrc as ogg@orcl) > add extract ext1,tranlog,begin now

创建源端trail文件并指定路径

主进程的作用是抽取捕获系统变更数据并将这些数据保存到trail文件里,所以必须为其配置trail文件目录和trail文件名的两个字符名

  1. GGSCI (dbsrc as ogg@orcl) > add exttrail /data/oracle/product/ogg_src/dirdat/sr, extract ext1
  2.  
  3. GGSCI (dbsrc as ogg@orcl) > edit param ext1
  4.  
  5. extract ext1
  6. SETENV(ORACLE_SID="orcl")
  7. SETENV(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
  8. userid ogg, password pwd
  9. REPORTCOUNT EVERY 30 MINUTES, RATE
  10. DISCARDFILE /data/oracle/product/ogg_src/dirrpt/extsr.dsc, APPEND, MEGABYTES 1024
  11. DISCARDROLLOVER AT 3:00
  12. EXTTRAIL /data/oracle/product/ogg_src/dirdat/sr
  13. DYNAMICRESOLUTION
  14. DBOPTIONS ALLOWUNUSEDCOLUMN
  15. FETCHOPTIONS NOUSESNAPSHOT
  16. FETCHOPTIONS FETCHPKUPDATECOLS
  17. table ogg.*;

注:

SETENV(ORACLE_SID="orcl")

设置Oracle数据库实例sid

SETENV(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

设置goldengate的字符集变量信息,此处值会覆盖操作系统级别的变量。该值需要和数据库字符集匹配一致。

REPORTCOUNT EVERY 30 MINUTES, RATE

每隔30分钟报告一次从程序开始到现在的抽取进程或者复制进程的事物记录数,并汇报进程的统计信息

DISCARDFILE /data/oracle/product/ogg_src/dirrpt/extsr.dsc, APPEND, MEGABYTES 1024

将执行失败的记录保存在discard file中,discard file文件记录了GoldenGate进程错误、数据库错误、GoldenGate操作等信息。该文件位于/data/oracle/product/ogg_src/dirrpt/extsr.dsc,大小为1024MB。 文件中已经包含记录的话,再后面继续追加,不删除之前的记录。

DISCARDROLLOVER AT 3:00

为了防止discard file被写满,每天3:00做一次文件过期设定

EXTTRAIL /data/oracle/product/ogg_src/dirdat/sr

队列文件路径, trail文件存放路径。

DYNAMICRESOLUTION

有时候开启OGG进程的时候较慢,可能是因为需要同步的表太多,OGG在开启进程之前会将需要同步的表建立一个记录并且存入到磁盘中,这样就需要耗费大量的时间。使用该参数来解决此问题。

DBOPTIONS  ALLOWUNUSEDCOLUMN

用于阻止抽取进程抽取数据时由于表含有unused列而导致进程异常终止(abend)。使用该参数,抽取进程抽取到unused列时也会向日志文件记录一条警告信息。

FETCHOPTIONS NOUSESNAPSHOT

默认值为 usesnapshot,表示利用数据库闪回读取数据。Nousesnapshot表示直接从原表读取相关数据。

FETCHOPTIONS FETCHPKUPDATECOLS

当使用了HANDLECOLLISIONS时,请使用该参数。

复制进程出现丢失update记录(missing update)并且更新的是主键,update将转换成insert。由于插入的记录可能不是完整的行,若要保证完整需要加入此参数

table ogg.*;

需要复制的对象列表

2)、配置投递进程(Data Pump)

  Data Pumps是第二种类型的GoldenGate extract配置,如果不使用Data Pump,extract进程必须发送抽取捕获的操作数据到目标端trail;如果配置了Data Pump,extract进程抽取捕获数据写入到trail,Data pump读取trail并且通过网络发送trail到目标端trail,data pump 加强了源端和目标端抽取捕获数据的可用性,

主要优点:

1.保护网络传输失败和目标端失败;

2.可以实现复杂的数据过滤和转换;

3.可以结合多个数据源到目标端;

4.可以同步一个源数据到多个目标端。

创建并指定源数据库trail文件位置,必须包含两个字符,这个路径和主抽取进程(Primary Extract)中指定的trail目录和trail文件命名必须相同,因为Data Pump进程要从此读取主抽取进程生成的trail文件;

  1. GGSCI (dbsrc as ogg@orcl) > add extract dpump1, exttrailsource /data/oracle/product/ogg_src/dirdat/sr
  2.  
  3. GGSCI (dbsrc as ogg@orcl) > edit param dpump1
  4.  
  5. extract dpump1
  6. SETENV(ORACLE_SID="orcl")
  7. SETENV(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
  8. RMTHOST 10.0.0.64, mgrport 7839, COMPRESS
  9. PASSTHRU
  10. RMTTRAIL /data/oracle/product/ogg_trg/dirdat/tr
  11. --DYNAMICRESOLUTION
  12. table ogg.*;

注:

RMTHOST 10.0.0.64, mgrport 7839, COMPRESS

目标端主机IP,管理进程端口号,投递前压缩队列文件

PASSTHRU

表示传输进程直接跟抽取进程交互,而不再和数据库进行交互,减少数据库资源的利用。

RMTTRAIL /data/oracle/product/ogg_trg/dirdat/tr

目标端保存队列文件的目录

DYNAMICRESOLUTION

动态解析表名

table ogg.*;

复制范围和抽取进程对应即可

源端可以配置多个主抽取进程,也可以配置多个Data Pump进程,但必须为每个要同步的目标端配置一个Data Pump进程;

指定Data Pump进程发送trail文件到目标端的位置(目标端trail文件添加到队列中)

  1. GGSCI (dbsrc as ogg@orcl) > add rmttrail /data/oracle/product/ogg_trg/dirdat/tr, extract dpump1

6、目标端配置Replicat进程(复制进程)

  Replicat进程运行在目标端读取tail文件和重构DML、DDL并应用到目标数据库;Replicat编译SQL一次,当变量值不同时重复使用编译过的SQL;Replicat进程可以像extract进程一样配置初始化数据加载(直接从数据源中加载静态的数据)和在某个时间点后源端与服务端变更数据同步(从在线日志或归档日志抽取捕获变更的数据);

  Checkpoint存储从文件读取和写入的检测点位置,用于还原和恢复数据,Checkpoint确保发生变化并提交(commit)的数据被extract抽取捕获和被replicat进程应用到目标端;保证在系统、网络或者GoldenGate需要重启进程时发生的错误不会导致数据丢失;在复杂的同步配置中checkpoints启用多个extract和replicat进程从同一个trail集中读取数据。

使用GoldenGate用户(ogg)登录

  1. GGSCI (dbtrg) > dblogin userid ogg, password pwd

创建和配置Checkpoint Table

  1. GGSCI (dbtrg as ogg@orcl) > add checkpointtable ogg.checkpoint
  2.  
  3. GGSCI (dbtrg as ogg@orcl) > edit param ./GLOBALS
  4.  
  5. GGSCHEMA ogg
  6. CHECKPOINTTABLE ogg.checkpoint

注:首次编辑GoldenGate配置文件时,GLOBALS文件以大写命名并且没有扩展名创建在GoldenGate_home根目录

创建replicat进程

  1. GGSCI (dbtrg as ogg@orcl) > add replicat rep1, exttrail /data/oracle/product/ogg_trg/dirdat/tr, checkpointtable ogg.checkpoint
  2.  
  3. GGSCI (dbtrg as ogg@orcl) > edit param rep1
  4.  
  5. REPLICAT rep1
  6. SETENV(ORACLE_SID="orcl")
  7. SETENV(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
  8. USERID ogg, PASSWORD pwd
  9. REPORT AT 06:00
  10. REPORTCOUNT EVERY 30 MINUTES, RATE
  11. REPORTROLLOVER AT 02:00
  12. REPERROR DEFAULT, ABEND
  13. ALLOWNOOPUPDATES
  14. ASSUMETARGETDEFS
  15. HANDLECOLLISIONS
  16. DISCARDFILE /data/oracle/product/ogg_trg/dirrpt/repsa.dsc, APPEND, MEGABYTES 1024
  17. DISCARDROLLOVER AT 02:00
  18. MAP ogg.*, target ogg.*;

注:

REPORT AT 06:00

每天06:00定期生成一个report文件

REPORTCOUNT EVERY 30 MINUTES, RATE

每隔30分钟报告一次从程序开始到现在的抽取进程或者复制进程的事物记录数,并汇报进程的统计信息

REPORTROLLOVER AT 02:00

为了防止report file被写满,每天2:00做一次文件过期设定

REPERROR DEFAULT, ABEND

除了特殊指定的REPERROR语句,报告所有复制期间出现的错误,回滚非正常中断的事物和进程。遇到不能处理的错误就自动abend,启动需要人工干预处理

ALLOWNOOPUPDATES

当源表有排除列情况或者有目标表不存在的列时,当更新这列goldengate默认报错。应用该参数后,即可让goldengate生成一条警告信息而不是报错。

ASSUMETARGETDEFS

使用ASSUMETARGETDEFS参数时,用MAP语句中指定的生产库源表和灾备端目标表具有相同的列结构。它指示的Oracle GoldenGate不在生产端查找源表的结构定义。

HANDLECOLLISIONS

用于goldengate自动过滤不能出来的冲突记录,为了严格保证数据一致性

DISCARDFILE /data/oracle/product/ogg_trg/dirrpt/repsa.dsc, APPEND, MEGABYTES 1024

将执行失败的记录保存在discard file中,discard file文件记录了GoldenGate进程错误、数据库错误、GoldenGate操作等信息。该文件位于./dirrpt/repsa.dsc,大小为1024MB。 文件中已经包含记录的话,再后面继续追加,不删除之前的记录。

DISCARDROLLOVER AT 02:00

为了防止discard file被写满,每天2:00做一次文件过期设定

MAP ogg.*, target ogg.*;

对应需要复制的对象,默认一一对应传输进程

三、 初始化数据

  DML操作包括INSERT、UPDATE、DELETE、SELECT操作,而在这些操作中UPDATE、DELETE操作Redo只记录了变更的数据列以及行ID(ROWID),GoldenGate抽取数据后将其转换为自己的格式发送都目标端。在同步开始前目标端没有初始化数据(目标端为空数据),那么事物产生的UPDATE、DELETE DML操作发送到目标端,目标端GoldenGate Replicat进程会因为找不到数据而报错从而导致Replicat进程崩溃停止(ABENDED),所以这就需要我们在同步前初始化数据,初始化完后再同步,这样大大降低错误率。同步数据的方式可以通过DBLINK、EXP/IMP、SQLLDR或者表空间迁移等方式同步。

四、启动GoldenGate

数据初始化后,分别启动目标端MGR进程、Replicat进程,源端MGR进程、主抽取进程(Primary Extract)、Data Pump进程(Secondly Extract)

(目标端)

  1. [oracle@dbtrg ~]$ ggsci
  2.  
  3. GGSCI (dbtrg) > start mgr
  4. Manager started.
  5.  
  6. GGSCI (dbtrg) > info all
  7.  
  8. Program Status Group Lag at Chkpt Time Since Chkpt
  9.  
  10. MANAGER RUNNING
  11. REPLICAT RUNNING REP1 :: ::
  12.  
  13. GGSCI (dbtrg) > stats rep1
  14.  
  15. Sending STATS request to REPLICAT REP1 ...
  16.  
  17. No active replication maps.

(源端)

  1. [oracle@dbsrc ~]$ ggsci
  2.  
  3. GGSCI (dbsrc) > start mgr
  4. Manager started.
  5.  
  6. GGSCI (dbsrc) > info all
  7.  
  8. Program Status Group Lag at Chkpt Time Since Chkpt
  9.  
  10. MANAGER RUNNING
  11. EXTRACT RUNNING DPUMP1 :: ::
  12. EXTRACT RUNNING EXT1 :: ::
  13.  
  14. GGSCI (dbsrc) > stats ext1
  15.  
  16. Sending STATS request to EXTRACT EXT1 ...
  17.  
  18. No active extraction maps.
  19.  
  20. GGSCI (dbsrc) > stats dpump1
  21.  
  22. Sending STATS request to EXTRACT DPUMP1 ...
  23.  
  24. No active extraction maps.

因为在mgr都相应的配置了extract进程和replicat进程的自启动,所以在mgr进程启动后会自动启动extract进程和replicat进程

如果启动失败,查看日志文件ggserr.log

日志文件存储路径:GoldenGate安装目录下(/data/oracle/product/ogg_src/ggserr.log)

  1. [oracle@dbsrc ~]$ vi $OGG_HOME/ggserr.log

Oracle GoldenGate错误集:https://wenku.baidu.com/view/e78f9dd402d276a201292e14.html

五、同步测试

测试的时候分别测试insert、delete、update操作

1、源端进行数据插入操作

  1. [oracle@dbsrc ~]$ sqlplus / as sysdba

使用ogg账户登录

  1. SQL> conn ogg/pwd
  2.  
  3. SQL> select count(*) from togg;
  4. COUNT(*)
  5. ----------
  6.  
  7. SQL> insert into togg(id,name,type) values(,'ww','user');
  8.  
  9. row created.
  10.  
  11. SQL> select count(*) from ogg.togg;
  12. COUNT(*)
  13. ----------

2、源端查看extract(提取)进程状态

  1. GGSCI (dbsrc) > stats ext1
  2.  
  3. Sending STATS request to EXTRACT EXT1 ...
  4.  
  5. Start of Statistics at -- ::.
  6.  
  7. Output to /data/oracle/product/ogg_src/dirdat/sr:
  8.  
  9. Extracting from SA.emp1 to SA.emp1:
  10.  
  11. *** Total statistics since -- :: ***
  12. Total inserts 1.00
  13. Total updates 0.00
  14. Total deletes 0.00
  15. Total discards 0.00
  16. Total operations 1.00
  17.  
  18. *** Daily statistics since -- :: ***
  19. Total inserts 1.00
  20. Total updates 0.00
  21. Total deletes 0.00
  22. Total discards 0.00
  23. Total operations 1.00
  24.  
  25. *** Hourly statistics since -- :: ***
  26. Total inserts 1.00
  27. Total updates 0.00
  28. Total deletes 0.00
  29. Total discards 0.00
  30. Total operations 1.00
  31.  
  32. *** Latest statistics since -- :: ***
  33. Total inserts 1.00
  34. Total updates 0.00
  35. Total deletes 0.00
  36. Total discards 0.00
  37. Total operations 1.00
  38.  
  39. End of Statistics.
  40.  
  41. GGSCI (dbsrc) > stats dpump1
  42.  
  43. Sending STATS request to EXTRACT DPUMP1 ...
  44.  
  45. Start of Statistics at -- ::.
  46.  
  47. Output to /data/oracle/product/ogg_trg/dirdat/tr:
  48.  
  49. Extracting from SA.emp1 to SA.emp1:
  50.  
  51. *** Total statistics since -- :: ***
  52. Total inserts 1.00
  53. Total updates 0.00
  54. Total deletes 0.00
  55. Total discards 0.00
  56. Total operations 1.00
  57.  
  58. *** Daily statistics since -- :: ***
  59. Total inserts 1.00
  60. Total updates 0.00
  61. Total deletes 0.00
  62. Total discards 0.00
  63. Total operations 1.00
  64.  
  65. *** Hourly statistics since -- :: ***
  66. Total inserts 1.00
  67. Total updates 0.00
  68. Total deletes 0.00
  69. Total discards 0.00
  70. Total operations 1.00
  71.  
  72. *** Latest statistics since -- :: ***
  73. Total inserts 1.00
  74. Total updates 0.00
  75. Total deletes 0.00
  76. Total discards 0.00
  77. Total operations 1.00
  78.  
  79. End of Statistics.

3、目标端查看replicat(复制)进程状态

  1. GGSCI (dbtrg) > stats rep1
  2.  
  3. Sending STATS request to REPLICAT REP1 ...
  4.  
  5. Start of Statistics at -- ::.
  6.  
  7. Replicating from SA.emp1 to SA.emp1:
  8.  
  9. *** Total statistics since -- :: ***
  10. Total inserts 1.00
  11. Total updates 0.00
  12. Total deletes 0.00
  13. Total discards 0.00
  14. Total operations 1.00
  15.  
  16. *** Daily statistics since -- :: ***
  17. Total inserts 1.00
  18. Total updates 0.00
  19. Total deletes 0.00
  20. Total discards 0.00
  21. Total operations 1.00
  22.  
  23. *** Hourly statistics since -- :: ***
  24. Total inserts 1.00
  25. Total updates 0.00
  26. Total deletes 0.00
  27. Total discards 0.00
  28. Total operations 1.00
  29.  
  30. *** Latest statistics since -- :: ***
  31. Total inserts 1.00
  32. Total updates 0.00
  33. Total deletes 0.00
  34. Total discards 0.00
  35. Total operations 1.00
  36.  
  37. End of Statistics.

4、目标端数据查询

  1. [oracle@dbtrg ~]$ sqlplus / as sysdba

使用ogg账户登录

  1. SQL> conn ogg/pwd
  2.  
  3. SQL> select count(*) from togg;
  4. COUNT(*)
  5. ----------
  6.  
  7. SQL> select id, name, type from togg where name='ww';
  8.  
  9. ID NAME TYPE
  10. ---------- ---------- -------------------
  11. ww user

Oracle GoldenGate实现数据库同步的更多相关文章

  1. 为Oracle GoldenGate准备数据库

    了解如何为Oracle GoldenGate准备数据库,包括如何配置连接和日志记录,如何在数据库中启用Oracle GoldenGate,如何设置闪回查询以及如何管理服务器资源. 为集成进程配置连接 ...

  2. Oracle GoldenGate 异构平台同步(Mysql到Oracle)

    一.OGG安装配置(源端) 1.OGG下载 http://www.oracle.com/technetwork/cn/middleware/goldengate/downloads/index.htm ...

  3. Oracle GoldenGate

    Oracle GoldenGate实现数据库同步 前言:最近刚好在弄数据库同步,网上查了些资料再加上自己整理了一些,做个分享! 一.GoldenGate的安装 官方文档: Oracle®GoldenG ...

  4. oracle goldengate 远程捕获和投递

    很早之前,OGG只支持部署在数据库主机上,这叫本地化部署.而现在OGG支持远端部署,即OGG软件不安装在数据库主机上,而是安装在单独的机器上,负责数据抽取和投递. 这样做的好处: l 易于管理 - 在 ...

  5. Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步。

    Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步. ogg要实现的功能: 同步可以细化到单个表,满足特定的where条件rows同步,称号column同步. ...

  6. MSSQL复制功能实现与Oracle数据库同步

    1.分别建立链接对数据库进行操作,SQLServer可以用ADO.NET,操作Oracle可以用OLEDB或者用System.Data.OracleClient(需要添加引用才能用) 这种方案的优点就 ...

  7. Oracle数据库同步方案

    Oracle数据库同步方案 1. 利用数据泵导出每表前2000行数据 expdp tvpay2/tvpay directory=dmp dumpfile=20170508.dmp include=ta ...

  8. Oracle GoldenGate 同步数据至Hbase

    该方法没试过,先记下再说 1.软件版本说明: Goldengate 12c 12.2.0.1 for Oracle(源端) Goldengate 12c 12.3.0.1 for Bigdata (目 ...

  9. Oracle GoldenGate 12c实时捕获SQL Server数据

    在Oracle GoldenGate 12c中,对一些最新的数据库提供了支持,比如SQL Server 2012/2014,当然12c也支持sql server 2008.主要新增特性有: 捕获进程可 ...

随机推荐

  1. Shell脚本的基本流程控制

    if else read -p '请输入分数:' score if [ $score -lt 60 ]; then echo '60分以下' elif  [ $score -lt 70 ]; then ...

  2. 利用alias在Linux下设置命令别名

    alias          //自定义命令="Linux命令"   alias          //查看当前系统里所有的自定义命令 unalias         //自定义命 ...

  3. Tesseract OCR win 32位编译

    https://github.com/tesseract-ocr/tesseract/wiki/Compiling 找到该标题:Develop Tesseract 按照上面的步骤执行即可,最后使用 v ...

  4. basler 相机拍照简单类综合Emgu.CV---得到图档

    在网上找了半天都是下载要钱,自己试做了,经测试能ok,一起分享吧.给初学的人一点鼓励. using System;using System.Collections.Generic;using Syst ...

  5. ZOJ - 3261 逆向并查集

    思路:很巧妙的解法.如果按照常规一边读入,一边合并并查集,删边实在没办法做. 首先读入所有的操作,把所有不会被删除的边加入并查集,然后从最后一个操作开始逆向操作,当遇到删边操作,就直接把这条边加入并查 ...

  6. mex (离散化+线段树)

    Time Limit: 3000 ms   Memory Limit: 256 MB Description 给你一个无限长的数组,初始的时候都为0,有3种操作: 操作1是把给定区间$[l,r]$设为 ...

  7. uploadify上传文件(1)--下载

    最近在给公司做一个软件版本迭代管理的软件,是一个asp.net网站开发项目.利用mvc框架,前端采用bootstrap,数据库是MySQL,数据库访问利用EF框架. 软件需求是公司软件开发项目多,版本 ...

  8. Keras学习笔记

    Keras基于Tensorflow和Theano.作为一个更高级的框架,用其编写网络更加方便.具体流程为根据设想的网络结构,使用函数式模型API逐层构建网络即可,每一层的结构都是一个函数,上一层的输出 ...

  9. 使用simhash库来进行网页去重

    首先感谢作者yanyiwu贡献的开源项目https://github.com/yanyiwu/simhash.在做项 目过程中,翻了一遍<这就是搜索引擎  核心技术详解>这本书的查重算法, ...

  10. 关于druid的配置说明

    <bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter"> & ...