初尝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-UX2.操作系统需求内存要求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来负责将所需的数据同步到远端,而不是用已有的业务用户这个用户需要哪些权限呢?Createusergoldengateidentifiedbygoldengatedefaulttablespaceuserstemporarytablespacetempquotaunlimitedonusers;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.2SID:ORCL1.安装goldengate软件在oracle官方网站上下载goldengate对应平台的安装程序进入到GoldenGate的安装目录.运行GGSCIInGGSCI,issuethefollowingcommandtocreatetheGoldenGateworkingdirectories.CREATESUBDIRSIssuethefollowingcommandtoexitGGSCI.EXIT2.数据复制初始化GoldenGate中支持的dataload方法有LoadingdatawithadatabaseutilityLoadingdatafromfiletoReplicatLoadingdatafromfiletodatabaseutilityLoadingdatawithaGoldenGatedirectloadLoadingdatawithadirectbulkloadtoSQL*LoaderLoadingtableswithTeradatatablecopyLoadingdatawithTeradataloadutilities注*这点我没怎么研究,我采用的rman异地恢复3.配置进程第一步:在源数据库和目标数据库分别配置管理进程mgrGGSCIeditparamsmgrport7809(保存退出)GGSCIstartmgrManagerstarted.GGSCIinfoallProgramStatusGroupLagimeSinceChkptMANAGERRUNNING(可以正常启动)第二步:源数据库增加两个进程*.一般源数据库需要应配置两个进程,一个负责抽取数据(ZLE_01),另一个负责投递数据(ZLE_02),默认只支持DML,如果要支持DDL需要执行一些单独的配置。在源数据库系统中执行如下命令增加一个Extractgroup,详细的ADDEXTRACT语法参见官方手册说明或GGSCI的onlinehelp.GGSCIaddextractgroupname,TRANLOG,BEGINNOW,THREADSthreadnumber其中groupname表示这个Extractgroup的名字TRANLOG表示使用事务日志的方式BEGINNOW表示从现在开始,你也可以指定一个具体的开始时间THREADS表示从哪个instance上运行,只对RAC环境有用,单机环境比需要指定该Option2.1配置抽取进程我这里是单机环境,extractgroupname定义为zle_01GGSCIDBLOGINUSERIDgoldengate@orcl1,PASSWORDgoldengateGGSCIaddextractZLE_01,tranlog,beginnowEXTRACTadded.GGSCIaddRMTTRAIL./dirdat/ra,extractzle_01,megabytes50查看一下刚才定义的这个extractprocess的结果GGSCIinfoextractzle_01EXTRACTZLE_01Initialized2010-01-1911:50StatusSTOPPEDCheckpointLag00:00:00(updated00:00:22ago)LogReadCheckpointOracleRedoLogs2010-01-1911:50:39Seqno0,RBA0补充一个命令:infoextractzle_01,showch看的更详细为该抽取Extract进程配置参数文件,在源数据库执行如下命令GGSCIeditparamzle_01增加如下内容EXTRACTZLE_01SETENV(ORACLE_SID=ORCL)USERIDgoldengate@ORCL1,PASSWORDgoldengateRMTHOST192.168.8.1,MGRPORT9001RMTTRAIL./dirdat/raTABLEZLHIS.TEST;RMTTRAIL告诉extractprocess需要将trail文件写到哪里TABLE部分说明我这个Extract进程只处理ZLHIS用户下的TEST表好了,到这里就可以启动上面定义的Capture进程了,执行如下命令GGSCIstartextractzle_01SendingSTARTrequesttoMANAGER('mgr')...EXTRACTZLE_01startingGGSCIVerifytheresults:GGSCIinfoEXTRACTZLE_01,DETAILGGSCIviewREPORTZLE_01GGSCIinfoextractZLE_01好了,到这里就完成了一个最简单的抽取Extractprocess的配置并启动,下面来配置投递Extractprocess进程。2.2配置投递进程在Source系统执行如下命令GGSCIADDEXTRACTZLE_02,EXTTRAILSOURCE./dirdat/ra,BEGINnowGGSCIADDRMTTRAIL./dirdat/la,EXTRACTZLE_02*(./dirdat/la为远端接收目录,必须存在)GGSCIeditparamszle_02添加内容如下:extractZLE_02dynamicresolutionPASSTHRUrmthost192.168.8.2,mgrport9001,compressrmttrail./dirdat/lanumfiles3000TABLEZLHIS.TEST;GGSCIstartextractzle_02SendingSTARTrequesttoMANAGER('mgr')...EXTRACTZLE_02starting查看下状态:GGSCIinfoallProgramStatusGroupLagTimeSinceChkptMANAGERRUNNINGEXTRACTRUNNINGZLE_0100:00:0000:00:05EXTRACTRUNNINGZLE_0200:00:0000:00:072.3配置接收进程在目标系统(Targetsystem)上执行如下命令增加一个复制组(ReplicatGroup)GGSCIDBLOGINUSERIDgoldengate@orcl2,PASSWORDgoldengateGGSCIaddreplicatZLR_01,EXTTRAIL./dirdat/la,nodbcheckpoint注,我这个中配置Extractprocess那个示例对应的,所以这里的exttrail文件名正好是Extractprocess中定义的RMTTRAIL./dirdat/la这点需要大家注意.GGSCIeditparamZLR_01增加如下内容并保存退出REPLICATZLR_01SETENV(ORACLE_SID=ORCL)USERIDgoldengate@ORCL2,PASSWORDgoldengateHANDLECOLLISIONSASSUMETARGETDEFSallownoopupdatesdynamicresolutionnumfiles3000DISCARDFILE./dirrpt/ZLR_01.DSC,append,megabytes10mapZLHIS.TEST,targetZLHIS.TES