第1章 oracle goldengate简单介绍
Oracle
Golden Gate软件是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实 现源数据库与目标数据库同步。Oracle Golden Gate可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制,从而在可以在应急系统、在线报表、 实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾、数据库升级和移植、双业务中心等多个场景下应用。同时,Oracle Golden Gate可以实现一对一、广播(一对多)、聚合(多对一)、双向、点对点、级联等多种灵活的拓扑结构
第2章 实施前的准备
1、为GoldenGate软件划分一定的共享存储空间(天数*每天数据变化量),并创建文件系统。(共享存储空间>=18G,每天产生10G左右的归档,队列文件保存7天,GoldenGate每天抽取后产生的队列文件在/splex/ogg/,保留7天则需要18G空间)【此处做了预估,即考虑到未来业务量的增长,故做出了18G的估算,现在业务约为2G左右】
2、数据库必须处于归档模式,建议保留7-14天以上的归档日志;
3、数据库必须处于归档模式,建议保留7-14天以上的归档日志;
4、为GoldenGate分配端口7809,7809-7820(在源和目标端),而Veridata(数据比对软件)则需要开放端口10110,10120,10130,10140,10150端口。
5、将数据库附加日志打开
6、创建goldengate数据库用户,源和目标,确定目标使用的表空间
7、确定应用情况,goldengate不支持中文列、表名,物化视图,表压缩等
第3章 安装 Goldengate
3.1 创建运行GoldenGate的用户
$SQLPLUS / AS SYSDBA
SQL>
CREATE USER ogg IDENTIFIED BY ogg ;
GRANT CONNECT TO ogg;
GRANT ALTER ANY TABLE TO ogg;
GRANT ALTER SESSION TO ogg;
GRANT CREATE SESSION TO ogg;
GRANT FLASHBACK ANY TABLE TO ogg;
GRANT SELECT ANY DICTIONARY TO ogg;
GRANT SELECT ANY TABLE TO ogg;
GRANT RESOURCE TO ogg;
3.2 解压GoldenGate安装包
通过ftp上传GoldenGate软件包到/splex/ogg目录,并解压缩
cd /splex/ogg
解压ggs_AIX_ppc_ora10.2_64bit.tar文件 tar -xvf ggs_AIX_ppc_ora10.2_64bit.tar
3.3 确认数据库已经处于归档模式
SQL>archive log list;
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 11
Next log sequence to archive 13
Current log sequence 13
3.4 附加日志是否打开
SQL> select supplemental_log_data_min from v$database;
SQL> select supplemental_log_data_min from v$database;
SUPPLEME
--------
YES
3.5 安装Goldengate
进入Goldengate解压目录,然后创建Goldengate所需GGSCI环境:
$cd /splex/ogg
$./ggsci
GGSCI> create subdirs
3.6 增加附加日志
在GGSCI命令行中登陆数据库,为需要复制的数据表添加trandata。
3.6.1 统计预算执行需要同步的表
1,将yszx2012用户所需同步的表按照下面的格式放到/ogg/dirsql/yszx2012文件中
dblogin userid ogg, password ogg
add trandata user_nane.table_name
……
……
例如想增加yszx2012这个用户的ACC_ACCOUNTAPPLY这张表,格式如下:
dblogin userid ogg, password ogg
add trandata yszx2012.ACC_ACCOUNTAPPLY
……
……
2,将hnzw用户所需同步的表按照下面的格式放到/ogg/dirsql/hnzw文件中
dblogin userid ogg, password ogg
add trandata user_nane.table_name
……
……
例如想增加hnzw这个用户的AAA_EN这张表,格式如下:
dblogin userid ogg, password ogg
add trandata hnzw.AAA_EN
……
……
3.6.1 3.6.2统计非税需要同步的表
1,将hnfs用户所需同步的表按照下面的格式放到/ogg/dirsql/hnfs文件中
dblogin userid ogg, password ogg
add trandata user_nane.table_name
……
……
例如想增加hnfs这个用户的AA04这张表,格式如下:
dblogin userid ogg, password ogg
add trandata hnfs.AA04
……
……
2,将hnfs_hs用户所需同步的表按照下面的格式放到/ogg/dirsql/hnfs_hs文件中
dblogin userid ogg, password ogg
add trandata user_nane.table_name
……
……
例如想增加hnzw这个用户的AAA_EN这张表,格式如下:
dblogin userid ogg, password ogg
add trandata hnfs_hs.DDZDCS
……
……
3.6.3 将预算执行需要同步的表增加到trandata队列
1,登录到2.1.4.72,进入到goldengate安装目录中
$cd /ogg/
2,执行下面的命令调用存放表的文件
./ggsci paramfile /ogg/dirsql/yszx2012
./ggsci paramfile /ogg/dirsql/hnzw
3.6.4 将预算执行需要同步的表增加到trandata队列
1,登录到2.1.4.72,进入到goldengate安装目录中
$cd /ogg/
2,执行下面的命令调用存放表的文件
./ggsci paramfile /ogg/dirsql/yszx2012
./ggsci paramfile /ogg/dirsql/hnzw
3.6.5 将非税需要同步的表增加到trandata队列
1,登录到2.1.4.118,进入到goldengate安装目录中
$cd /ogg/
2,执行下面的命令调用存放表的文件
./ggsci paramfile /ogg/dirsql/hnfs
./ggsci paramfile /ogg/dirsql/hnfs_hs
3.7 配置生产端
3.7.1.1 mgr进程配置
3.7.1.2 配置预算执行数据库的mgr进程:
在GGSCI环境中,配置mgr进程:
GGSCI>edit param mgr
port 7809
autorestart EXTRACT *, retries 24, waitminutes 10
purgeoldextracts ./dirdat/*, usecheckpoints, minkeepfiles 25
3.7.1.3 配置非税征收数据库mgr进程
在GGSCI环境中,配置mgr进程:
GGSCI>edit param mgr
port 7809
autorestart EXTRACT *, retries 24, waitminutes 10
purgeoldextracts ./dirdat/*, usecheckpoints, minkeepfiles 25
3.7.2 抓取进程配置
3.7.2.1 配置预算执行数据库抓取进程
1、 建立抓取进程:
添加eyszx进程,从数据库日志中抓取有效数据
GGSCI> add ext eyszx, tranlog, threads 2, begin now (如果是数据库为rac则要带threads 2,如果为单实例则不需要带)
2、 添加队列文件:
GGSCI> add exttrail ./dirdat/ys, ext eyszx, megabytes 200
3、 编辑抓取进程配置:
EXTRACT EYSZX
extract eyszx
SETENV (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
userid ogg, password ogg
exttrail ./dirdat/ys
TRANLOGOPTIONS EXCLUDEUSER ogg --排除OGG用户
TRANLOGOPTIONS altarchivedlogformat instance hnyz1 %t_%s_%r.arc --设置archivelog访问路径
TRANLOGOPTIONS altarchivedlogformat instance hnyz2 %t_%s_%r.arc
TRANLOGOPTIONS altarchivelogdest primary instance hnyz1 +YSZX, altarchivelogdest instance hnyz2 +YSZX --设置ASM连接方法
--TRANLOGOPTIONS ASMUSER sys@asm, ASMPASSWORD ********
TRANLOGOPTIONS dblogreader
--TRANLOGOPTIONS rawdeviceoffset 0 --AIX裸设备需要添加的参数
TRANLOGOPTIONS CONVERTUCS2CLOBS --防止在抓取的情况下 乱码
--GETUPDATEBEFORES --增强update功能,让每次update都抓2次执行前一次,执行后一次
GETTRUNCATES --启用 truncate
table hnzw.ACCOUNTANT_SUBJECT;
……
……
3.7.2.2 配置非税数据库抓取进程
1、建立抓取进程:
添加efs进程,从数据库日志中抓取有效数据
2、add ext efs, tranlog, threads 2, begin now
3、添加队列文件:
add exttrail ./dirdat/fs, ext efs, megabytes 200
3、编辑抓取进程配置
extract efs
SETENV (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
userid ogg, password ogg
exttrail ./dirdat/fs
TRANLOGOPTIONS EXCLUDEUSER ogg
TRANLOGOPTIONS altarchivedlogformat instance fsdb1 %t_%s_%r.arc
TRANLOGOPTIONS altarchivedlogformat instance fsdb2 %t_%s_%r.arc
TRANLOGOPTIONS altarchivelogdest primary instance fsdb1 +HNFS, altarchivelogdest instance fsdb2 +HNFS
--TRANLOGOPTIONS ASMUSER sys@asm, ASMPASSWORD welcome1
TRANLOGOPTIONS dblogreader
TRANLOGOPTIONS rawdeviceoffset 0
TRANLOGOPTIONS CONVERTUCS2CLOBS
GETUPDATEBEFORES
GETTRUNCATES
table hnfs_hs.DDZDCS;
table hnfs_hs.FA01;
table hnfs_hs.FA02;
……
……
3.7.3 传输进程配置
3.7.3.1 配置预算执行传输进程
1、添加pyszx进程,将本地队列的数据抽取出来发送到远端队列:
GGSCI>add ext pyszx, exttrailsource ./dirdat/ys
2、添加远端队列,将pyszx进程捕捉到的数据将写入该队列:
GGSCI>add rmttrail ./dirdat/ys, ext pyszx, megabytes 100
3、编辑pyszx进程:
EXTRACT pyszx
extract pyszx
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid ogg, password ogg
rmthost 2.1.11.2, mgrport 7809
rmttrail ./dirdat/ys
table yszx2012.*;
table hnzw.*;
3.7.3.2 配置非税征收数据库传输进程
1、添加pfs进程,将本地队列的数据抽取出来发送到远端队列:
GGSCI>add ext pfs, exttrailsource ./dirdat/fs
2、添加远端队列,将pfs进程捕捉到的数据将写入该队列:
GGSCI>add rmttrail ./dirdat/fs, ext pfs, megabytes 100
3、编辑pfs进程:
extract pfs
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid ogg, password ogg
rmthost 2.1.11.2, mgrport 7809
rmttrail ./dirdat/fs
table hnfs.*;
table hnfs_hs.*;
table trans.*;
3.7.4 启动mgr进程
GGSCI>start mgr
3.7.5 启动抓取进程
GGSCI>start EYSZX
GGSCI>start efs
3.7.6 启动传输进程
GGSCI>start pYSZX
GGSCI>start pfs
3.8 初始化数据库
生产端通过exp的方式把数据库导出来,然后copy到容灾端,最后容灾端通过imp的方式导入。
3.9 配置容灾端
容灾端只有一个数据库,以不同的用户作为不同的容灾对象进行容灾。故配置时只需要一个mgr进程,但是需要2个接收进程分别接收从预算执行和非税征收服务器传来的数据。
3.9.1 Mgr进程配置
在GGSCI环境中,配置mgr进程:
GGSCI>edit param mgr
port 7809
purgeoldextracts ./dirdat/*, usecheckpoints, minkeepfiles 25
3.9.2 配置接收进程
3.9.2.1 配置预算执行数据库接收进程
1、添加RYSZX进程,从数据库日志中抓取有效数据
GGSCI>add rep RYSZX, exttrail ./dirdat/ys
2、编辑RYSZX进程参数:
replicat ryszx
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
--Set environment variable (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid ogg, password ogg
exttrail ./dirdat/ys
ASSUMETARGETDEFS
discardfile ./dirrpt/ryszx.dsc, append
--handlecollisions
--mapexclude YSZX2012.GL_BALANCE_CACHE
map yszx2012.*, target yszx2012.*;
map hnzw.*, target hnzw.*;
3.9.2.2 配置非税征收数据库接收进
1、添加RFS进程,从数据库日志中抓取有效数据:
GGSCI>add rep RFS, exttrail ./dirdat/fs
2、编辑RFS进程参数:
replicat rfs
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid ogg, password ogg
exttrail ./dirdat/fs
ASSUMETARGETDEFS
discardfile ./dirrpt/rfs.dsc, append
--handlecollisions
--mapexclude HNFS.CHECKBILL_LOG
map hnfs.*, target hnfs.*;
map hnfs_hs.*, target hnfs_hs.*;
map trans.*, target trans.*;
3.9.3 启动mgr进程
GGSCI>start mgr
3.9.4 启动接收进程
GGSCI>start rfs
GGSCI>start RYSZX
tips:
goldengate安装实施相对简单,主要是再生产环境中会遇到很多想不到的问题,后面的文章会把这些问题汇总下,有问题的可以进行讨论。