20180102-Oracle DML/DDL同步数据(OGG_12.2_for_Windows)

在这里插入图片描述

一、环境准备并安装 GoldenGate 3
3、创建 GoldenGate 用户帐号 4
4、安装 GoldenGate 软件 5
二、  GoldenGate DML 同步配置 6
1 、GoldenGate DML 同步源端配置 6
1、源 MGR 进程 6
2 、配置 Extract 进程组 7
3 、配置 Pump 进程组 8
4 、目标端初始化 9
2 、GoldenGate DML 同步目标端配置 9
1 、 目标端 MGR 进程 10
2 、添加检查表 10
3 、添加 checkpoint 表 11
4、配置目标端 Peplicat 进程组 11
5、可以查看 checkpoint 状态 12
三: GoldenGate DDL 同步配置 12
1 、支持 DDL 复制运行脚本 12
2、修改 extract 进程的 params 文件 14
3、修改目标端 replicat 进程的 params 文件 15

一、环境准备并安装 GoldenGate

1、基本环境

  1. 源端
IP 地址: 10.6.252.44
数据库: Oracle 11.2.0.4
SID: cjc
操作系统版本: Windows 7
ogg 版本: Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401
ggs_Windows_x64_shiphome.zip
  1. 目标端
IP 地址: 10.11.82.56
数据库: Oracle 11.2.0.4
SID: chenjch
操作系统版本: Windows 7
ogg 版本: Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401
ggs_Windows_x64_shiphome.zip

2、配置日志模式

源服务器端
(1) 配置归档模式

sqlplus / as sysdba
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;

(2) 配置日志模式 ( 打开强制规档与补充日志模式 )

alter database add supplemental log data; 
alter database force logging;
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;
alter system set recyclebin=off scope=spfile; 

(3) 查看配置结果:

SQL> select log_mode,supplemental_log_data_min,force_logging from v$database;
LOG_MODE    SUPPLEME FOR
------------ -------- ---
ARCHIVELOG  YES      YES

3、创建 GoldenGate 用户帐号

su - oracle
sqlplus / as sysdba;
create tablespace ogguser datafile 'D:\APP\ADMINISTRATOR\ORADATA\CJC\ogguser.dbf' size 10m autoextend on next 1m maxsize unlimited;
create tablespace ogguser datafile 'D:\APP\ADMINISTRATOR\ORADATA\CHENJCH\ogguser.dbf' size 10m autoextend on next 1m maxsize unlimited;
create user ogguser identified by ogguser
default tablespace ogguser
temporary tablespace temp;
grant connect,resource,dba to ogguser;

4、安装 GoldenGate 软件

ogg12 版本安装是图形界面,选择安装版本 (11);

D:\ogg\ggs_Windows_x64_shiphome\Disk1\setup.exe

启动图形界面后,选择
OGG 目录 😄:\app\Administrator\product\11.2.0\oggcore_1 — 需要提前创建
Oracle 目录 😄:\app\Administrator\product\11.2.0\dbhome_1
直接安装即可;
安装后, D:\app\Administrator\product\11.2.0\oggcore_1 下会包含所有目录,无需执行 create subdirs 命令;

5、模拟生产库,初始化数据

建立测试用户及初始化数据

create user test identified by test;
grant connect ,resource ,dba to test;
conn test/test
create table test (id number ,name varchar2(20));

创建包含 CLOB 字段的表并初始化

create table t_clob(tid number,c_clob clob);

二、 GoldenGate DML 同步配置

1 、GoldenGate DML 同步源端配置

  1. 先配置 DML 同步
cd D:\app\Administrator\product\11.2.0\dbhome_1
ggsci.exe 
dblogin userid ogguser password ogguser

1、源 MGR 进程

  1. 编辑主进程组
edit params mgr
PORT 7809
dynamicportlist 7800-8000
autorestart extract *,retries 5,waitminutes 2,resetminutes 5
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7
LAGREPORTHOURS 1  
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45

说明 :

