初尝oracle GoldenGate 备份软件.docx
《初尝oracle GoldenGate 备份软件.docx》由会员分享,可在线阅读,更多相关《初尝oracle GoldenGate 备份软件.docx(11页珍藏版)》请在冰豆网上搜索。
初尝oracleGoldenGate备份软件
初尝oracleGoldenGate备份软件
前言
GoldenGate软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库同步。
GoldenGate可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制,从而在可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾等多个场景下应用。
同时,GoldenGate可以实现一对一、广播(一对多)、聚合(多对一)、双向、点对点、级联等多种灵活的拓扑结构。
环境要求:
1. 支持的平台
支持的OracleDatabase版本
在当前的OracleGoldenGate10.4版本中,支持如下OracleDatabase版本
Oracle8i(DMLsupportonly)
Oracle9.1and9.2(DMLandDDLsupport)
Oracle10.1and10.2(DMLandDDLsupport)
Oracle11g(DMLandDDLsupport)
支持的操作系统平台
几乎所有主流的操作系统,GoldenGate都支持
Windows2000,2003,XP,Linux,SunSolaris,HPNonStop,HP-UX
2. 操作系统需求
内存要求
GoldenGate对操作系统内存的需求主要取决于Extract和Replicat进程数,一般建议>2G。
DISK空间需求
由于要数据库必须设置为归档模式,所以要求至少保存7天以上的日志,建议剩余空间在10G~100G之间。
对于RAC环境
对于RAC环境,GoldenGate的相关软件和工作目录需要配置在shareddisk环境中,从而保证对所有node都是可用的,从任何一个node都可以启动GoldenGate的进程,当其中一个node出现异常时,可以在剩余的node启动而无须修改任何配置参数。
否则如果运行在单个node上的话,需要将剩余node中的归档日志通过一定的技术共享出来并加载到GoldenGate运行节点。
对于RAC环境,GoldenGate要求所有node必须保持时钟同步,同时必须保持所有RACnode和运行extract进程的node节点保持时钟同步。
因为GoldenGate会比较本地的系统时间和commit的时间戳。
所以不能忽略这个设置。
否则可能导致数据复制的紊乱。
3. 数据库需求
数据库客户端
GoldenGate需要安装fullOracleclient,以便于GoldenGate程序访问OracleXDKlibraries。
数据库用户
建议使用sys或任何其他具有sysdba/sysasm权限的用户。
数据库配置
对于SourceOracleDatabase要求
数据库处于归档模式下
打开补充日志
打开forcelogging
分别配置连接源数据库和目标数据库的主机字符串
建立一个专门的用户如Goldengate来负责将所需的数据同步到远端,而不是用已有的业务用户
这个用户需要哪些权限呢?
Createusergoldengateidentifiedbygoldengate defaulttablespaceuserstemporarytablespacetempquotaunlimitedonusers;
GRANTCONNECTTOgoldengate;
GRANTALTERANYTABLETOgoldengate;
GRANTALTERSESSIONTOgoldengate;
GRANTCREATESESSIONTOgoldengate;
GRANTFLASHBACKANYTABLETOgoldengate;
GRANTSELECTANYDICTIONARYTOgoldengate;
GRANTSELECTANYTABLETOgoldengate;
GRANTRESOURCETOgoldengate;
GRANTdropANYTABLETOgoldengate;
GRANTDBATOgoldengate;
注*
补充日志是否打开查询语句:
selectsupplemental_log_data_minfromv$database;
打开补充日志语句:
alterdatabaseaddsupplementallogdata;
打开forcelogging语句:
Alterdatabaseforcelogging;
配置golengate
环境:
oslinux4.7x86_64数据库:
10.0.2.164位
IP设置:
源 192.168.8.1 目标 192.168.8.2
SID:
ORCL
1. 安装goldengate软件
在oracle官方网站上下载goldengate对应平台的安装程序
进入到GoldenGate的安装目录.
运行
GGSCI
InGGSCI,issuethefollowingcommandtocreatetheGoldenGateworkingdirectories.
CREATESUBDIRS
IssuethefollowingcommandtoexitGGSCI.
EXIT
2. 数据复制初始化
GoldenGate中支持的dataload方法有
Loadingdatawithadatabaseutility
LoadingdatafromfiletoReplicat
Loadingdatafromfiletodatabaseutility
LoadingdatawithaGoldenGatedirectload
LoadingdatawithadirectbulkloadtoSQL*Loader
LoadingtableswithTeradatatablecopy
LoadingdatawithTeradataloadutilities
注*这点我没怎么研究,我采用的rman异地恢复
3. 配置进程
第一步:
在源数据库和目标数据库分别配置管理进程mgr
GGSCI>editparamsmgr
port7809
(保存退出)
GGSCI>startmgr
Managerstarted.
GGSCI>infoall
ProgramStatus Group Lag imeSinceChkpt
MANAGER RUNNING
(可以正常启动)
第二步:
源数据库增加两个进程
*.一般源数据库需要应配置两个进程,一个负责抽取数据(ZLE_01),另一个负责投递数据(ZLE_02),默认只支持DML,如果要支持DDL需要执行一些单独的配置。
在源数据库系统中执行如下命令增加一个Extractgroup,详细的ADDEXTRACT语法参见官方手册说明或GGSCI的onlinehelp.
GGSCI>addextract,TRANLOG,BEGINNOW,THREADS
其中groupname表示这个Extractgroup的名字
TRANLOG表示使用事务日志的方式
BEGINNOW表示从现在开始,你也可以指定一个具体的开始时间
THREADS表示从哪个instance上运行,只对RAC环境有用,单机环境比需要指定该Option
2.1配置抽取进程
我这里是单机环境,extractgroupname定义为zle_01
GGSCI>DBLOGINUSERIDgoldengate@orcl1,PASSWORDgoldengate
GGSCI>addextractZLE_01,tranlog,beginnow
EXTRACTadded.
GGSCI>addRMTTRAIL./dirdat/ra,extract zle_01, megabytes50
查看一下刚才定义的这个extractprocess的结果
GGSCI>infoextractzle_01
EXTRACT ZLE_01 Initialized 2010-01-1911:
50 StatusSTOPPED
CheckpointLag 00:
00:
00(updated00:
00:
22ago)
LogReadCheckpoint OracleRedoLogs
2010-01-1911:
50:
39 Seqno0,RBA0
补充一个命令:
infoextractzle_01,showch看的更详细
为该抽取Extract进程配置参数文件,在源数据库执行如下命令
GGSCI>editparamzle_01
增加如下内容
EXTRACTZLE_01
SETENV(ORACLE_SID=ORCL)
USERIDgoldengate@ORCL1,PASSWORDgoldengate
RMTHOST192.168.8.1,MGRPORT9001
RMTTRAIL./dirdat/ra
TABLEZLHIS.TEST;
RMTTRAIL告诉extractprocess需要将trail文件写到哪里
TABLE部分说明我这个Extract进程只处理ZLHIS用户下的TEST表
好了,到这里就可以启动上面定义的Capture进程了,执行如下命令
GGSCI>startextractzle_01
SendingSTARTrequesttoMANAGER('mgr')...
EXTRACTZLE_01starting
GGSCI>
Verifytheresults:
GGSCI>infoEXTRACTZLE_01,DETAIL
GGSCI>viewREPORTZLE_01
GGSCI>infoextractZLE_01
好了,到这里就完成了一个最简单的抽取Extractprocess的配置并启动,下面来配置投递Extractprocess进程。
2.2配置投递进程
在Source系统执行如下命令
GGSCI>ADDEXTRACTZLE_02,EXTTRAILSOURCE./dirdat/ra,BEGINnow
GGSCI>ADDRMTTRAIL./dirdat/la,EXTRACTZLE_02
*(./dirdat/la为远端接收目录,必须存在)
GGSCI>editparamszle_02
添加内容如下:
extractZLE_02
dynamicresolution
PASSTHRU
rmthost192.168.8.2,mgrport9001,compress
rmttrail ./dirdat/la
numfiles3000
TABLEZLHIS.TEST;
GGSCI>startextractzle_02
SendingSTARTrequesttoMANAGER('mgr')...
EXTRACTZLE_02starting
查看下状态:
GGSCI>infoall
Program Status Group Lag TimeSinceChkpt
MANAGER RUNNING
EXTRACT RUNNING ZLE_01 00:
00:
00 00:
00:
05
EXTRACT RUNNING ZLE_02 00:
00:
00 00:
00:
07
2.3配置接收进程
在目标系统(Targetsystem)上执行如下命令增加一个复制组(ReplicatGroup)
GGSCI>DBLOGINUSERIDgoldengate@orcl2,PASSWORDgoldengate
GGSCI>addreplicatZLR_01,EXTTRAIL./dirdat/la,nodbcheckpoint
注,我这个中配置Extractprocess那个示例对应的,所以这里的exttrail文件名正好是Extractprocess中定义的RMTTRAIL./dirdat/la这点需要大家注意.
GGSCI>editparamZLR_01
增加如下内容并保存退出
REPLICATZLR_01
SETENV(ORACLE_SID=ORCL)
USERIDgoldengate@ORCL2,PASSWORDgoldengate
HANDLECOLLISIONS
ASSUMETARGETDEFS
allownoopupdates
dynamicresolution
numfiles3000
DISCARDFILE ./dirrpt/ZLR_01.DSC,append,megabytes10
mapZLHIS.TEST,targetZLHIS.TEST;
在Target系统中,执行如下命令
GGSCI>startreplicatZLR_01
Verifytheresults:
GGSCI>inforeplicatZLR_01
REPLICAT ZLR_01 LastStarted2010-01-1913:
50 StatusRUNNING
CheckpointLag 00:
00:
00(updated00:
00:
03ago)
LogReadCheckpoint File ./dirdat/la000000
FirstRecord RBA0
查看下状态:
GGSCI>infoall
Program Status Group Lag TimeSinceChkpt
MANAGER RUNNING
REPLICAT RUNNING ZLR_01 00:
00:
00 00:
00:
09
测试效果
在源数据库分别插入、修改、删除一条数据。
查看抽取进程状态:
GGSCI>stats ZLE_01
SendingSTATSrequesttoEXTRACTZLE_01...
StartofStatisticsat2010-01-2602:
53:
01.
Outputto./dirdat/ra:
ExtractingfromZLHIS.TESTtoZLHIS.TEST:
***Totalstatisticssince2010-01-2602:
15:
01***
Totalinserts 1.00
Totalupdates 1.00
Totaldeletes 1.00
Totaldiscards 0.00
Totaloperations 3.00
***Dailystatisticssince2010-01-2602:
15:
01***
Totalinserts 1.00
Totalupdates 1.00
Totaldeletes 1.00
Totaldiscards 0.00
Totaloperations 3.00
***Hourlystatisticssince2010-01-2602:
15:
01***
Totalinserts 1.00
Totalupdates 1.00
Totaldeletes 1.00
Totaldiscards 0.00
Totaloperations 3.00
***Lateststatisticssince2010-01-2602:
15:
01***
Totalinserts 1.00
Totalupdates 1.00
Totaldeletes 1.00
Totaldiscards 0.00
Totaloperations 3.00
EndofStatistics.
可以看到已经有记录,而且已经抽取成功,再查看投递进程,
GGSCI>statsZLE_02
SendingSTATSrequesttoEXTRACTZLE_02...
StartofStatisticsat2010-01-2603:
04:
13.
Outputto/u01/ggs/dirdat/re:
ExtractingfromZLHIS.TESTtoZLHIS.TEST:
***Totalstatisticssince2010-01-2602:
14:
25***
Totalinserts 1.00
Totalupdates 1.00
Totaldeletes 1.00
Totaldiscards 0.00
Totaloperations 3.00
***Dailystatisticssince2010-01-2602:
14:
25***
Totalinserts 1.00
Totalupdates 1.00
Totaldeletes 1.00
Totaldiscards 0.00
Totaloperations 3.00
***Hourlystatisticssince2010-01-2603:
00:
00***
Nodatabaseoperationshavebeenperformed.
***Lateststatisticssince2010-01-2602:
14:
25***
Totalinserts 1.00
Totalupdates 1.00
Totaldeletes 1.00
Totaldiscards 0.00
Totaloperations 3.00
EndofStatistics.
切换到目标数据库环境,同样查看接受应用进程。
GGSCI>statsZLR_01
SendingSTATSrequesttoREPLICATZLR_01...
StartofStatisticsat2010-01-2605:
58:
36.
ReplicatingfromZLHIS.TESTtoZLHIS.TEST:
***Totalstatisticssince2010-01-2604:
46:
57***
Totalinserts 1.00
Totalupdates 1.00
Totaldeletes 1.00
Totaldiscards 0.