Oracle Golden Gate (ogg)安装使用说明
- Golden Gate(简称OGG)提供异构环境下交易数据的实时捕捉、变换、投递等功能。
OGG支持的异构环境有:
OGG的特性:
①对生产系统影响小:实时读取交易日志,以低资源占用实现大交易量数据实时复制
②以交易为单位复制,保证交易一致性:只同步已提交的数据
③高性能
④智能的交易重组和操作合并
⑤使用数据库本地接口访问
⑥并行处理体系
⑦灵活的拓扑结构:支持一对一、一对多、多对一、多对多和双向复制等
⑧支持数据过滤和转换
⑨可以自定义基于表和行的过滤规则.
⑩可以对实时数据执行灵活影射和变换.同时提供数据压缩和加密:降低传输所需带宽,提高传输安全性.
OGG的工作原理:
OGG的进程:
Manager进程是GoldenGate的控制进程,运行在源端和目标端上。它主要作用有以下几个方面:启动、监控、重启Goldengate的其他进程,报告错误及事件,分配数据存储空间,发布阀值报告等。在目标端和源端有且只有一个manager进程
Extract运行在数据库源端,负责从源端数据表或者日志中捕获数据。Extract的作用可以按照阶段来划分为:
初始时间装载阶段:在初始数据装载阶段,Extract进程直接从源端的数据表中抽取数据
同步变化捕获阶段:初始数据同步完成以后,Extract进程负责捕获源端数据的变化(DML和DDL)
Data Pump进程运行在数据库源端,其作用是将源端产生的本地trail文件,把trail以数据块的形式通过TCP/IP 协议发送到目标端,这通常也是推荐的方式。pump进程本质是extract进程的一种特殊形式,如果不使用trail文件,那么extract进程在抽 取完数据以后,直接投递到目标端,生成远程trail文件。
Collector进程与Data Pump进程对应 的叫Server Collector进程,这个进程不需要引起我的关注,因为在实际操作过程中,无需我们对其进行任何配置,所以对我们来说它是透明的。它运行在目标端,其 任务就是把Extract/Pump投递过来的数据重新组装成远程ttrail文件。
Replicat进程,通常我们也把它叫做应用进程。运行在目标端,是数据传递的最后一站,负责读取目标端trail文件中的内容,并将其解析为DML或 DDL语句,然后应用到目标数据库中。
- OGG的安装步骤
2.1安装包的准备
数据库版本:Oracle Database 11g Release 2(11.2.0.1.0)
此次使用的安装包版本为Oracle GoldenGate 12.2.0.2.2 for Oracle on Linux x86-64
下载地址https://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html
2.2安装环境准备
服务器 |
IP |
系统 |
ORACLE版本 |
源端 |
192.168.1.101 |
linuxRedhat6.8 |
11.2.0.1.0 |
目标端 |
192.168.1.102 |
linuxRedhat6.8 |
11.2.0.1.0 |
Oracle安装路径
/home/oracle/app/oracle
OGG安装路径
源端 /home/oracle/product/ogg_src
目标端 /home/oracle/product/ogg_trg
- 创建目录
在root权限下进行目录的创建操作
(创建安装包存放目录)
[root@ localhost oracle]# mkdir /home/oracle/azb
(创建源端安装目录)
[root@ localhost oracle]# mkdir /home/oracle/product/ogg_src
(创建目标端安装目录)
[root@ localhost oracle]# mkdir /home/oracle/product/ogg_trg
同时将OGG的安装包上传到/home/oracle/azb/目录下
- 环境变量的配置
配置环境变量时注意需要使用ORACLE用户进行配置
[oracle@ localhost ~]$ vim ~/.bash_profile
添加以下参数
# Path Oracle GoldenGate
export OGG_HOME=/home/oracle/product/ogg_src
export PATH=$OGG_HOME:$PATH
export LD_LIBRARY_PATH=$OGG_HOME:$LD_LIBRARY_PATH
修改完毕以后执行一下下面的命令,使其配置文件生效
[oracle@ localhost ~]$ source ~/.bash_profile
- 图形化安装步骤
[root@ localhost oracle]# cd /home/oracle/azb/fbo_ggs_Linux_x64_shiphome/Disk1
[root@ localhost Disk1]# ./runInstaller
然后根据我们安装的数据的版本选择对应的版本
安装的路径前面创建无误的话,我们这一步可以直接选择默认的安装路径就oK,然后选择下一步,以后的步骤皆选择默认安装,直至安装完毕。
- RLWRAP工具的安装和配置
6.1 创建目录并赋权
赋予root权限
[root@dbsrc oracle]# mkdir /stage
[root@dbsrc oracle]# chmod –R 777 /stage
6.2 将压缩包上传至目录并解压缩
[root@dbsrc stage]# tar –zxf rlwrap-o.37.tar.gz
[root@dbsrc stage]# ls
rlwrap-0.37 rlwrap-o.37.tar.gz
6.3 挂载RLWRAP依赖
由于rlwrap包依赖于readline和readline-devel,所以我们需要先挂载这两个依赖
查看是否安装
[root@dbsrc oracle]# yum list installed | grep readline-devel
安装
[root@dbsrc oracle]# yum –y install readline-devel
6.4 安装RLWRAP
进入解压目录
[root@dbsrc oracle]# cd /stage/rlwrap-0.37
[root@dbsrc rlwrap-0.37]# ./configure
[root@dbsrc rlwrap-0.37]# make && make install
查看是否安装成功
[root@dbsrc rlwrap-0.37]# rlwrap –v
rlwrap 0.37
6.5 为Oracle终端添加启用命令(alias)
在Oracle用户的默认目录的(.bashrc)文件夹中添加
(切换到oracle用户权限)
[oracle@dbsrc rlwrap-0.37]$ cd ~
[oracle@dbsrc ~]$ vim ~/.bashrc
(添加别名来调用sqlplus和oracle GoldenGate)
alias sqlplus="rlwrap sqlplus"
alias ggsci="rlwrap /data/oracle/product/ogg_src/ggsci"
(路径为oracle GoldenGate的安装目录)
保存退出(:wq)
然后执行source命令使文件立即生效
6.6 配置快捷命令
(源端)
alias ggsci="rlwrap /data/oracle/product/ogg_src/ggsci"
(目标端)
alias ggsci="rlwrap /data/oracle/product/ogg_trg/ggsci"
路径均为GoldenGate的安装目录
6.7 查看GoldenGate是否安装成功
[oracle@dbsrc ~]$ ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 12.3.0.1.2 OGGCORE_12.3.0.1.0_PLATFORMS_171208.0005_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Dec 8 2017 21:13:00
Operating system character set identified as US-ASCII.
Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
GGSCI (dbsrc) 1> view param mgr
PORT 7809
GGSCI (dbsrc) 2> info mgr
Manager is running (IP port dbsrc.7809,Process ID 5682)
此版本已经自动建立子目录,无需再使用(create subdirs)命令创建。
- 配置数据库支持GoldenGate
7.1 为GoldenGate创建独立的用户和分配必要的权限
[oracle@ localhost~]$ sqlplus / as sysdba
创建表空间
SQL> create tablespace OGG logging datafile '/home/oracle/oradata/orcl/OGG.DBF' size 20m autoextend on uniform size 2m;
注:autoextend on 打开自动扩展 ,uniform 指定表空间extend的大小,缺省值为1m
此表空间只用于DDL模式,不可用于其他模式
创建用户并授权
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> 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');
创建测试用表和数据
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;
7.2 开启数据库附加日志
oracle 11.2.0.4和oracle 12.1.0.2及之后的版本需要设置如下参数,本次所用数据库版本为Oracle 11.2.0.1.0就无需设置此参数了
SQL> alter system set enable_goldengate_replication=true scope=both;
查看归档模式、附加日志和强制日志是否开启
SQL> select log_mode, supplemental_log_data_min, force_logging from v$database;
修改模式
SQL> shutdown immediate;
#立即关闭数据库,不允许新的连接和事物启动
SQL> startup mount;
#装载数据库而不启动
SQL> alter database archivelog;
#启用归档模式
SQL> alter database open;
#打开数据库
SQL> alter database force logging;
#启用强制日志
SQL> alter database add supplemental log data;
#启用附加日志
SQL> alter system switch logfile;
#切换日志文件
(用户级别的附加日志和表级别的附加日志可以在最后配置,即启动同步服务前一步进行配置。两种类型的附加日志只需配置其中之一,不过可以配置用户级别的附加日志的话就不需要每张表都配置了)
用户级别的附加日志配置:
[oracle@dbsrc ~]$ ggsci
GGSCI (dbsrc) 1> dblogin userid ogg, password pwd
Successfully logged into database
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@dbsrc ~]$ ggsci
GGSCI (dbsrc) 1> dblogin userid ogg, password pwd
Successfully logged into database
GGSCI (dbsrc as ogg@orcl) 2> add trandata ogg.togg;
配置成功见截图:
添加表附加日志,语法最后不用加分号;
7.3 执行配置脚本
进入GoldenGate安装目录
(源端)
[oracle@ localhost ~]$ cd /home/oracle/product/ogg_src
(目标端)
[oracle@ localhost ~]$ cd / home /oracle/product/ogg_trg
登录sqlplus
SQL> @marker_setup
输入GoldenGate账户名ogg
SQL> @ddl_setup
输入GoldenGate账户名ogg
SQL> @role_setup
输入GoldenGate账户名ogg
GRANT GGS_GGSUSER_ROLE TO
SQL> grant ggs_ggsuser_role to ogg;
SQL> @ddl_enable
7.4 配置Manager进程(管理进程)
Manager进程必须在源端和目标端运行,并且在Extract和Replicat进程之前启动,没有该进程OGG无法做其它的操作,它管理启动Oracle GoldenGate进程、启动动态进程、分配端口给GoldenGate进程、管理trail file、创建事件,错误和诊断报告工作;
[oracle@ localhost ~]$ ggsci
GGSCI (localhost.localdomain) 1> info mgr
Manager is running (IP port dbsrc.7809,Process ID 5682)
源端:
GGSCI (localhost.localdomain) 2> edit param mgr
PORT 7839
DYNAMICPORTLIST 7840-7939
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 2
PURGEOLDEXTRACTS /home/oracle/product/ogg_src/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 5
LAGREPORTHOURS 1
LAGINFOMINUTES 30
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分钟将写入警告日志
目标端:
GGSCI (localhost.localdomain) 1> edit param mgr
PORT 7839
USERID ogg, PASSWORD pwd
DYNAMICPORTLIST 7840-7939
AUTOSTART REPLICAT *
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 2
PURGEOLDEXTRACTS /home/oracle/product/ogg_trg/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 10
PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10
PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10
LAGREPORTHOURS 1
LAGINFOMINUTES 30
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天。
7.5 配置Extract进程(只在源端配置)
Extract 运行在源端或者根据系统和业务的需求可以同时运行在两端,抽取捕获系统变更统数据;它可以配置为初始化数据加载(直接从数据源中加载静态的数据)和在某个时间点后源端与服务端变更数据同步(从在线日志或归档日志抽取捕获变更的数据),它也可以在支持DDL变更的系统中抽取捕获DDL;
当配置为数据同步时,extract进程抽取捕获extract配置文件里配置的对象的任何DML和DDL(需要额外配置)的操作,extract进程记录这些操作,直到用户提交或回滚事务;当收到回滚(rollback)时,extract撤销这些记录;当收到(commit)操作后,extract进程记录保存这些操作到一个或多个trail文件里并以队列的形式发送到目标端,以确保数据传输速度和数据的一致性。
1)、配置主抽取进程(Primary Extract)
使用ogg用户登录GoldenGate
GGSCI (localhost.localdomain) 5> dblogin userid ogg, password pwd
创建主抽取进程
GGSCI (localhost as ogg@orcl) 6> add extract ext1,tranlog,begin now
创建源端trail文件并指定路径
主进程的作用是抽取捕获系统变更数据并将这些数据保存到trail文件里,所以必须为其配置trail文件目录和trail文件名的两个字符名
GGSCI (localhost as ogg@orcl) 7> add exttrail /home/oracle/product/ogg_src/dirdat/sr, extract ext1
GGSCI (localhost as ogg@orcl) 8> edit param ext1
extract ext1
SETENV(ORACLE_SID="orcl")
SETENV(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid ogg, password pwd
REPORTCOUNT EVERY 30 MINUTES, RATE
DISCARDFILE /home/oracle/product/ogg_src/dirrpt/extsr.dsc, APPEND, MEGABYTES 1024
DISCARDROLLOVER AT 3:00
EXTTRAIL /home/oracle/product/ogg_src/dirdat/sr
DYNAMICRESOLUTION
DBOPTIONS ALLOWUNUSEDCOLUMN
FETCHOPTIONS NOUSESNAPSHOT
FETCHOPTIONS FETCHPKUPDATECOLS
table ogg.*;
注:
SETENV(ORACLE_SID="orcl")
设置Oracle数据库实例sid
SETENV(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
设置goldengate的字符集变量信息,此处值会覆盖操作系统级别的变量。该值需要和数据库字符集匹配一致。
REPORTCOUNT EVERY 30 MINUTES, RATE
每隔30分钟报告一次从程序开始到现在的抽取进程或者复制进程的事物记录数,并汇报进程的统计信息
DISCARDFILE /home/oracle/product/ogg_src/dirrpt/extsr.dsc, APPEND, MEGABYTES 1024
将执行失败的记录保存在discard file中,discard file文件记录了GoldenGate进程错误、数据库错误、GoldenGate操作等信息。该文件位于/home/oracle/product/ogg_src/dirrpt/extsr.dsc,大小为1024MB。 文件中已经包含记录的话,再后面继续追加,不删除之前的记录。
DISCARDROLLOVER AT 3:00
为了防止discard file被写满,每天3:00做一次文件过期设定
EXTTRAIL /home/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文件;
GGSCI (localhost as ogg@orcl) 9> add extract dpump1, exttrailsource /home/oracle/product/ogg_src/dirdat/sr
GGSCI (localhost as ogg@orcl) 10> edit param dpump1
extract dpump1
SETENV(ORACLE_SID="orcl")
SETENV(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
RMTHOST 192.168.1.102, mgrport 7839, COMPRESS
PASSTHRU
RMTTRAIL /home/oracle/product/ogg_trg/dirdat/tr
--DYNAMICRESOLUTION
table ogg.*;
注:
RMTHOST 192.168.1.102, mgrport 7839, COMPRESS
目标端主机IP,管理进程端口号,投递前压缩队列文件
PASSTHRU
表示传输进程直接跟抽取进程交互,而不再和数据库进行交互,减少数据库资源的利用。
RMTTRAIL /home/oracle/product/ogg_trg/dirdat/tr
目标端保存队列文件的目录
DYNAMICRESOLUTION
动态解析表名
table ogg.*;
复制范围和抽取进程对应即可
源端可以配置多个主抽取进程,也可以配置多个Data Pump进程,但必须为每个要同步的目标端配置一个Data Pump进程;
指定Data Pump进程发送trail文件到目标端的位置(目标端trail文件添加到队列中)
GGSCI (localhost as ogg@orcl) 11> add rmttrail /home/oracle/product/ogg_trg/dirdat/tr, extract dpump1
7.6 目标端配置Replicat进程(复制进程)
Replicat进程运行在目标端读取tail文件和重构DML、DDL并应用到目标数据库;Replicat编译SQL一次,当变量值不同时重复使用编译过的SQL;Replicat进程可以像extract进程一样配置初始化数据加载(直接从数据源中加载静态的数据)和在某个时间点后源端与服务端变更数据同步(从在线日志或归档日志抽取捕获变更的数据);
Checkpoint存储从文件读取和写入的检测点位置,用于还原和恢复数据,Checkpoint确保发生变化并提交(commit)的数据被extract抽取捕获和被replicat进程应用到目标端;保证在系统、网络或者GoldenGate需要重启进程时发生的错误不会导致数据丢失;在复杂的同步配置中checkpoints启用多个extract和replicat进程从同一个trail集中读取数据。
使用GoldenGate用户(ogg)登录
GGSCI (localhost) 1> dblogin userid ogg, password pwd
创建和配置Checkpoint Table
GGSCI (localhost as ogg@orcl) 2> add checkpointtable ogg.checkpoint
GGSCI (localhost as ogg@orcl) 3> edit param ./GLOBALS
GGSCHEMA ogg
CHECKPOINTTABLE ogg.checkpoint
注:首次编辑GoldenGate配置文件时,GLOBALS文件以大写命名并且没有扩展名创建在GoldenGate_home根目录
创建replicat进程
GGSCI (localhost as ogg@orcl) 4> add replicat rep1, exttrail /home/oracle/product/ogg_trg/dirdat/tr, checkpointtable ogg.checkpoint
GGSCI (localhost as ogg@orcl) 5> edit param rep1
REPLICAT rep1
SETENV(ORACLE_SID="orcl")
SETENV(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
USERID ogg, PASSWORD pwd
REPORT AT 06:00
REPORTCOUNT EVERY 30 MINUTES, RATE
REPORTROLLOVER AT 02:00
REPERROR DEFAULT, ABEND
ALLOWNOOPUPDATES
ASSUMETARGETDEFS
HANDLECOLLISIONS
DISCARDFILE /home/oracle/product/ogg_trg/dirrpt/repsa.dsc, APPEND, MEGABYTES 1024
DISCARDROLLOVER AT 02:00
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 /home/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.*;
对应需要复制的对象,默认一一对应传输进程
8.初始化数据
DML操作包括INSERT、UPDATE、DELETE、SELECT操作,而在这些操作中UPDATE、DELETE操作Redo只记录了变更的数据列以及行ID(ROWID),GoldenGate抽取数据后将其转换为自己的格式发送都目标端。在同步开始前目标端没有初始化数据(目标端为空数据),那么事物产生的UPDATE、DELETE DML操作发送到目标端,目标端GoldenGate Replicat进程会因为找不到数据而报错从而导致Replicat进程崩溃停止(ABENDED),所以这就需要我们在同步前初始化数据,初始化完后再同步,这样大大降低错误率。同步数据的方式可以通过DBLINK、EXP/IMP、SQLLDR或者表空间迁移等方式同步。
9.启动GoldenGate
数据初始化后,分别启动目标端MGR进程、Replicat进程,源端MGR进程、主抽取进程(Primary Extract)、Data Pump进程(Secondly Extract)
目标端
[oracle@localhost~]$ ggsci
GGSCI (localhost) 1> start mgr
GGSCI (localhost) 2> info all
GGSCI (localhost) 3> stats rep1
源端
[oracle@localhost ~]$ ggsci
GGSCI (localhost) 1> start mgr
GGSCI (localhost) 2> info all
10.同步测试
测试的时候分别测试insert、delete、update操作
10.1 源端进行数据插入操作
[oracle@dbsrc ~]$ sqlplus / as sysdba
使用ogg账户登录
SQL> conn ogg/pwd
SQL> select count(*) from togg;
SQL> select count(*) from ogg.togg;
半小时后再插入一条数据
10.2 源端查看extract(提取)进程状态
GGSCI (dbsrc) 5> stats ext1
GGSCI (dbsrc) 6> stats dpump1
半小时后查看ext1状态
10.3 目标端查看replicat(复制)进程状态
GGSCI (dbtrg) 4> stats rep1
半小时后查询
10.4 目标端数据查询
[oracle@dbtrg ~]$ sqlplus / as sysdba
使用ogg账户登录
SQL> conn ogg/pwd
SQL> select count(*) from togg;
SQL> select id, name, type from togg where name='ww';
半小时后第二条数据同步过来。
到现在为止,OracleOgg安装成功并且测试同步数据成功!