OGG部署

OGG部署

概述

本文假定oracle数据库RAC环境,双节点,源端instance为test,OGG安装目录,源端和目标端都为/goldengate,新建OGG用户ogg,捕获进程ex_test,投递进程dp_test,接收进程rep_test,同步表ogg.test。

源端

创建用户

– Create the user
create user ogg identified by “oracle123” default tablespace TS_OGG_DATA temporary tablespace TS_OGG_TMP;

添加附加日志

alter table ogg.test add supplemental log data(all) columns;

创建捕获进程

cd /goldengate
./ggsci
dblogin userid ogg, password oracle123
add ext ex_test, tranlog, begin now, threads 2 -------针对集群,threads 2 是必须要的创建进程的参数,否则启动进程时会报错
add EXTTRAIL ./dirdat/ts, extract ex_test,MEGABYTES 100

edit param ex_test

EXTRACT ex_test
setenv (NLS_LANG= AMERICAN_AMERICA.AL32UTF8)
setenv (ORACLE_SID=test)
userid ogg,password oracle123
exttrail ./dirdat/ts
REPORT AT 01:59
REPORTROLLOVER AT 02:00
TRANLOGOPTIONS FORCEFETCHLOB
NUMFILES 3000
EOFDELAYCSECS 30
GETTRUNCATES
DYNAMICRESOLUTION
DBOPTIONS ALLOWUNUSEDCOLUMN
TRANLOGOPTIONS DBLOGREADER
TRANLOGOPTIONS _IGNORETHREADEVENT
FETCHOPTIONS NOUSESNAPSHOT
FETCHOPTIONS SUPPRESSDUPLICATES
FETCHOPTIONS FETCHPKUPDATECOLS
WARNLONGTRANS 12H, CHECKINTERVAL 10M
CACHEMGR, CACHESIZE 256MB
TRANLOGOPTIONS CONVERTUCS2CLOBS
THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 90000 IOLATENCY 180000

table ogg.test;

创建投递进程

add extract dp_test, exttrailsource ./dirdat/ts
add rmttrail /goldengate/dirdat/ts,extract dp_test, MEGABYTES 100

edit param dp_test

extract dp_test
setenv (NLS_LANG= AMERICAN_AMERICA.AL32UTF8)
dynamicresolution
userid ogg,password oracle123
rmthost 10.1.100.99, mgrport 7810, TCPBUFSIZE 100000, TCPFLUSHBYTES 300000
rmttrail /goldengate/dirdat/ts
passthru
REPORT AT 01:59
REPORTROLLOVER AT 02:00
FLUSHCSECS 30
NUMFILES 3000
EOFDELAYCSECS 30
CACHEMGR, CACHESIZE 256MB
–NOCOMPRESSDELETES
–GETUPDATEBEFORES

table ogg.test;

生成并发送表结构定义文件

cd /goldengate/dirprm
vi defgen_ts.prm

defsfile ./dirdef/def_ts.defs
userid ogg,password oracle123
table ogg.test;

cd /goldengate
./defgen paramfile /goldengate/dirprm/defgen_ts.prm

cd /goldengate/diedef/
scp def_ts.defs 10.1.100.99:/goldengate/dirdef/

启动捕获进程与投递进程

start ex_test;
start dp_test;

目标端

创建接收进程

cd /goldengate
./ggsci
dblogin userid ogg, password oracle123

add replicat rep_test,exttrail ./dirdat/ts CHECKPOINTTABLE gg.checkpoint

edit param rep_test

replicat rep_test
SETENV (ORACLE_SID=“test1”)
setenv(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid ogg,password oracle123
CACHEMGR, CACHESIZE 256MB
REPERROR DEFAULT,ABEND
DISCARDFILE ./dirrpt/rep_test.dsc,APPEND,MEGABYTES 100
DISCARDROLLOVER AT 06:00
GETTRUNCATES
NUMFILES 3000
EOFDELAYCSECS 30
ALLOWNOOPUPDATES
DYNAMICRESOLUTION
GETUPDATEBEFORES
NOCOMPRESSDELETES
–ASSUMETARGETDEFS
SOURCEDEFS ./dirdef/def_ts.defs

map ogg.test, target test.test;

启动接收进程

start rep_test

测试链路

在同步的表中源端进行增删改操作,看目标端能否实时同步。

相关解释与说明

1、第一次创建OGG链路,要修改相关的数据库参数。
2、创建表结构定义文件,是因为源端和目标端表结构不一致,表结构一致的话则不需要表结构定义文件。两端表结构一致的话,在OGG的11.*的版本中,需使用ASSUMETARGETDEFS参数。
3、OGG同步数据,在源端发送数据有两种形式,一种是数据落地的方式发送,就是本文所创建的这种链路,还有一种是数据不落地的方式进行数据传输,这种方式投递进程和捕获进程在一个进程中,当捕获进程捕获到表数据的变化时,将直接发送到目标端,而不会在本地存一份,但是会存在数据的丢失风险。

上一篇:OGG-01519


下一篇:OGG 实用案例(一)-oracle 同步kafka