GoldenGate 多表按条件的数据复制

来源:互联网 发布:java直接读取zip文件 编辑:程序博客网 时间:2024/06/05 11:42

一、概述:
goldgate的实施:把明细库的多个表的数据同步到ZY,部分表同步全部记录,部分表同步部分记录(按SHIJIID(市级ID)过滤)。

总体思路:
1、省局明细库到10个地市州的数据分发是10个1:1的数据复制,即源(省局)数据库上有10个Extract(抽取进程)与10个Pump(投递进程),10个目标(地市州)上各有一个Replicat(复制进程)。
2、在源的Extract抽取进程中过滤数据:在Extract抽取进程中定义多个表,部分表(如省级代码)抽取全部记录,部分表(如地市州业务数据)抽取部分记录(按SHIJIID过滤);
3、可在源的Pump投递进程中使用通配符(SUPER.*)投递数据,但实际工作中使用确定的表名,以免造成trail文件堆积
4、在目标的Replicat复制进程中使用通配符(SUPER.*)应用还原数据;
5、说明:为了保持该脚本的简介性,此脚本中很多内容较多的授权、过滤、导出等语句已整理为单独文件。

三、命名规范
1、进程命名
进程名最多字符为8位,10个地州市需要区分,源端捕获进程以EX开头,传递进程以PM开头,目标端应用进程以RE开头
后面跟以前的数字顺序(GA为0),最后跟市州名称的缩写,例如ZY捕获进程名为EX_3_ZY,传递进程为PM_3_ZY,应用进程RE_3_ZY
2、管理进程均为MGR
3、TRAIL文件的命名
TRAIL文件一般在DIRDAT目录,不同地区需要相互区分,但开头的字母只能2位,故以一位字母加一位数字形式加以区分
捕获TRAIL文件以e开头,传递及应用TRAIL文件(必须一致)以p开头,后跟约定的数字
例如,ZY的捕获TRAIL文件以e4开头,传递及应用进程以p4开头
另外,DISCARDFILE文件的命名沿用进程命名规范,例如ZY的DISCARDFILE文件名为:EX_3_ZY.dsc
MANAGER进程中PURGEOLDEXTRACTS文件以字母“o”开头

四、源端配置
  1、源端OS为Linux5.5,  关闭防火墙;
  2、源端Oracle 为 Oracle 12.2.0.3
  3、GoldenGate为 GoldenGat 11.2.1.01 for 11g (Linux64位),安装在/mis_databak/bak/ggs/目录;

1、检查用户环境变量
源:
vim /home/oracle/.bash_profile

export PATH=/mis_databak/bak/ggs:$PATH
exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/lib32
export LD_LIBRARY_PATH=/mis_databak/bak/ggs:$LD_LIBRARY_PATH
目标遵义dbsrv2:
vim /home/oracle/.bash_profile

export PATH=/mis_databak/bak/ggs:$PATH
exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/lib32
export LD_LIBRARY_PATH=/mis_databak/bak/ggs:$LD_LIBRARY_PATH

3、解压软件,创建GoldenGat的subdirs
unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
tar -xvof fbo_ggs_Linux_x64_ora11g_64bit.tar
cd /mis_databak/bak
chown -R oracle:dba ggs

3.1验证GoldenGate依赖的包有没有安装,执行如下命令,如果有not fount的包,则需先安装相关的包。
[oracle@dbsrv2 ggs]$ ldd ggsci

3.2启动GoldenGat并创建GoldenGat的subdirs
cd /mis_databak/bak/ggs
./ggsci

GGSCI (source) 2> create subdirs

 

6、在Oracle中创建GoldenGate管理用户
create user ggs identified by hubu88661126 default tablespaceUSERS;
grant connect,resource,unlimited tablespace to ggs;
grant execute on utl_file to ggs;
grant select any dictionary,select any table to ggs;
grant alter any table to ggs;
grant flashback any table to ggs;
grant execute on DBMS_FLASHBACK to ggs;
grant EXEMPT ACCESS POLICY to STRMADMIN;

 

8、添加GoldenGate的checkpoint表 (对源端可选,本实验中已设置。若是多级数据复制,目标段也是源端,则需设置)

GGSCI (source) 1>  edit PARAMSGLOBALS

增加如下内容:

MGRSERVNAME GGMGR
checkpointtable ggs.checkpoint

9、配置源端MGRG管理进程组

GGSCI (source) 1> edit params MGR

在新建的mgr.prm文件中:

PORT 7809
DYNAMICPORTLIST 7801-8200
AUTOSTART ER *
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS /mis_databak/bak/ggs/dirdat/o4*,usecheckpoints,minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45

10.0

10.1、如果是使用ASM存储redo log file 或 archivelog file
extract 参数中需要使用
TRANLOGOPTIONS ASMUSER sys@ASM2,ASMPASSWORD oracle123
10.2、使用TRANLOGOPTIONS参数前,首先要保证ASM的连通性
10.2-1、配置grid用户下listener.ora
vim /opt/app/11.2.0.3/grid/network/admin/listener.ora

11、配置源端Extract抽取进程组

GGSCI (source) 5> edit params EX_3_ZY

添加如下内容:

