一、环境准备并安装 GoldenGate

1、基本环境

1) 源端
IP 地址: 10.6.252.44
数据库: Oracle11.2.0.4
SID:cjc
操作系统版本: Windows7
ogg 版本: Version12.2.0.1.1OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401
ggs_Windows_x64_shiphome.zip
2) 目标端
IP 地址: 10.11.82.56
数据库: Oracle11.2.0.4
SID:chenjch
操作系统版本: Windows7
ogg 版本: Version12.2.0.1.1OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401
ggs_Windows_x64_shiphome.zip

2、配置日志模式

源服务器端

(1) 配置归档模式
sqlplus/assysdba
shutdownimmediate;
startupmount;
alterdatabasearchivelog;
alterdatabaseopen;
(2) 配置日志模式 ( 打开强制规档与补充日志模式 )
alterdatabaseaddsupplementallogdata;
alterdatabaseforcelogging;
ALTERSYSTEMSETENABLE_GOLDENGATE_REPLICATION=TRUESCOPE=BOTH;
altersystemsetrecyclebin=offscope=spfile;
(3) 查看配置结果:
SQL>selectlog_mode,supplemental_log_data_min,force_loggingfromv$database;
LOG_MODESUPPLEMEFOR

ARCHIVELOGYESYES

3、创建 GoldenGate 用户帐号

su-oracle
sqlplus/assysdba;
createtablespaceogguserdatafile'D:APPADMINISTRATORORADATACJCogguser.dbf'size10mautoextendonnext1mmaxsizeunlimited;
createtablespaceogguserdatafile'D:APPADMINISTRATORORADATACHENJCHogguser.dbf'size10mautoextendonnext1mmaxsizeunlimited;
createuserogguseridentifiedbyogguser
defaulttablespaceogguser
temporarytablespacetemp;
grantconnect,resource,dbatoogguser;

4、安装 GoldenGate 软件

ogg12 版本安装是图形界面,选择安装版本 (11);
D:oggggs_Windows_x64_shiphomeDisk1setup.exe
启动图形界面后,选择
OGG 目录 :D:appAdministratorproduct11.2.0oggcore_1--- 需要提前创建
Oracle 目录 :D:appAdministratorproduct11.2.0dbhome_1
直接安装即可;
安装后, D:appAdministratorproduct11.2.0oggcore_1 下会包含所有目录,无需执行 createsubdirs 命令;

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

建立测试用户及初始化数据
createusertestidentifiedbytest;
grantconnect,resource,dbatotest;
conntest/test
createtabletest(idnumber,namevarchar2(20));
创建包含 CLOB 字段的表并初始化
createtablet_clob(tidnumber,c_clobclob);

二、 GoldenGateDML 同步配置

1 、GoldenGateDML 同步源端配置

1) 先配置 DML 同步
cdD:appAdministratorproduct11.2.0dbhome_1
ggsci.exe
dbloginuseridogguserpasswordogguser

1、源 MGR 进程

