版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
...wd......wd......wd...GoldenGate安装部署及解决方案目录GoldenGate安装部署及解决方案11、GoldenGate简介32、文档约定和说明53、GoldenGate软件安装63.1GoldenGate软件安装包下载63.2Windows下安装73.3Linux和Unix下安装84、GoldenGate同步根本配置94.1oracle之间同步和GoldenGate根基94.2oracle与db2同步174.3oracle与sybase同步185、GoldenGate同步方案195.1使用GoldenGate初始化加载195.2一对多数据同步〔播送复制〕215.3多对一数据同步〔集中复制〕225.4数据转换和过滤235.5关于目标端高数据安全性下的GoldenGate配置方案275.6GoldenGate双向复制〔active-active〕306、GoldenGate数据同步性能测试336.1测试中主要监测数据和监测方式336.2测试脚本和GoldenGate配置346.3测试步骤386.4性能测试结果407、GoldenGate推荐配置427.1添加必要的环境参数427.2BATCHSQL参数427.3数据库用户密码加密437.4trail再压缩448、GoldenGateTroubleshooting458.1一些常用的进程信息和日志的查看方式458.2解析trail文件45附:GoldenGate新版本的一个特性46参考文档481、GoldenGate简介GoldenGate软件是一种基于日志的构造化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库实时同步〔real-timedatasynchronize〕、双活〔active-activehighavailability〕。GoldenGate软件可以在异构的IT根基构造〔包括几乎所有常用操作系统平台和数据库平台〕之间实现大量数据亚秒一级的实时复制,其复制过程简图如下:如上图所示,GoldenGate的数据复制过程如下:利用捕捉进程(CaptureProcess)在源系统端读取OnlineRedoLog或ArchiveLog,然后进展解析,只提取其中数据的变化如增、删、改操作,并将相关信息转换为GoldenGate自定义的中间格式存放在队列文件〔trail〕中。再利用传送进程将队列文件通过TCP/IP传送到目标系统。捕捉进程在每次读完log中的数据变化并在数据传送到目标系统后,会写检查点〔checkpoint〕,记录当前完成捕捉的log位置,检查点的存在可以使捕捉进程在中止并恢复后可从检查点位置继续复制;目标系统承受数据变化并缓存到GoldenGate队列当中,队列为一系列临时存储数据变化的文件,等待投递进程读取数据;GoldenGate投递进程从队列中读取数据变化并创立对应的SQL语句,通过数据库的本地接口执行,提交到数据库成功后更新自己的检查点,记录已经完成复制的位置,数据的复制过程最终完成。由此可见,GoldenGate是一种基于软件的数据复制方式,它从数据库的日志解析数据的变化〔数据量只有日志的四分之一左右〕。GoldenGate将数据变化转化为自己的格式,直接通过TCP/IP网络传输,无需依赖于数据库自身的传递方式,而且可以通过高达9:1的压缩率对数据进展压缩,可以大大降低带宽需求。在目标端,GoldenGate可以通过交易重组、分批加载等技术手段大大加快数据投递的速度和效率,降低目标系统的资源占用,可以在亚秒级实现大量数据的复制,并且目标端数据库是活动的GoldenGate提供了灵活的应用方案,基于其先进、灵活的技术架构可以根据用户需求组成各种拓扑构造,如以下列图:GoldenGate可以提供可靠的数据复制,主要表达在下面三点:〔1〕保证事务一致性GoldenGate在灾备数据库应用复制数据库交易的顺序与在生产中心数据库上的顺序一样,并且按照一样的事务环境提交,确保在目标系统上数据的完整性和读一致性,为实时查询和事务处理创造了条件。〔2〕检查点机制保障数据无丧失GoldenGate的抽取和复制进程使用检查点机制记录完成复制的位置。对于抽取进程,其检查点记录当前已经抽取日志的位置和写队列文件的位置;对于投递进程,其检查点记录当前读取队列文件的位置。检查点机制可以保证在系统、网络或GoldenGate进程故障重启后数据无丧失。〔3〕可靠的数据传输机制GoldenGate用应答机制传输交易数据,只有在得到确认消息后才认为数据传输完成,否则将自动重新传输数据,从而保证了抽取出的所有数据都能发送到备份端。数据传输过程中支持128位加密和数据压缩功能。Oracle公司的GoldenGate产品,可以在异构的IT根基构造之间实现大量数据的秒一级的数据捕捉、转换和投递。目前最新版本为V.0。GoldenGate可以支持几乎所有常用操作系统如和数据库平台,如下表所示:操作系统数据库MSNT,2000,XP,Linux,SunSolaris,HP-UX,IBMAIX,HPNonStop,TRU64,IBMz/OS,OS/390Oracle,DB2,MSSQLServer,MySQL,Enscribe,SQL/MP,SQL/MX,Sybase,Teradata,其他ODBC兼容数据库2、文档约定和说明为统一表示命令和便于查看,对格式作如下约定:GG_HOME>表示从操作系统命令行〔cmd〕进入GoldenGate安装路径下执行命令。GGSCI>表示在GoldenGate命令环境中执行命令。SQL>表示在数据库下执行SQL语句/******/表示配置文件内容,/***不包含在内。<>表示自定义参数,如自定义表名<tablename>以下例如中假设无特殊说明,GoldenGate使用的版本主要为11.1,局部使用10.4版本,除局部新特性,两者根本无差异;GoldenGate命令行中的操作均是在mgr主进程running时进展,当然,GoldenGate安装局部除外。补充说明:该文档主要介绍GoldenGate根本使用、GoldenGate的各类解决方案,以及以往本人在使用测试中总结的经历,文中的例子和执行的命令都是参照官方文档并亲自测试执行过。但因个人能力所限,错漏之处再所难免,文档中也不可能覆盖GoldenGate的方方面面。而且,因为GoldenGate本身提供了大量的参数,也不可能在这里一一列举,本文档中只举例了常用的一些参数命令,关于各个参数的具体使用语法和作用,还请参照官方文档《OracleGoldeGateReferenceGuide》。3、GoldenGate软件安装 在不同的操作系统和平台上安装GoldenGate,需要在官网下载对应的版本。32位系统和64位系统的安装介质虽然不同,但是在同一OS上安装方式是一样的。 GoldenGate需要解析数据库的日志文件,所以安装位置必须要能访问到日志文件〔在线日志和归档文件〕,并具有相应的权限。3.1GoldenGate软件安装包下载经常有人问我GoldenGate的下载地址,所以在这里专门说明一下。 GoldenGate软件的官方下载地址:://edelivery.oracle/目前只有这个地址能下到对应32位操作系统的安装介质。 首页如下:网页开头点击这个Continue进入下载。首次进入需要登记一些个人信息,如名字、公司等,然后下方选择同意协议之类的,点Continue进入搜索。搜索时如下选择:点GO,然后选择对应版本的OracleGoldenGate下载。GoldenGate安装包一般只有几十兆的大小,下载还是很快的。GoldenGate除了同步软件这块,还有其他相关的产品,比方OracleGoldenGateDirector,用于集中图形化管理和监控;OracleGoldenGateVeridata,用于两端同步数据质量检验。在本文档中暂不介绍。3.2Windows下安装〔1〕安装MicrosoftVisualC++2005SP1Windows操作系统需要首先下载安装MicrosoftVisualC++2005SP1发行包〔注意该软件也分32位和64位〕。〔2〕绿色安装GoldenGate下载对应平台版本的GoldenGate安装包,解压。然后进入操作系统命令行〔cmd〕,进入GoldenGate解压路径下,执行:GG_HOME>ggsci--进入GoldenGate命令窗口模式GGSCI>CREATESUBDIRS--建设子目录GGSCI>editparammgr--配置GoldenGate主进程参数由于第一次执行该命令,会提示创立mgr参数文件,点“是〞并在文本中输入如下参数:/***PORT7801--GoldenGate主进程端口号DYNAMICPORTLIST7802-7820--GoldenGate为进程间通讯动态分配的端口段,注意这里如果分配的端口端少于extract-replicat进程对的话,会导致局部进程因通讯失败而出错。***/保存,生成的参数文件保存在GG_HOME\dirprm下然后可以启动GoldenGate主控制进程:GGSCI>startmgrGGSCI>infoall--查看进程状态如果进程MANAGER状态显示为RUNNING则表示主进程已在运行。至此软件安装完成。〔3〕管理GoldenGate服务在WINDOWS下还可以将GoldenGate主进程作为系统服务进展管理,如下配置:GGSCI>editparam./globals--配置全局参数,注意前面的./说明与其他参数文件位置不同,该参数文件是直接位于GoldenGate安装路径下的输入:/***MGRSERVNAME<name>--GoldenGate主进程端口号,<name>为自定义的系统服务名***/然后退出GGSCI命令行:GGSCI>exitGG_HOME>installaddserviceaddevents--创立服务,完成后可以直接进服务进展管理WINDOWS删除GoldenGate服务:GG_HOME>installdeleteeventsdeleteservice--对应删除服务操作或者在注册表删除:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services一般服务会以一样的名字在这里显示一个主健,直接删除相关的键值便可3.3Linux和Unix下安装〔1〕检查必需的lib包 下载对应平台版本的GoldenGate,解压。在解压路径下执行: [root@GG_HOME]>#lddggsci 将列出所有需要的lib和当前缺少的。GoldenGate在Linux和Unix下安装,需要安装ORACLE的lib环境以及$ORACLE_HOME/lib下的几个包,所以必须安装在Oracle之后,而且确保在环境变量中参加:exportLD_LIBRARY_PATH=$ORACLE_HOME/lib〔2〕绿色安装GoldenGate 在解压路径下执行./ggsci进展接口命令行,[root@GG_HOME]>#./ggsci--进入GoldenGate命令窗口模式GGSCI>CREATESUBDIRS--建设子目录GGSCI>editparammgr--配置GoldenGate主进程参数由于第一次执行该命令,会提示创立mgr参数文件,点“是〞并在文本中输入如下参数:/***PORT7801--GoldenGate主进程端口号DYNAMICPORTLIST7802-7820--GoldenGate为进程间通讯动态分配的端口段,注意这里如果分配的端口端少于extract-replicat进程对的话,会导致局部进程因通讯失败而出错。***/保存,生成的参数文件保存在GG_HOME\dirprm下然后可以启动GoldenGate主控制进程:GGSCI>startmgrGGSCI>infoall--查看进程状态如果进程MANAGER状态显示为RUNNING则表示主进程已在运行。至此软件安装完成。和Windows下安装的主要区别是需要确认必需的lib包,进入GGSCI接口命令行后的操作都是一致的。4、GoldenGate同步根本配置GoldenGate支持目前大局部主流数据库,这也是它的优势之一。下面列举了Oracle、Db2、Sybase之间的同步。同步测试的准备工作中,有一局部是共通的,如下:在源端和目标端建设一样构造的两个表,建设主键。保证复制的对象在一开场是一致的。保证没有相关对象的触发器〔会导致数据冲突的那些〕或设置失效。数据库需要开启必须的日志模式。不同数据库的配置差异主要在这一步。源端和目标端都需要安装相应版本的GoldenGate软件,并分配一个有DBA权限的数据库用户给GoldenGate用以连接数据库。备注:分配给GoldenGate的用户一般情况下并不需要完全的DBA权限,在官方文档上有详细的权限需求说明,但是完全按照那个配置比拟繁琐。额外的,如果数据库使用ASM时,需要sysdba权限。4.1oracle之间同步和GoldenGate根基4.1.1Oracle数据库设置首先安装好ORACLE,设置好ORACLE_SID,ORACLE_HOME等环境变量。当然,推荐的做法是在每个进程配置文件里都加上指定的环境变量参数,在后面优化配置中进展说明。Oracle数据库需要开启归档日志,并开启最小附加日志模式。SQL>selectsupplemental_log_data_minfromv$database;--查看是否开启了最小附加日志模式SQL>alterdatabaseaddsupplementallogdata;--开启最小附加日志模式实际生产应用中,最好同时翻开ORACLE的强制日志模式,以防止源数据库因直接路径加载忽略redo生成而导致这局部数据无法同步:SQL>selectforce_loggingfromv$database;SQL>Alterdatabaseforcelogging;光开启最小附加日志模式还不够,还需要翻开表级的补全日志,可以在GoldenGate中使用addtrandata命令强制重做日志记录主键值,以保证在目标端能成功复制:GGSCI>dbloginuseridddw,passwordddw--GoldenGate中登录OARCLE数据库GGSCI>addtrandataddw.<tablename>--表名可以使用通配符GGSCI>addtrandatacoss3.per_test,nokey,cols(sampletime,objectid)--无主键指定字段补全的例如也可以在数据库中翻开:SQL>altertable<tablename>addsupplementallogdata(primarykey)columns;千万不要小看这步日志设置,其实在GoldenGate的配置中,这步是最容易出错的环节。如果开启DDL复制做冗灾备份,最好直接在数据库级别翻开补全日志:SQL>alterdatabaseaddsupplementallogdata(primarykey,unique,foreignkey)columns;检查一下,全是YES就OK了〔整个数据库级别补全〕SQL>selectsupplemental_log_data_min,supplemental_log_data_pk,supplemental_log_data_uifromv$database;4.1.2关于Oracle补全日志补充说明Oracle日志〔redolog〕一般用于实例恢复和介质恢复,但是如果需要靠日志复原完整的DML操作信息〔比方Logmnr、Streams和这里的Goldengate〕,默认记录的日志量还不够。比方一个UPDATE的操作,默认redo只记录了rowid以及被修改的字段信息,但这里GoldenGate复原这个事务,因为不是根据rowid而是SQL层面根据唯一键值来定位记录,所以还需要将主键或者其他字段的信息附加到日志中去。要往日志中增加这些额外字段信息的操作,就是开启补全日志,即AddSupplementalLogging。翻开补全日志,会使数据库的日志量增加,所以只翻开需要的级别和对象即可。Oracle补全日志可以在数据库级别设置,也可以在表级别设置。在数据库级别中,补全日志按补全的信息量,对应好几个级别:最小附加日志〔Minimalsupplementallogging〕:是开启logmnr的最低日志要求,提供了行链接〔chainedrows〕和多种数据存储〔比方聚簇表、索引组织表〕的信息。在Oracle9.2之后的版本中,默认都不开启。主键补全〔Primarykeysupplementallogging〕:在日志中补全所有主键列。如果表中无主键,则补全一个非空唯一索引列;如果非空唯一索引键也没,那么会补全除了LOB和LONG类型字段以外的所有列,这时就和下面的所有补全一样了。唯一键补全〔Uniquekeysupplementallogging〕:当唯一键列或位图索引列被修改时,在日志中补全所有唯一键列或位图索引列。翻开唯一键补全也会同时翻开主键补全。注意这个级别是需要条件触发的。外键补全〔ForeignKeysupplementallogging〕:当外键列被修改时,将在日志中补全所有外键列。这个级别也是需要条件触发的。所有补全〔Allsupplementallogging〕:在日志中补全所有字段〔排除LOB和LONG类型〕。这里对于补全日志的详细操作语句不做一一说明。数据库级别中的5个类型中,除了最小附加日志级别,都可以在表级进展设置。除此之外,表级还可以明确指定需要补全的列。Oracle表级补全日志需要在最小补全日志翻开的情况下才起作用,即假设一个数据库没有开最小补全日志或之前dropsupplementallogdata操作则即便指定了表级补全日志,实际在重做日志输出的过程中描述的记录仍只记录rowid和相关列值。而要关闭最小补全日志,也必须首先关闭数据库级别的其他补全级别后,才能关闭。 所以在GoldenGate中,对于Oracle数据库的日志补全要求,至少是翻开最小附加日志和主键补全。主键补全只要在需要同步的表上开启即可。当然GoldenGate的addtrandata语法中也可以指定补全的列,这和Oracle表级补全日志的功能完全一致。毕竟,日志还是由数据库生成的,GoldenGate并不能直接控制日志的生成方式和规则,只能根据所捕获的数据库的日志规则而来。不同的数据库,日志补全的规则也会不同。以上局部内容参考自《Oracle10gR2Utilities》SupplementalLogging局部4.1.3dml同步一对一的实时同步简单配置同步流程如图:〔1〕源数据库端添加提取进程〔extractprocess〕GGSCI>addextractextl,tranlog,beginnow--新增抽取进程extl,基于日志方式,立即生效需要注意的是,GoldenGate中的进程名最长只能8个字符。注意,如果是在RAC环境下,需要再加上THREADS<n>指定提取的日志THREADGGSCI>addextractextl,tranlog,beginnow,THREADS<n>GGSCI>editparamextl--生成并编辑同名配置文件/***extractextl--抽取进程名useridddw@orcl,passwordddw--连接本机DB的帐号密码rmthost4,mgrport7801--目标数据库服务器地址和GG服务端口号rmttraild:\tools\GG\gg10g\dirdat\rl--远程队列的位置〔下一步建的东西〕dynamicresolution--优化参数,动态分析表构造gettruncates--抓取truncate数据tableddw.aatest;--需要抽取的表,可以使用通配符***/然后给这个提取进程创立远端队列,即图中的RMTTRAIL:GGSCI>addrmttraild:\tools\GG\gg10g\dirdat\rlextractextl需要注意的是,这里最后的名称rl〔可以自定义,字母或数字〕是指以后生成的trail文件都会以rl开头,如rl000001,这个文件头名称最长只能2个字符。如果需要在文件级别区分队列,建议将队列创立于于不同的目录下。开启这个提取进程:GGSCI>startextlGGSCI>infoall--查看所有进程状态此时extl进程running则表示已成功运行,这时开场会在前面指定的目标端队列位置生成trail文件。如果进程出错,可以使用viewreportextl查看错误信息。〔2〕目标数据库端添加复制应用进程〔replicatprocess〕在目标端GoldenGate命令行中配置复制进程:GGSCI>addreplicatreplexttraild:\tools\GG\gg10g\dirdat\rl,beginnow,nodbcheckpoint–新增复制进程,使用对应的队列rl,即刻开场,使用文件检查点GGSCI>editparamrepl--配置复制进程参数/***replicatrepl--复制进程名useridddw@orcl,passwordddw--目标数据库的帐号密码assumetargetdefs--两台数据库数据构造一致则使用此参数reperrordefault,discard--如果复制数据出错则忽略discardfileD:\repsz.dsc,append,megabytes100--错误信息写入XXXX文件,追加模式,最大100mgettruncates--复制truncate操作mapddw.aatest,targetddw.aatest_1;--映射关系,注意target前必须留一个空格--mapddw.aatest,targetddw.aatest_1,keycols(name),where(TYPE1="1")--加两横杠在配置文件中进展注释;keycols指定唯一键;where筛选数据***/开启复制进程:GGSCI>startrepl至此,一个最简单的同步配置完成,对于源数据库相应表的insert,update,delete和truncate操作都将通过日志捕获并同步到目标数据库。使用datapump参加datapump后的数据传输的流程:这里的datapump与ORACLE10g推出的数据泵不是一个概念。在GoldenGate中,datapump相当于一个次级提取进程〔secondaryextract〕。在上面演示的同步流程中,提取进程直接将提取的redo信息经过处理后放置到了目标端服务器上,当两者之间的网络出现故障时,会因无法生成trail文件而导致提取进程崩溃,错误提示类似如下:2010-11-1210:01:21GGSERROR150TCP/IPerror10061(由于目标机器积极拒绝,无法连接。);retriesexceeded.2010-11-1210:01:21GGSERROR190PROCESSABENDING.而参加datapump后,主提取进程〔即第一个extract〕首先将trail生成在本地,然后datapump读取本地trail再发送到目标服务器,即便网络故障,主提取进程仍然能随着事务生成trail文件,而datapump则会暂时停顿传输,等待网络通畅后在将堆积的本地trail文件发送至目标服务器,从而实现了断点传输的功能。在实际应用中,每一个同步流程都应该配置datapump以应对网络问题。参加datapump的配置:将前面extl参数文件中的/***rmthost4,mgrport7801rmttraild:\tools\GG\gg10g\dirdat\rl***/替换为/***exttraild:\tools\GG\gg10g\dirdat\l1--本地队列文件生成位置***/配置datapump进程:GGSCI>ADDEXTRACTpump1,EXTTRAILSOURCE<local_trail>,BEGIN<time>--<local_trail>即是对应extl配置文件中定义的d:\tools\GG\gg10g\dirdat\l1GGSCI>editparampump1/***extractpump1useridddw,passwordddwrmthost4,mgrport7801rmttraild:\tools\GG\gg10g\dirdat\r1PASSTHRU|NOPASSTHRU--直通模式或普通模式gettruncatestableddw.bbtest;***/直通模式用在两边表名、列名一致,可以直接映射的情况,不需要额外配置;普通模式可以配置表名列名自定义映射,可以加FILTER、transformation等,需要配置一个数据定义文件〔data-definitionsfile〕。然后修改原先为提取进程配置远端队列位置:GGSCI>deletermttraild:\tools\GG\gg10g\dirdat\rlextractextlGGSCI>addrmttraild:\tools\GG\gg10g\dirdat\rlextractpump1然后启动extl和pump进程就OK了。使用数据定义文件GoldenGate数据定义文件〔data-definitionsfile〕,主要用于不同数据源之间〔比方下面的Oracle与DB2之间的同步〕,进展数据同步时用来转换数据格式。数据定义文件主要包含表名、字段名、字段类型、字段长度和偏移量。利用GoldenGate的defgen工具生成一个数据定义文件〔data-definitionsfile〕,大致步骤如下:〔1〕创立DEFGEN工具的参数文件〔2〕运行DEFGEN工具生成数据定义文件〔3〕配置GG进程识别定义文件例子:GGSCI>editparamdefgen--创立DEFGEN工具的参数文件/***DEFSFILE<full_pathname>--指定由DEFGEN生成的数据定义文件的全路径和名称[{SOURCEDB|TARGETDB}<dsn>,]--oracle不需要配置这个参数[USERID<user>[,PASSWORD<password>]]--DB2不需要配置PASSWORDTABLE<owner>.<table>--分析指定表生成配置文件***/类似如下〔ORACLE〕:/***DEFSFILEGG_HOME\dirdef\extdb.refUSERIDddw,PASSWORDddwTABLEddw.aatest;***/然后退出GGSCI,在GG安装路径下运行DEFGEN工具:GG_HOME>defgenparamfiledirprm/defgen.prm配置文件默认生成在GG_HOME\dirdef下,不要去手动修改。如果对应表的表构造发生更改,需要重新生成这个配置文件。然后将生成的配置文件拷贝至目标服务器的GG_HOME\dirdef下。修改复制进程repl参数文件:GGSCI>editparamrepl将原先的assumetargetdefs参数替换为sourcedefsGG_HOME\dirdef\extdb.refGGSCI>stopreplGGSCI>startrepl数据定义文件的配置完成。配置进程检查点〔checkpoint〕检查点记录了进程读写的位置信息用以数据恢复,目的是为了防止进程因系统、网络崩溃而导致的数据丧失,对于GoldenGate保证数据同步过程中数据不丧失非常重要。GoldenGate的检查点由一个内部进程自动控制,与数据库检查点的概念类似。提取进程的检查点记录它在数据源中的读取位置和队列的写出位置,复制进程的检查点记录它读取队列的位置。每条提取或复制进程都有自己对应的检查点信息。当GoldenGate的进程重启时,由它所记录的检查点决定需要读取的队列位置。GoldenGate的检查点信息有两种存放方式:〔1〕默认存放在GGHOME\dirchk下的文件中,一个进程对应一个文件。提取进程只能使用这种模式。不需要特殊配置。〔2〕存放在数据库指定的表中,需要进展如下配置:首先在./globals参数文件中参加:/***CHECKPOINTTABLE[<owner>.<table>]--指定的检查点记录表***/然后运行:GGSCI>DBLOGIN[SOURCEDB<dsn>][,USERID<db_user>[,PASSWORD<pw>]]GGSCI>ADDCHECKPOINTTABLE[<owner>.<table>]--生成这个检查点记录表在新增复制进程时可以在添加时指定checkpointtable[<owner>.<table>]替代nodbcheckpoint,使用数据库记录检查点信息。ORACLE官方文档中,比拟推荐将复制进程的检查点信息存放到数据库表中进展管理,认为在某些情况下能促进数据恢复。并指出检查点信息量非常小,而且是进展记录更新而非记录插入,一个进程只对应一条记录,在它特殊的检查点处理机制下不会对数据库造成影响。个人猜测是当目标数据库崩溃复原后〔特别是在不完全恢复的情况下〕,检查点信息能同数据库一起复原,在数据上能利用数据库事务性与数据库保持一致,从而在数据库正常翻开后能继续进展数据同步。但实际上并不必要,因为数据库故障的情况多种多样,就算检查点同步恢复后,也不能保证直接就能启动GoldenGate进程。4.1.3ddl同步GoldenGate的DDL同步只支持两边一致的数据库,限制条件较多〔如不能进展字段映射、转换等〕,具体可以参考官方文档。DDL的抓取不是通过日志抓取来捕获的,而是通过触发器来实现,所以对源数据库的性能影响要比单纯的数据抓取要大很多,可谓屏弃了GoldenGate的优势。尽量不要使用GoldenGate的DDL复制功能,在大多数业务系统中,实际上不会有频繁的数据库构造变动,完全可以通过手工的方式进展维护。确实有大量DDL操作的环境,如果可以,还是推荐物理DG之类的替换方案;确实要使用GoldenGate的DDL复制,那么请详细参考官方文档的限制和说明。--以上主要为个人意见,有不同看法的请无视开启DDL复制的根本配置步骤为:〔1〕关闭ORACLE的回收站功能。〔2〕选择一个数据库schema存放支持DDL的GoldenGate对象,运行相应创立脚本。〔3〕编辑globals参数文件。〔4〕修改extl和repl的配置文件具体操作步骤:〔1〕关闭数据库回收站:SQL>altersystemsetrecyclebin=offscope=both;〔2〕编辑globals参数文件:GGSCI>editparam./globals添加以下内容后保存:GGSCHEMAddw--标明支持DDL的GG对象存放在哪个schema下〔3〕执行创立脚本:首先需要命令行进入GG安装目录下,然后再运行sqlplus执行脚本,如果不进入目录下脚本执行会报错〔应该是由于GG脚本中子脚本嵌套使用相对路径的问题所造成〕。SQL>@marker_setup.sql--提示输入目标schemaSQL>@ddl_setup.sql--提示输入目标schema,输入initialsetup最后输入yesSQL>@role_setup.sqlSQL>grantGGS_GGSUSER_ROLEtoddw;--不进展该步赋权后面起进程会报错SQL>@ddl_enable.sql--使触发器生效〔4〕修改提取进程和复制进程的配置文件,分别参加ddlincludeall属性。此时repl必须指定assumetargetdefs属性,这说明只有两边数据库构造一致的情况下才可以启用DDL复制。另外,开启DDL同步不能再只映射单表了,对整个模式下的对象都有效。参加DDL复制之后,数据复制的lag明显增加了。去除数据库中DDL复制的设置在实际测试中,由于我在同一个数据库中进展映射,映射表构造不一致,导致进程报了一系列的错误。这个时候需要把通过脚本创立的GG对象中的数据清空,安装目录下只提供了去除对象的脚本,可以如下操作:首先要求把所有的GG进程停掉,包括mgr进程SQL>@ddl_disable.sql--首先使DDL触发器失效SQL>@ddl_remove.sqlSQL>@marker_remove.sqlrole_setup.sql没有对应的去除脚本,但是这块不影响配置信息的去除然后重新再创立脚本。4.2oracle与db2同步设置DB2数据库参数:db2connectto<database>user<username>using<password>--DB2命令行工具登陆DB2db2getdbcfgfor<databasename>--查看数据库参数配置db2updatedbcfgfor<databasename>usingLOGRETAINON--设置LOGRETAIN参数db2updatedbcfgfor<databasename>usingUSEREXITON--设置USEREXIT参数设置完后的参数配置相关显示如下:Logretainforrecoverystatus=RECOVERYUserexitforloggingstatus=YES重启数据库并进展全库备份:db2stopforcedb2startdb2backupdb<database>指定归档路径:〔OVERFLOWLOGPATH参数〕db2connectto<database>user<username>using<password>db2updatedbcfgusingoverflowlogpath"<path>"GoldenGate中执行addtrandata补全日志:GGSCI>dbloginsourcedbsampleuseriddb2admin,passworddb2admin--除oracle外的数据库都需要指定sourcedb参数,指定数据库名称GGSCI>addtrandatadb2admin.<tablename>其他的同步配置与Oracle中一样,需要注意的是进程配置文件中登陆DB2的局部都需要指定sourcedb这个参数〔ORACLE不需要,指定了反而报错〕。还有就是复制进程的配置文件中一般不能指定assumetargetdefs参数,因为不是构造一致的数据库,需要通过defgen工具生成数据定义文件进展映射。4.3oracle与sybase同步Sybase数据库设置使用sybase的SQLAdvantage,用sa用户登录,执行dbccsettrunc('ltm',valid)修改参数。GoldenGate中连接SybaseGGSCI>dbloginsourcedbzhoubaseuseridsapasswordsasasa同样做如下设置GGSCI>addtrandata<user>.<tablename>其他配置和Oracle中一样。需要注意的是,Sybase是个区分大小写的数据库〔sqlserver同样〕。而Oracle不区分大小写,这就导致了表和字段在复制进程映射的时候,容易因大小写问题导致映射失败。解决方法是在表名外加上双引号或者单引号,参照如下复制进程的配置文件内容:/***replicatrepsysourcedefsd:\tools\GG\gg10g\dirdef\extsy.refUSERIDddw,PASSWORDddwreperrordefault,discarddiscardfileD:\repsy.dsc,append,megabytes100MAP“dbo.BBTEST〞,TARGET“DDW.AASYBASE〞;--引号区分大小写***/5、GoldenGate同步方案 GoldenGate工具虽小,但它提供表级字段级同步映射,而且同步性能优异、资源消耗低,使它的灵活性很强,可以提供多种数据同步、冗灾的解决方案。5.1使用GoldenGate初始化加载 这里所指的GoldenGate初始化加载,只是它指提供的directload方式,因为其他几种官方介绍的初始化方式要么需要借助其他数据库工具〔如extract->SQL*Loader〕,要么中间走了完全没必要的步骤导致性能很差〔如extract->file->replicat方式〕,都不算纯粹的GoldenGate方式。初始化加载架构:上图中,显示了初始化加载启用了两条同步路线:上面一条是真正的initialload,负责将源数据端的数据一次性发送到目标数据库;下面一条,其实就是普通的GoldenGate同步进程,负责抓取初始化加载时源端数据库进展的在线数据变化。因为在实际应用中,往往需要在生产库〔源数据库〕不停机的状态下,将数据加载到备用数据库〔目标数据库〕中并应用实时同步,在数据初始化的过程中,生产库将继续进展正常的事务操作,所以此时需要有抓取进程在初始化时开场将这些变化捕获,以免数据丧失。实际部署时需要注意正确的执行顺序,大致可以分为以下几步:源端和目标端创立配置各个同步进程。开启源端同步抓取进程〔图上的ChangeExtract〕,开场捕获变化。开启初始化进程〔图上的Initial-LoadExtract〕,开场数据初始化加载。等初始化加载完毕,开启目标端复制应用进程〔图上的ChangeReplicat〕,开场实时同步应用。在目标端复制应用进程〔图上的ChangeReplicat〕中,需要在参数文件中配置HANDLECOLLISIONS参数,以防止重复应用第2和第3步之间的数据变化,因为这局部数据已经包含在初始化加载中传到目标数据库中了。在这里需要特别提醒的一个概念上的问题,GoldenGate的初始化同步不会也不需要去初始化目标端的SCN号。这个问题在我与多位数据库DBA的交流中发现,他们往往以为GoldenGate是通过SCN来判断数据的应用情况的。GoldenGate的同步与Streams不同,它不需要依赖两端数据库保持一致的SCN来应用同步,实际上它只在抓取时可能会与数据库的SCN有关联〔抓取时可以指定源数据库的特定SCN号开场解析日志〕,在trail传输以及目标端应用时,都和源端数据库的SCN毫无关系。它的实质是通过自己的一套队列文件检查点机制来实现队列数据的管理,在目标端则通过数据的唯一键来定位数据行,trail文件最终解析成SQL语句在目标端数据库执行而实现数据的应用。所以这里的初始化加载,完全可以使用其他数据库工具来实现,比方说exp/imp、SQL*Loader、RMAN复制数据库等。 以下为一个简单的初始化加载的例子,对于实时同步配置同上面介绍的是一样的,这里不再说明,只列出初始化加载局部的进程配置。5.1.1GoldenGate初始化加载例如〔directload方式〕源端添加提取进程:GGSCI>addextractext1,sourceistable--没有tranlog,意味着不是通过日志方式;没有beginXXX,表示还未启动;使用sourceistable参数不会使用检查点机制配置文件如下:/***extractext1useridddw,passwordddwrmthost4,mgrport7401rmttaskreplicat,grouprept1--注意是rmttask,指定目标复制进程名tableddw.test;***/不需要为该进程添加远端队列〔rmttrail〕。目标端添加复制应用进程:addreplicatrept1,specialrun--表示一次性加载/***replicatrept1assumetargetdefsuseridddw,passwordddwreperrordefault,discarddiscardfileD:\reptmy.dsc,append,megabytes100INSERTAPPEND--使用直接路径加载,提高加载速度HANDLECOLLISIONS--当目标端已有数据时,略过重复数据错误MAPddw.test,TARGETddw.test1;***/注意,这里的extract和replicat进程添加完后在infoall中看不到这个进程,但是viewreport可以跟踪到。要开场加载,在源端执行:GGSCI>startexttmy目标端的replicat进程不需要去启动,会自动进展数据应用。5.1.2与Oracle数据泵数据加载速度的比拟 按照5.6.1例如中的配置,对一张600万行数据的测试表进展初始化加载,完全加载完毕大约需要50分钟。 使用Oracle10g的数据泵工具对同样的表,通过DBLink的方式进展初始化加载:C:\>impdpddw/ddw@orcljob_name=zhouimptables=testCONTENT=DATA_ONLYnetwork_link="DB148.REGRESS.RDBMS.DEV.US.ORACLE"只需要1分半钟就导完了600万行数据。两者的执行效率差异太大了。 所以在一般情况下,尽量使用其他高效的数据库传输工具来完成初始化加载,而不要用GoldenGate提高的初始化功能。5.2一对多数据同步〔播送复制〕一对多数据同步实现架构:GoldenGate对于多对一的实现方式,就是对于同一个源建设多个提取进程同步进展,也就是说,对应不同的目标端,分别配置同步进程进展同步。配置过程与前面是一样的。这里的多个目标端,有可能对应不同的数据库,也有可能是同一个库中的不同对象。如果是同步到同一个库中的不同对象,除了分别配置同步进程以外,有时候也可以在一个进程中完成,比方,可以在复制端如此配置:/***REPLICATrep146e1USERIDcoss3,PASSWORDcoss3assumetargetdefsREPERRORdefault,discardDISCARDFILEd:\ggoracle\log\rep146e1.dsc,append,megabytes200HANDLECOLLISIONSMAPddw.test,TARGETddw.test1;MAPddw.test,TARGETddw.test2;--同一张表同时对应多个表MAPddw.test,TARGETddw.test3;***/当然,如果同步数据负载较大的情况下,还是建议在进程级别分开。5.3多对一数据同步〔集中复制〕多对一数据同步架构:多对一数据同步实现方式同一对多,也是将extract-replicat将进程拆分成多个。多对一同步需要注意的是,所有源端和目标端的表都应该使用一致的主键约束,而且在不同的源端不应该对同一键值的数据进展维护。也就是说,需要在业务上将不同源的数据隔离开来,以防止对同一数据的覆盖更改等问题。一般用于维护业务的区域性数据、然后统一同步到业务中心数据源的业务场景。 还有一个需要注意的方面是TRUCATE的捕获,在多对一的配置下应防止捕获。因为GoldenGate处理TRUNCATE同步是直接传输了这个语句,并不会提供具体删除的数据信息〔没有REDO也无法提供〕,所以无论哪个源端执行了TRUNCATE,如果同步到了目标端,都会直接把目标端的表数据直接删光,无论目标数据是否是来源于这个源,造成数据的不一致。5.4数据转换和过滤GlodenGate中支持字段映射、数据筛选转换,以及调用执行数据库脚本或者SQL语句等,在一定条件下,甚至可以实现实时ETL的功能。5.4.1字段映射GoldenGate中字段的映射一般配置在复制应用端的MAP参数中,字段映射要求两边尽量一致的字段的类型,当然也允许CHAR<->VARCHAR之类的转换。对于不同字段类型的映射,最好详细参考GoldenGate官方文档以得到足够的支持信息,并做好测试验证以防止数据丧失等。以下是字段映射的配置例子:例子1:/***MAPddw.a1test,targetddw.a2test,--target前一定要留个空格,否则会报错COLMAP(id=id,type1=type1,sell_date1=sell_date2);--字段映射配置***/例子2:/***MAPddw.a1test,targetddw.a2test,COLMAP(USEDEFAULTS,sell_date1=sell_date2);--USEDEFAULTS表示自动映射同名字段MAPddw.a3test,targetddw.a4test;--不同的表映射,不同的mapMAP“ddw.a5test〞,target“ddw.a6test〞;--在有些大小写敏感的数据源需要引号区分大小写***/例子3:/***MAPddw.a1test,targetddw.a2test,COLMAP(USEDEFAULTS,num=111,name="abc",now_date=@DATENOW());--字段指定固定值,注意字符值加引号,数字值不可加引号;@DATENOW()表示当前系统时间***/例子4:/***MAPddw.a1test,targetddw.a2test,COLMAP(USEDEFAULTS,transaction_date=@DATE(“YYYY-MM-DD〞,“YY〞,YEAR,“MM〞,MONTH,“DD〞,DAY),);--多个字符字段整合转换为目标端的一个时间字段***/在这里顺便插入一个很容易出错的表映射例子:/***mapddw.a*,targetddw.*;--通配符表示所有a开头的表进展映射,注意的是target后面的表名千万不能也写成ddw.a*,不然会被映射成目标端aa开头的表***/5.4.2字段和数据筛选 GoldenGate中字段的筛选一般都在TABLE参数中配置〔目标端是在MAP参数〕。一般推荐在源端extract进程配置文件中配置,这样可以有效得减小trail文件的大小,减小网络负载。以下是一些筛选配置例子〔只列出配置文件的TABLE参数局部〕。〔1〕字段筛选:/***tableddw.aatest,FETCHCOLS(id,name,type1,sell_date,value1);--说明只提取这些字段***/使用指定字段做主键:/***tableddw.aatest,KEYCOLS(client_taq,id);***/〔2〕数据过滤:使用WHERE条件:/***tableddw.aatest,where(type1="1"ANDtype2="2");--说明只提取表中type1=’1并type2=’2’的记录***/如下提取非NULL值:/***tableddw.aatest,where(value<>@NULL);***/使用FILTER参数:/***tableddw.aatest,FILTER((num1*num2)>1000);***/与WHERE条件不同的是,FILTER只能后面数字,字符型需要转换后才可以使用,如:/***tableddw.aatest,FILTER(@STRFIND(NAME,"JOE")>0).***/FILTER参数的优势是还可以指定只在某种DML操作下才过滤,比方:/***tableddw.aatest,FILTER((ONUPDATE,ONDELETE,(num1*num2)>1000);--只在UPDATE和DELETE操作时过滤num1*num2不大于1000的值***/5.4.3调用执行SQL或存储过程在GlodenGate指令库中有个SQLEXEC指令,可以用来调用执行数据库存储过程或者自定义的SQL语句,可以指定输入参数,输出参数可以作为字段与目标表映射。使用这个指令,可以实现将源表做简单连接〔tablejoin〕然后将连接后结果同步到目标表,到达简单的转换目的。在复制端配置如下〔以SQL为例,procedure是一样的,改成过程名即可〕:/***replicatrepjoinuseridddw,passwordddwsourcedefsd:\tools\GG\gg10g\dirdef\extjo.refreperrordefault,discarddiscardfileD:\repjoin.dsc,append,megabytes100gettruncatesmapddw.a1test,targetddw.a12test,sqlexec(idtestid,--自定义执行语句的唯一标识query"selectname,value1froma2testwherename_id=:id_param",--:id_param为输入参数params(id_param=NAME_ID)),--将输入参数指定为源表中某列 如果没有输入参数,则这局部改为NOPARAMScolmap(USEDEFAULTS,name=,value1=testid.value1);--新的字段映射,表示语句输出参数name***/上面的配置案例,实现了将ddw.a1test表中name_id字段通过字典表a2test转换为对应的真实name值,并增加了一个value字段,然后映射到ddw.a12test表中。ddw.a12test表中的记录实际就是前面ddw.a1test表和a2test表连接生成的记录。但是,这里存在一个问题:字典表a2test是在源数据库呢,还是在目标数据库显而易见,配置在复制进程的配置文件中,那条语句是在目标端数据库执行的〔如果执行procedure那么这个过程也必须建设在目标端〕,字典表a2test在目标端〔在我这个例子中〕。而且同步是由表ddw.a1test上的事务触发的,字典表a2test中的数据无论怎么改都不会引起这个数据同步。这种情况下,可以考虑将字典表a2test也进展同步,来解决这个问题。SQLEXEC指令也可以在提取进程中使用。如果有输出参数作为额外的映射列,这个时候需要将查询结果也一并传输过去。可以通过参数TOKENS进展传递,然后再在目标端映射。以下对TOKENS的使用进展说明。使用USERTOKENSAREA可以使用TOKENS参数,在提取端将自定义的数据放入trail中,传递到目标端,映射到目标端的表中。这里针对前面SQLEXEC提出的问题例如。提取端extract的TABLE配置:/***TABLEddw.test,sqlexec(idsqlid,query"selectnode_idcodeidfromic_sysnodewhererownum=1",NOPARAMS),TOKENS(TK_CODE=sqlid.codeid);--将提取端查询出的node_id字段值,标识为TK_CODE放入ddw.test表的trail文件中,一起传递***/目标端replicat的MAP配置:/***MAPddw.test,TARGETddw.testother,COLMAP(USEDEFAULTS,SITE_CODE=@TOKEN("TK_CODE"));--将TK_CODE值映射给目标字段***/5.4.4数据库DML操作过滤 数据库DML操作过滤,这里是指选择是否捕获INSERT、UPDATE、DELETE。在某些业务场景下,只需要捕获某一种特定的DML操作即可,比方业务数据库往数据仓库的数据同步,往往只需要捕获INSERT操作,而对于UPDATE、DELETE则不允许同步目标库。 默认下,INSERT、UPDATE、DELETE都是捕获的,可以分别在Extract进程的配置文件中参加IGNOREINSERTS、IGNOREUPDATES、IGNOREDELETES进展忽略。当然,在这种情况下,业务上需要做相应的限制。比方忽略DELETE操作时,源数据库应制止重复插入DELETE掉的键值。 参数使用例如〔表示只捕获INSERT〕: /***IGNOREUPDATESIGNOREDELETES ***/ TRUNCATE是一种特殊的删除操作,默认配置下GoldenGate不进展捕获,一般需要在Extract进程的配置文件中参加GETTRUNCATES来指定捕获。5.5关于目标端高数据安全性下的GoldenGate配置方案5.5.1配置方案因为GoldenGate的标准配置下,是通过源端抓取进程向目标端发送队列文件的方式传输数据的,但在实际应用中,会出现这么一个关于安全方面的问题:如果上级机器的安全策略不允许外网直接往里发送数据,如何进展数据同步配置 GoldenGate是有提供一个由目标端主动“申请〞源端进展数据传输的方式,以保证内外网不同安全域下的数据安全保障。解决方案的体系架构如下:主要是通过目标端一个额外的aliasExtract进程,实现由目标端〔可信任域〕主动请求、向源端〔未信任域〕提供数据传输的连接的过程。具体的驱动模式如下〔翻译自官方文档,可能表述得不准确〕:启动可信任域的aliasExtract进程可信任域的GGSCI向未信任域mgr主进程发送消息,以启动相应的passiveExtract进程。消息包含可信任域的主机名或IP,以及一个可信任域mgr主进程的端口号。未信任域承受消息后,启动passiveExtract进程,并翻开一个可用的端口号。未信任域mgr主进程将该端口号返回给可信任域的GGSCI。可信任域的GGSCI向本地mgr主进程发送请求以启动Collector进程。本地mgr启动Collector进程,通过未信任域提供的端口号对未信任域进展监听。Collector进程翻开与未信任域passiveExtract进程的连接。同步数据通过连接从未信任域passiveExtract进程传输到Collector进程,然后写入本地trail,被Replicat进程应用。这里未信任域的passiveExtract进程,即是源端的datapumpExtract进程,所以只需要改动源端的datapumpExtract进程、新增一个aliasExtract进程即可〔Collector进程由目标端mgr自动配置〕。5.5.2配置案例1.源端配置〔146上〕〔1〕创立提取进程〔与普通情况下完全一样〕GGSCI>addextractexta,tranlog,beginnow配置文件exta.prm:/***extractextaSETENV(ORACLE_SID=ORCL)useridCOSS360,passwordCOSS360exttrailC:\ggoracle\dirdat\eadynamicresolutiongettruncatesTABLECOSS360.per_test,keycols(sampletime,objectid);***/创立本地队列:GGSCI>ADDEXTTRAILC:\ggoracle\dirdat\ea,extractexta〔2〕pump进程〔passiveextract进程〕创立passivepump:GGSCI>ADDEXTRACTpumpa,exttrailsourceC:\ggoracle\dirdat\ea,beginnow,passive,desc"passivepump"--passive表示为passiveextractprocess配置文件pumpa.prm:/***extractpumpauseridCOSS360,passwordCOSS360--rmthost42,mgrport7801--原先的rmthost需要被注释RMTHOSTOPTIONScompress--passiveextract专有参数rmttrailD:\ggoracle\dirdat\trail146\eaNOPASSTHRUgettruncatesTABLECOSS360.per_test,keycols(sampletime,objectid);***/创立远端队列:addrmttrailD:\ggoracle\dirdat\trail146\eaextractpumpa2.目标端配置〔142上〕〔1〕添加aliadextract进程aliasExtract进程不需要配置文件添加语法:ADDEXTRACT<group>,RMTHOST{<hostname>|<IPaddress>},{MGRPORT<port>}|{PORT<port}[,RMTNAME<name>][,DESC“<description>〞]此处测试的创立命令如下:GGSCI>addextractext146pa,rmthost46,mgrport7801,rmtnamepumpa--需要定义源端的地址、端口,而且如果aliasextract名称和passiveextract名称不同,需要特别指定rmtname〔2〕添加应用进程〔与普通情况下完全一样〕GGSCI>addreplicatrep146eaexttrailD:\ggoracle\dirdat\trail146\ea,nodbcheckpoint配置文件rep146ea.prm:/***REPLICATrep146eaUSERIDcoss3,PASSWORDcoss3assumetargetdefsREPERRORdefault,discardDISCARDFILEd:\ggoracle\log\rep146ea.dsc,append,megabytes200gettruncatesHANDLECOLLISIONSBATCHSQLBATCHESPERQUEUE200,OPSPERBATCH2000MAPcoss360.per_test,TARGETcoss3.per_test,keycols(sampletime,objectid);***/3.同步进程的启动和关闭注意,passiveextract(这里是pumpa)不应该被手动启动〔手动也无法启动〕。在上面的进程创立和配置完成后,正确的启动方式如下:〔1〕源端startexta,目标端startrep146ea〔2〕目标端startext146pa〔aliasExtract〕〔3〕在正确的配置下,pumpa会自动启动。Pumpa启动后,同步正常开场。 同样,进程关闭时,无论在源端关闭passiveextract或是在目标端关闭aliasextract,对应的aliasextract和passiveextract都会自动关闭。5.6GoldenGate双向复制〔active-active〕双向复制系统架构如下: GoldenGate双向复制,意即两端数据库互为源数据,无论在哪一端上对业务数据进展操作,都将同步应用到另一端。5.6.1双向复制的注意点1.防止数据循环 双向复制中,最主要的问题是需要防止数据的循环应用。在GoldenGate中,需要从两方面进展预防:〔1〕防止Extract进程抓取Replicat进程的SQL操作。在默认配置下,GoldenGate的Extract进程会忽略捕获由Replicat执行的SQL操作〔Teradata除外,需要进展额外配置〕,所以这局部一般不需要额外设置。〔2〕使Extract进程识别本地Replicat执行的DML事务,并进展忽略。这步在Oracle〔10gandlater〕中的配置为在Extract进程参加参数:TRANLOGOPTIONSEXCLUDEUSER<username>进展排除。不同的数据库这里需要配置的参数不同。如果是Oracle9i或之前的版本,需要配置tracetable。2.防止数据冲突 由于是双向复制,那么当两端都对同一数据进展操作时,就会发生冲突。比方同时对某行数据进展修改,修改的操作将会被覆盖〔视LAG以及事务的先后〕;又比方两端插入或删除一样键值的数据。 对于这类数据冲突,最好是在业务应用层解决。比方,可以划分两端数据库应用的业务范围,一局部数据只在一端修改维护,另一端则修改维护其他数据;在两端定义不同的键值生成策略;关注同步表上的触发器和ondeletecascade约束。也可以借助GoldenGate的映射和过滤功能,对于两端同步的数据进展区分。 总之,在配置双向复制环境时,需要综合考虑当时业务情况,一般都需要在应用层进展适当的修改,以防止数据冲突带来的数据丧失和不一致。5.6.2双向配置例如 这个例如中,ggdba用户作为GoldenGate专用用户,ddw和ddws分别为两端数据库需要同步的schema〔也可以同名,这里是为了便于区别〕,通过在两端Extract中配置排除ggdba的操作防止循环应用。以下ddw结尾的进程均在ddw用户所在数据库,ddws结尾的进程均在ddws用户所在数据库。(1)ddw==>ddws添加提取进程:GGSCI>addextractextddw,tranlog,begin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度停车场照明系统升级合同2篇
- 2024年版股权转让及回购合同范本
- 2024版宾馆客房用品专业维护采购合同范本3篇
- 2024年标准化土方回填工程承包合同版B版
- 2024年牛奶供应合同标准化文本版
- 2024版养老产业担保授信合同追偿责任书3篇
- 2024年度科研项目研发与转让合同3篇
- 2024年大数据驱动投资代客理财合作协议3篇
- 2024版二手农用三轮车买卖与保险理赔服务合同3篇
- 2024年度碎石采购与质量保障协议书2篇
- 维克多高中英语3500词汇
- 2015团章考试试题与答案(一)
- 1000个人名随机生成
- 中层干部竞聘演讲稿经典范文
- 最近国内外新闻大事ppt
- 移民安置档案归档范围与保管期限表
- 加油站安全生产例会制度安全生产
- 中心小学综合楼建设项目可行性研究报告
- 仓库电动叉车操作作业指导书
- 《可爱的中国读》书分享会PPT课件(带内容)
- 市政道路工程项目照明工程施工设计方案
评论
0/150
提交评论