OracleDML/DDL同步数据(OGG_12.2_for_Windows)



OracleDML/DDL同步数据(OGG_12.2_for_Windows) 1

一、环境准备并安装GoldenGate 3

1、基本环境3

2、配置日志模式3

3、创建GoldenGate用户帐号 4

4、安装GoldenGate软件 5

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

二、GoldenGateDML同步配置 6

1、GoldenGateDML同步源端配置 6

1、源MGR进程 6

2、配置Extract进程组 7

3、配置Pump进程组 8

4、目标端初始化 9

2、GoldenGateDML同步目标端配置 9

1、目标端MGR进程 10

2、添加检查表 10

3、添加checkpoint表 11

4、配置目标端Peplicat进程组 11

5、可以查看checkpoint状态 12

6、验证同步12

三:GoldenGateDDL同步配置 12

1、支持DDL复制运行脚本 12

2、修改extract进程的params文件 14

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

4、测试16

5、验证16

四、常见问题16

一、环境准备并安装GoldenGate1、基本环境

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:\APP\ADMINISTRATOR\ORADATA\CJC\ogguser.dbf'size10mautoextendonnext1mmaxsizeunlimited;

createtablespaceogguserdatafile'D:\APP\ADMINISTRATOR\ORADATA\CHENJCH\ogguser.dbf'size10mautoextendonnext1mmaxsizeunlimited;

createuserogguseridentifiedbyogguser

defaulttablespaceogguser

temporarytablespacetemp;

grantconnect,resource,dbatoogguser;

4、安装GoldenGate软件

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

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

启动图形界面后,选择

OGG目录:D:\app\Administrator\product\11.2.0\oggcore_1---需要提前创建

Oracle目录:D:\app\Administrator\product\11.2.0\dbhome_1

直接安装即可;

安装后,D:\app\Administrator\product\11.2.0\oggcore_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:\app\Administrator\product\11.2.0\dbhome_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:\app\Administrator\product\11.2.0\oggcore_1\dirdat\yd

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:\app\Administrator\product\11.2.0\oggcore_1\dirdat\yd,extractext1

说明:

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

4)启动服务

startextractext1

3、配置Pump进程组

1)编辑配置文件

editparamextpump

extractextpump

dynamicresolution

passthru

rmthost10.11.82.56,mgrport7809,compress

rmttrailD:\app\Administrator\product\11.2.0\oggcore_1\dirdat\mb

tabletest.*;

2)添加pump进程

addextractextpump,exttrailsourceD:\app\Administrator\product\11.2.0\oggcore_1\dirdat\yd

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:\app\Administrator\product\11.2.0\dbhome_1

ggsci.exe

dbloginuseridogguserpasswordogguser

1)编辑配置文件

editparammgr

port7809

dynamicportlist7800-8000

autostarter*

autorestartextract*,waitminutes2,resetminutes5

lagreporthours1

laginfominutes3

lagcriticalminutes5

purgeoldextractsD:\app\Administrator\product\11.2.0\oggcore_1\dirdat\rt*,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:\app\Administrator\product\11.2.0\oggcore_1\dirrpt\repl.dsc,append,megabytes4096----megabytes只过小可能会导致repl无法启动

maptest.*,targettest.*;

2)添加复制进程

addreplicatrepl,exttrailD:\app\Administrator\product\11.2.0\oggcore_1\dirdat\mb,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:\app\Administrator\product\11.2.0\oggcore_1\ggsci.exe

GGSCI(dg1)1>editparam./GLOBALS

ggschemaogguser

GGSCI(dg1)3>stopmgr

2)安装DDL对象

进入到ogg的安装目录,此实验为D:\app\Administrator\product\11.2.0\oggcore_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:\app\Administrator\product\11.2.0\oggcore_1\dirrpt\repl.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:\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",共同学习,共同成长!!!