1) 编辑主进程组
editparamsmgr
PORT7809
dynamicportlist7800-8000
autorestartextract*,retries5,waitminutes2,resetminutes5
PURGEOLDEXTRACTS./dirdat/*,usecheckpoints,minkeepdays7
LAGREPORTHOURS1
LAGINFOMINUTES30
LAGCRITICALMINUTES45
说明 :
port 指定 mgr 进程通信端口
dynamicportlist 表示 mgr 进程可以为源与目的端动态通信指定端口 ,ogg12 已经废弃;
autorestartextract* 表示自动重启 extract 进程组,每 2 分钟尝试重启所有进程,重试 5 次,每 5 分钟清零。
minkeepdays7 队列传递结束后 , 依然保留本地队列 7 天
LAGREPORTHOURS1/* 每隔 1 小时检查延迟报告
LAGINFOMINUTES30/* 每隔 30 分钟检查延迟 , 如果超过延迟阈值 , 将写入错误日志
LAGCRITICALMINUTES45/* 延迟阈值 45 分钟
2) 启动主管理进程
startmgr

2 、配置 Extract 进程组

1) 编辑配置文件
editparamext1
extractext1
setenv(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
useridogguser,passwordogguser
exttrailD:appAdministratorproduct11.2.0oggcore_1dirdatyd
tabletest.*;
说明 :
extractext1 定义 extract 进 ?? 名字
dynamicresolution
setenv 设置环境变量
userid 登录数据库
exttrail 指定本地 trail 文件地址
table 定义同步的表
AMERICAN_AMERICA.AL32UTF8 实验环境的字符集,可用 SELECTuserenv('language')fromdual; 查出
TRANLOGOPTIONSCONVERTUCS2CLOBSclob 大字段的转换
GETTRUNCATES 获取 Truncate 操作
tranlogoptionsrawdeviceoffset0/* 裸设备文件偏移量 (AIX 系统专有参数 ) ,此实验不用
2) 添加抽取进程
addextractext1,tranlog,beginnow
3) 添加本地 trail 文件
addexttrailD:appAdministratorproduct11.2.0oggcore_1dirdatyd,extractext1
说明 :
创建本地 trail 文件,主 extract 进程负责写这部分文件, pump 负责把这部分文件传到目标服务器端。
4) 启动服务
startextractext1

3 、配置 Pump 进程组

1) 编辑配置文件
editparamextpump
extractextpump
dynamicresolution
passthru
rmthost10.11.82.56,mgrport7809,compress
rmttrailD:appAdministratorproduct11.2.0oggcore_1dirdatmb
tabletest.*;
2) 添加 pump 进程
addextractextpump,exttrailsourceD:appAdministratorproduct11.2.0oggcore_1dirdatyd
3) 添加远程 trail 文件
addrmttrail/ogg/app/oracle/dirdat/mb,extractextpump
说明 : 指定远程 trail 文件
4) 启动 pump 进程
startextractextpump
至此:源端配置完成,查看相关进程是剖正常启动
命令:
infoall 查看所有进程的状态
viewreportext1 可查看失败进程的报错

4 、目标端初始化

建立测试用户及初始化数据
createusertestidentifiedbytest;
grantconnect,resource,dbatotest;
conntest/test
createtabletest(idnumber,namevarchar2(20));
创建包含 CLOB 字段的表并初始化
createtablet_clob(tidnumber,c_clobclob);

2 、GoldenGateDML 同步目标端配置

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

1 、目标端 MGR 进程

cdD:appAdministratorproduct11.2.0dbhome_1
ggsci.exe
dbloginuseridogguserpasswordogguser

1) 编辑配置文件
editparammgr
port7809
dynamicportlist7800-8000
autostarter*
autorestartextract*,waitminutes2,resetminutes5
lagreporthours1
laginfominutes3
lagcriticalminutes5
purgeoldextractsD:appAdministratorproduct11.2.0oggcore_1dirdatrt*,usecheckpoints,minkeepdays3
2) 启动
startmgr

2 、添加检查表

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

1) 编辑全局配置文件
GGSCI(dg2)4>editparam./GLOBALS
CHECKPOINTTABLEogguser.checkpoint
2 ) exit# 这里需要退出 ggsci 终端

3 、添加 checkpoint 表

./ggsci
GGSCI(dg2)1>dbloginuseridogguserpasswordogguser
GGSCI(dg2asogguser@mbdb)2>addcheckpointtableogguser.checkpoint

4、配置目标端 Peplicat 进程组

1) 编辑配置文件
editparamsrepl
replicatrepl
useridogguser,passwordogguser
reperrordefault,discard
discardfileD:appAdministratorproduct11.2.0oggcore_1dirrptrepl.dsc,append,megabytes4096----megabytes 只过小可能会导致 repl 无法启动
maptest.,targettest.;
2) 添加复制进程
addreplicatrepl,exttrailD:appAdministratorproduct11.2.0oggcore_1dirdatmb,CHECKPOINTTABLEogguser.checkpoint
3) 启动进程
startrepl-----aftercsn

5、可以查看 checkpoint 状态

su-oracle
sqlplusogguser/ogguser
SQL>selecttnamefromtab;
TNAME

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

6、验证同步

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

三: GoldenGateDDL 同步配置

1 、支持 DDL 复制运行脚本

服务器源端配置

1) 指定数据库模式
D:appAdministratorproduct11.2.0oggcore_1ggsci.exe
GGSCI(dg1)1>editparam./GLOBALS
ggschemaogguser
GGSCI(dg1)3>stopmgr
2) 安装 DDL 对象
进入到 ogg 的安装目录,此实验为 D:appAdministratorproduct11.2.0oggcore_1
sqlplus/assysdba
SQL>grantdbatoogguser;
SQL>@marker_setup 说明 : 均指定用户 ogguser
SQL>@ddl_setup 说明 :11.1.1.2 需要手动输入 ogguser,INITIALSETUP,yes
SQL>@role_setup
SQL>grantGGS_GGSUSER_ROLEtoogguser;
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.sqlogguser

2、修改 extract 进程的 params 文件

服务器源端配置

source 端修改 extract 进程的 params 文件,添加 "ddlincludeall" 参数,重启 extract 进程

1) 停止 ext1 进程
GGSCI(test)2>stopextractext1
2) 编辑配置文件
GGSCI(test)3>editparamsext1
extractext1
dynamicresolution
setenv(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
useridogguser,passwordogguser
exttrail/ogg/app/oracle/dirdat/yd
reportat1:00
reportrolloverat1:00
ddlincludeall
ddloptionsaddtrandata,report
GETTRUNCATES
TRANLOGOPTIONSCONVERTUCS2CLOBS
tabletest.*;
# 说明:加了两行 tranlogoption 与 ddl
3) 启动 mgr,eora 进程
GGSCI(test)4>startmgr
GGSCI(test)5>startextractext1
4) 查看进程启动情况
GGSCI(test)6>infoextractext1

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

目标服务器配置

target 端修改 replicat 进程的 params 文件,

添加 "ddlerrordefaultignoreretryopmaxretries3retrydelay5" 等参数,重启 replicat 进程,操作如下

1) 停止 mgr 进程
GGSCI(slave)1>stopmgr
2) 停止 repl 进程
GGSCI(slave)1>stopreplicatrepl
3) 编辑 repl 配置文件
GGSCI(slave)1>editparamsrepl
GGSCI(slave)2>viewparamsrepl
replicatrepl
useridogguser,passwordogguser
reperrordefault,discard
discardfileD:appAdministratorproduct11.2.0oggcore_1dirrptrepl.dsc,append,megabytes4096
ddloptionsreport
ddlerrordefaultignoreretryopmaxretries3retrydelay5
ddlerrordefaultdiscard
ddlerrordefaultignoreretryop
maptest.,targettest.;
4) 启动 rora_t1 进程
GGSCI(slave)4>startmgr# 会自动启动 repl 进程
GGSCI(slave)5>inforeplicatrepl

4、测试

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

5、验证

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

四、常见问题

问题一:
insert 和 delete 可以同步, update 不能同步;
解决方案:
ggsci>dbloginuseridgg,passwordgg
ggsci>addtrandatatest.*
问题二:
repl 进程无法启动
查看日志
D:appAdministratorproduct11.2.0oggcore_1ggserr.log
D:appAdministratorproduct11.2.0oggcore_1dirrptrepl.dsc
megabytes 值过小,可能会引起 rep1 进程 ABENDED ;
转载自chenoracle

最后修改:2022 年 02 月 27 日
如果觉得我的文章对你有用,请随意赞赏