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同步数据,在源端发送数据有两种形式,一种是数据落地的方式发送,就是本文所创建的这种链路,还有一种是数据不落地的方式进行数据传输,这种方式投递进程和捕获进程在一个进程中,当捕获进程捕获到表数据的变化时,将直接发送到目标端,而不会在本地存一份,但是会存在数据的丢失风险。