port  指定 mgr 进程通信端口
dynamicportlist  表示 mgr 进程可以为源与目的端动态通信指定端口 ,ogg12 已经废弃;
autorestart extract*  表示自动重启 extract 进程组,每 2 分钟尝试重启所有进程,重试 5 次,每 5 分钟清零。
minkeepdays 7   队列传递结束后 , 依然保留本地队列 7 天
LAGREPORTHOURS 1         /*  每隔 1 小时检查延迟报告 
LAGINFOMINUTES 30        /*  每隔 30 分钟检查延迟 , 如果超过延迟阈值 , 将写入错误日志 
LAGCRITICALMINUTES 45    /* 延迟阈值 45 分钟
  1. 启动主管理进程
start mgr

2 、配置 Extract 进程组

  1. 编辑配置文件
edit param ext1
extract ext1
setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid ogguser,password ogguser
exttrail D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\yd
table test.*;

说明 :

extract ext1 定义 extract 进 ?? 名字
dynamicresolution
setenv 设置环境变量
userid  登录数据库
exttrail 指定本地 trail 文件地址
table  定义同步的表
AMERICAN_AMERICA.AL32UTF8  实验环境的字符集,可用 SELECT userenv('language') from dual; 查出
TRANLOGOPTIONS  CONVERTUCS2CLOBS  clob 大字段的转换
GETTRUNCATES  获取 Truncate 操作
tranlogoptions rawdeviceoffset 0    /*  裸设备文件偏移量 (AIX 系统专有参数 ) ,此实验不用
  1. 添加抽取进程
add extract ext1,tranlog,begin now
  1. 添加本地 trail 文件
add exttrail D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\yd,extract ext1

说明 :
创建本地 trail 文件,主 extract 进程负责写这部分文件, pump 负责把这部分文件传到目标服务器端。
4) 启动服务

start extract ext1

3 、配置 Pump 进程组

  1. 编辑配置文件
edit param extpump
extract extpump
dynamicresolution
passthru
rmthost 10.11.82.56,mgrport 7809,compress
rmttrail D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\mb
table test.*;
  1. 添加 pump 进程
add extract extpump,exttrailsource D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\yd
  1. 添加远程 trail 文件
add rmttrail /ogg/app/oracle/dirdat/mb,extract extpump

说明 : 指定远程 trail 文件
4) 启动 pump 进程

start extract extpump

至此:源端配置完成,查看相关进程是剖正常启动

命令:

info all  查看所有进程的状态
view report ext1  可查看失败进程的报错

4 、目标端初始化

建立测试用户及初始化数据

create user test identified by test;
grant connect ,resource ,dba to test;
conn test/test
create table test (id number ,name varchar2(20));

创建包含 CLOB 字段的表并初始化

create table t_clob(tid number,c_clob clob);

2 、GoldenGate DML 同步目标端配置

安装 ogg 软件,安装目录和原服务器一样,安装过程忽略
数据库上进行配置,创建用户,授权

create user ogguser identified by ogguser
default tablespace ogguser
temporary tablespace temp;
grant connect,resource,dba to ogguser;

1 、目标端 MGR 进程

cd D:\app\Administrator\product\11.2.0\dbhome_1
ggsci.exe 
dblogin userid ogguser password ogguser
  1. 编辑配置文件
edit param mgr
port 7809
dynamicportlist 7800-8000
autostart er *
autorestart extract *, waitminutes 2, resetminutes 5
lagreporthours 1
laginfominutes 3
lagcriticalminutes 5
purgeoldextracts D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\rt*, usecheckpoints, minkeepdays 3
  1. 启动
start mgr

2 、添加检查表

说明 : 当我们在 GLOBALS 文件里指定了默认的 checkpoint 之后,新的 Replicat groups 在创建时会自动使用这个参数,不需要其他指令

  1. 编辑全局配置文件
GGSCI (dg2) 4> edit param ./GLOBALS
CHECKPOINTTABLE ogguser.checkpoint

2 ) exit # 这里需要退出 ggsci 终端
3 、添加 checkpoint 表

./ggsci
GGSCI (dg2) 1> dblogin userid ogguser password ogguser
GGSCI (dg2 as ogguser@mbdb) 2> add checkpointtable ogguser.checkpoint

4、配置目标端 Peplicat 进程组

  1. 编辑配置文件
edit params repl
replicat repl
userid ogguser,password ogguser
reperror default,discard
discardfile D:\app\Administrator\product\11.2.0\oggcore_1\dirrpt\repl.dsc,append,megabytes 4096 ----megabytes 只过小可能会导致 repl 无法启动
map test.*, target test.*;
  1. 添加复制进程
add replicat repl,exttrail D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\mb, CHECKPOINTTABLE ogguser.checkpoint
  1. 启动进程
start repl -----aftercsn

5、可以查看 checkpoint 状态

su - oracle
sqlplus ogguser/ogguser
SQL> select tname from tab;
TNAME
-------------------------------------
CHECKPOINT TABLE
CHECKPOINT_LOX TABLE
select * from checkpoint;

注 1 : ogg_11.1.1.1.2 只有 CHECKPOINT 一张表。
注 2 : ogg_11.2.x.x.1 之后的版本有 CHECKPOINT,CHECKPOINT_LOX 两张表。
查看相关进程是否正常启动

info all 

6、验证同步

源端对 test 用户下所有表进行 insert,update,delete 操作,确保目标端可以正常同步所有 DML 操作产生的数据;

三: GoldenGate DDL 同步配置

1 、支持 DDL 复制运行脚本

服务器源端配置

  1. 指定数据库模式
D:\app\Administrator\product\11.2.0\oggcore_1\ggsci.exe 
GGSCI (dg1) 1> edit param ./GLOBALS
ggschema ogguser
GGSCI (dg1) 3> stop mgr
  1. 安装 DDL 对象
    进入到 ogg 的安装目录,此实验为 D:\app\Administrator\product\11.2.0\oggcore_1
sqlplus / as sysdba
SQL> grant dba to ogguser;
SQL> @marker_setup  说明 :  均指定用户 ogguser
SQL> @ddl_setup  说明 : 11.1.1.2 需要手动输入  ogguser,INITIALSETUP,yes
SQL> @role_setup
SQL> grant GGS_GGSUSER_ROLE to ogguser;
SQL> @ddl_enable
SQL> @marker_status.sql

注 1: 执行 dbmspool 包将在数据库中创建 DBMS_SHARED_POOL 包,之后 ddl_pin 包需要用到

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

注 2: 执行 ddl_pin.sql 通过 dbms_shared_pool.keep 存储过程将 DDLReplication 相关对象 keep 在共享池中,以保证这些对象不 RELOAD ,提升性能。

SQL> @ddl_pin.sql ogguser

2、修改 extract 进程的 params 文件

服务器源端配置
source 端修改 extract 进程的 params 文件,添加 “ddl include all” 参数,重启 extract 进程

  1. 停止 ext1 进程
GGSCI (test) 2> stop extract ext1
  1. 编辑配置文件
GGSCI (test) 3> edit params ext1
extract ext1
dynamicresolution
setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid ogguser,password ogguser
exttrail /ogg/app/oracle/dirdat/yd
report at 1:00
reportrollover at 1:00
ddl include all
ddloptions addtrandata,report
GETTRUNCATES
TRANLOGOPTIONS  CONVERTUCS2CLOBS
table test.*;

说明:加了两行 tranlogoption 与 ddl

  1. 启动 mgr,eora 进程
GGSCI (test) 4> start mgr
GGSCI (test) 5> start extract ext1
  1. 查看进程启动情况
GGSCI (test) 6> info extract ext1

3、修改目标端 replicat 进程的 params 文件

目标服务器配置
target 端修改 replicat 进程的 params 文件,
添加 “ddlerror default ignore retryop maxretries 3 retrydelay 5” 等参数,重启 replicat 进程,操作如下

  1. 停止 mgr 进程
GGSCI (slave) 1> stop mgr
  1. 停止 repl 进程
GGSCI (slave) 1> stop replicat repl
  1. 编辑 repl 配置文件
GGSCI (slave) 1> edit params repl
GGSCI (slave) 2> view params repl
replicat repl
userid ogguser,password ogguser
reperror default,discard
discardfile D:\app\Administrator\product\11.2.0\oggcore_1\dirrpt\repl.dsc,append,megabytes 4096
ddloptions report
ddlerror default ignore retryop maxretries 3 retrydelay 5
ddlerror default discard
ddlerror default ignore retryop
map test.*, target test.*;
  1. 启动 rora_t1 进程
GGSCI (slave) 4> start mgr #  会自动启动 repl 进程
GGSCI (slave) 5> info replicat repl

4、测试

在源端 test 用户创建一个表,查看目标端是否成功创建。

create table t1(id number);

5、验证

在目标端查看 t1 表及数据是否同步过来

四、常见问题

问题一:

insert 和 delete 可以同步, update 不能同步;
解决方案:

ggsci > dblogin userid gg, password gg
ggsci > add trandata test.*

问题二:

repl 进程无法启动
查看日志

D:\app\Administrator\product\11.2.0\oggcore_1\ggserr.log
D:\app\Administrator\product\11.2.0\oggcore_1\dirrpt\repl.dsc

megabytes 值过小,可能会引起 rep1 进程 ABENDED ;
欢迎关注我的微信公众号"IT小Chen"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值