EXTRACT EX_3_ZY
dynamicresolution
setenv (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
SETENV (ORACLE_HOME ="/opt/app/oracle/product/11.2.0.3/dbhome_1")
SETENV (ORACLE_SID = "mxdb2")
TRANLOGOPTIONS ASMUSER sys@ASM2,ASMPASSWORD oracle123
USERID ggs,password  hubu88661126
--GETTRUNCATES
REPORTCOUNT EVERY 1 MINUTES, RATE
DISCARDFILE/mis_databak/bak/ggs/dirrpt/EX_3_ZY.dsc,APPEND,MEGABYTES 1024
--THREADOPTIONS  MAXCOMMITPROPAGATIONDELAY 60000IOLATENS 60000
DBOPTIONS  ALLOWUNUSEDCOLUMN
WARNLONGTRANS 2h,CHECKINTERVAL 3m
EXTTRAIL /mis_databak/bak/ggs/dirdat/e3
--TRANLOGOPTIONS EXCLUDEUSER USERNAME
FETCHOPTIONS NOUSESNAPSHOT
FETCHOPTIONS FETCHPKUPDATECOLS
TRANLOGOPTIONS  CONVERTUCS2CLOBS
--TABLEEXCLUDE SCOTT.SALGRADE;

12、配置源端Pump投递进程组

GGSCI (source) 10> edit params PM_3_ZY

在新建的 PM_3_ZY.prm文件中:

EXTRACT PM_3_ZY
Dynamicresolution
SETENV (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
Setenv (ORACLE_SID=mxdb2)
USERID ggs, password  hubu88661126
PASSTHRU
RMTHOST 153.24.0.172, MGRPORT 7809, compress
RMTTRAIL /mis_databak/bak/ggs/dirdat/p3
TABLE  SUPER.*;

五、目标端配置
(1、目标端OS为Linux5.5,;
  2、Oracle 为 Oracle 12.2.0.3 forLinux,Oracle_sid为tr2, 全局数据库名为tr2.gzdstr.gov.cn;
  3、GoldenGate为 GoldenGat 11.2.1.01 for 11g,安装在/mis_databak/bak/ggs/目录;
  4、被Oracle复制的表在源与目标上均为SUPER用户下的948张表)


1、设置环境变量
2、GoldenGat 11.2.1.01 for 11g

3、创建GoldenGat的 subdirs

GGSCI (dest) 1> create subdirs

7、在Oracle中创建GoldenGate管理用户

sqlplus / as sysdba

create user ggs identified by hubu88661126 default tablespaceUSERS;
grant connect,resource,unlimited tablespace to ggs;
grant execute on utl_file to ggs;
grant select any dictionary,select any table to ggs;
grant alter any table to ggs;
grant flashback any table to ggs;
grant execute on DBMS_FLASHBACK to ggs;
grant insert any table to ggs;
grant delete any table to ggs;
grant update any table to ggs;
grant EXEMPT ACCESS POLICY to STRMADMIN;

9、添加GoldenGate的checkpoint表

GGSCI (dest) 1>  edit PARAMSGLOBALS
GLOBALS文件的内容为: ( 增加 checkpointtable ggs.checkpoint )
MGRSERVNAME GGMGR
checkpointtable ggs.checkpoint

10、配置目标端MGRG管理进程组

GGSCI (dest) 6> edit params MGR

在新建的mgr.prm文件中:

PORT 7809
DYNAMICPORTLIST 7801-8200
AUTOSTART ER *
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS /mis_databak/bak/ggs/dirdat/o4*,usecheckpoints,minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45

--必须start MGR进程,要在配置应用进程前启动目标端的MGR进程
GGSCI (dest) 11> start MGR

11、配置Replicat应用进程组

GGSCI (dest) 12> edit params RE_3_ZY

在新建的RE_3_ZY.prm文件中:

REPLICAT RE_3_ZY
SETENV (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
USERID ggs, password  hubu88661126
ASSUMETARGETDEFS
APPLYNOOPUPDATES
REPERROR default,discard
discardfile/mis_databak/bak/ggs/dirrpt/RE_3_ZY.dsc,append,megabytes 50
map SUPER.*, target SUPER.*;

3、导出数据,再导入
源:
3.1、取出SCN号: select current_scn from v$database;
13537165221266

3.2、修改super_3_ZY.par参数文件,并上传至明细库对应目录/mis_databak/bak/dmp
3.3、导出数据
expdp system/oracle123@mxdb2parfile=/mis_databak/bak/dmp/super_3_zy.par

3.4、启动源端进程

GGSCI (mxdb2.gzds.gov.cn) 1031> start mgr
GGSCI (mxdb2.gzds.gov.cn) 1032> start *

Sending START request to MANAGER ...
EXTRACT EX_3_ZY starting
EXTRACT PM_3_ZY is already running.
3.5、目标端导入
scp /mis_databak/bak/dmp/super_3_zy.dmp root@153.24.0.172:/mis_databak/bak/exp_bak/
chown oracle:dba super_3_zy.dmp
impdp system/zysdsj8230918 directory=dump dumpfile=super_3_zy.dmptable_exists_action=append logfile=super_3_zy.log

七、目标端启动应用进程,从特定的SCN号启动,配置结束

start  replicat RE_3_ZY, aftercsn13537165221266

0 0
原创粉丝点击