Goldengate数据初始化同步实战方案

一、 前言
Goldengate数据初始化同步是指对数据同步两端进行重新配置,使数据重新得到正常同步的过程,有时候因OGG的两端数据发生异常更改,或归档日志意外删除等原因,同步已不能正常运行,这个时候不得不需要重新初始化,以下为整个初始化的详细步骤,以后有需要可按这个步骤进行配置.

二、 操作步骤
以下以MOBILE用户初始化为例,其他用户如需初始化更改相应的名字即可:
1. 停止各进程:
初始化前,停止相应的OGG进程,包括抽取,传输和复制进程三个进程
(这里三个进程分别用e_,p_,r_作为前缀):
1)先在目标端停止相应的复制进程:

cd  /backup/goldengate

执行ggsci进入ogg命令模式,停止该复制进程:

GGSCI (db1) 1>stop r_mobile

确认已停止:info all 看到该进程stoped(如异常挂起是abend)状态即可

2) 再到源端(oss)停止抽取和传输进程:

GGSCI (db1) 1>stop e_mobile
GGSCI (db1) 1>stop p_mobile

确认已停止:info all 看到该进程stoped状态即可

2. 源端(oss)初始化操作
1) 源端重新增加用户的附加日志:
cd /ogg
执行ggsci进入ogg命令模式
登录数据库认证:

GGSCI (db1) 1> dblogin userid goldengate, password goldengate

增加mobile用户各表的附加日志(以防止有新增的表,重新进行add操作)

GGSCI (db1) 1> add trandata mobile.*

2)删除原来的抽取进程

GGSCI (db1) 1> delete extract e_mobile

3)删除原来抽取进程相关GGLOG日志
操作系统进入该进程的日志目录

cd /ogg/gglog/dirdat/e_mo2o/

删除该抽取进程的同步日志

rm -rf e*

4)增加新的抽取进程:

GGSCI (db1) 1> add extract e_mobile, tranlog, begin now,threads 2
GGSCI (db1) 1> add exttrail /ogg/gglog/dirdat/e_mobile/ex, extract e_mobile,megabytes 200

5) 删除并增加传输进程:
删除传输进程

GGSCI (db1) 1>delete extract p_mobile

增加传输进程

GGSCI (db1) 1>add extract p_mobile, exttrailsource /ogg/gglog/dirdat/e_mobile/ex
GGSCI (db1) 1>add rmttrail /backup/goldengate/dirdat/mobile/re, extract p_mobile, megabytes 200

确认抽取和传输进程的配置信息存在(重新删除并增加进程,其进程的配置文件是会保留的)

GGSCI (db1) 1>view params e_mobile
GGSCI (db1) 1>view params p_mobile

6)源端启动抽取进程
启动前先做以下操作:

GGSCI (db1) 1>alter extract p_mobile,begin now --让传输进程从此刻开始启动传输数据

然后启动抽取进程:

GGSCI (db1) 1>start e_mobile

用户info all 确定该进程正常启动到running状态.

7)记录oss源端scn,并把该scn号复制到下面的第4.2步:

SQL> select to_char(dbms_flashback.get_system_change_number,99999999999999999999999999) getscn from dual;
GETSCN
---------------------------
13969909189033

8)源端(oss)导出mobile用户数据:

expdp '"/as sysdba"' directory=DUMP_DIR dumpfile=mobile_1022.dmp schemas=mobile
--DUMP_DIR对应的目录为/ogg/backup

9)用ftp方式传输该文件至ods端(谨记用binary二进制模式):
SHELL模式执行:
ftp 10.205.16.200
输入用户/密码:/
切换binary模式和存放目录:
ftp> binary
200 Switching to Binary mode.
ftp> cd /backup/export
250 Directory successfully changed.
上传备份文件
ftp> put mobile_1022.dmp

3. 目标端(ods)初始化操作:
1)先删除目标端(ods)的初始化用户的数据:
SQL>drop user mobile cascade; --该操作一定要谨慎,确保是ods才可操作

2) 导入初始化用户数据:

impdp '"/as sysdba"' directory=dir1 dumpfile=mobile_1022.dmp remap_tablespace=TBS_MOBILE_PUBLIC:TBS_OSSZX

3) 目标端(ods)删除复制进程和检查点表:

GGSCI (db1) 1>dblogin userid goldengate, password goldengate
GGSCI (db1) 1>delete replicat r_mobile
GGSCI (db1) 1>delete checkpointtable goldengate.ckpt_mobile  --这一步会让你确认,输入y回车即可

4) 删除相关复制进程r_mobile的同步日志:

cd  /backup/goldengate/dirdat/mobile
rm -rf re*

5)重新增加检查点表和复制进程:

GGSCI (db1) 1>dblogin userid goldengate, password goldengate
GGSCI (db1) 1>add checkpointtable goldengate.ckpt_mobile
GGSCI (db1) 1>add replicat r_mobile, exttrail /backup/goldengate/dirdat/mobile/re, checkpointtable goldengate.ckpt_mobile

6) 再次确认复制进程配置信息存在:

GGSCI (db1) 1>view params r_mobile

4. 启动同步操作
1)再次回到源端(oss)操作:
启动传输进程:

GGSCI (db1) 1>start p_mobile

确定该进程启动成功:

GGSCI (db1) 1>info all

2)切换至目标端(ods)启动复制进程:

GGSCI (db1) 1>start r_mobile, aftercsn 13969909189033  --该scn来自上述2.7

最后待复制进程启动追回记录,没有延时后,可把复制进程r_mobile的 handlecollisions参数注释掉 –handlecollisions,然后重启复制进程r_mobile --这一步建议做,但也不是非要做。
至此,整个同步初始化过程完成!

三、 附录
–各进程配置
–e_mobile

extract e_mobile
SETENV (ORACLE_HOME = "/u01/oracle/product/11.2.0")
SETENV (ORACLE_SID = "zteossdb2")
SETENV (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
userid goldengate,password goldengate
exttrail /ogg/gglog/dirdat/e_mobile/ex
TRANLOGOPTIONS DBLOGREADER
DISCARDROLLOVER AT 6:00
REPORTROLLOVER AT 7:00
REPORTCOUNT EVERY 1 HOURS,RATE
EOFDELAYCSECS 50
FLUSHCSECS 50
dynamicresolution
DDL INCLUDE objname mobile.*,
DDLOptions AddTranData, Report
table mobile.*;

–p_mobile

extract p_mobile
rmthost 10.205.16.200,mgrport 7809
passthru
FLUSHCSECS 40
EOFDELAYCSECS 10
rmttrail /backup/goldengate/dirdat/mobile/re
table mobile.*;

–r_mobile

replicat r_mobile
SETENV (ORACLE_HOME = "/oracle/app/db/11.2.0")
userid goldengate,password goldengate
handlecollisions
discardfile /backup/goldengate/dirrpt/rep_mobile.dsc,append, megabytes 10
EOFDELAYCSECS 20
assumetargetdefs
dynamicresolution
--DBOptions SUPPRESSTRIGGERS
BatchSQL
MAXTRANSOPS 1000
DDL INCLUDE ALL objname mobile.*;
map mobile.*, target mobile.*;