收藏 分享(赏)

GoldenGate安装部署及解决方案.doc

上传人:tangtianxu1 文档编号:3141485 上传时间:2018-10-04 格式:DOC 页数:48 大小:1.15MB
下载 相关 举报
GoldenGate安装部署及解决方案.doc_第1页
第1页 / 共48页
GoldenGate安装部署及解决方案.doc_第2页
第2页 / 共48页
GoldenGate安装部署及解决方案.doc_第3页
第3页 / 共48页
GoldenGate安装部署及解决方案.doc_第4页
第4页 / 共48页
GoldenGate安装部署及解决方案.doc_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、GoldenGate 安装部署及解决方案目录GoldenGate 安装部署及解决方案 11、 GoldenGate 简介 .32、文档约定和说明 53、 GoldenGate 软件安装 63.1 GoldenGate 软件安装包下载 63.2 Windows 下安装 73.3 Linux 和 Unix 下安装 84、 GoldenGate 同步基本配置 94.1 oracle 之间同步和 GoldenGate 基础 94.2 oracle 与 db2 同步 .174.3 oracle 与 sybase 同步 .185、 GoldenGate 同步方案 195.1 使用 GoldenGate 初

2、始化加载 195.2 一对多数据同步(广播复制) 215.3 多对一数据同步(集中复制) 225.4 数据转换和过滤 .235.5 关于目标端高数据安全性下的 GoldenGate 配置方案 275.6 GoldenGate 双向复制(active-active) 306、 GoldenGate 数据同步性能测试 336.1 测试中主要监测数据和监测方式 336.2 测试脚本和 GoldenGate 配置 346.3 测试步骤 .386.4 性能测试结果 .407、 GoldenGate 推荐配置 427.1 添加必要的环境参数 .427.2 BATCHSQL 参数 427.3 数据库用户密码

3、加密 .437.4 trail 再压缩 .448、 GoldenGate Troubleshooting .458.1 一些常用的进程信息和日志的查看方式 458.2 解析 trail 文件 .45附: GoldenGate 新版本的一个特性 46参考文档 481、 GoldenGate 简介GoldenGate 软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库实时同步(real-time data synchronize)、双活(active-active high availabilit

4、y)。GoldenGate 软件可以在异构的 IT 基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制,其复制过程简图如下: 如上图所示,GoldenGate的数据复制过程如下: 利用捕捉进程(Capture Process)在源系统端读取Online Redo Log或Archive Log,然后进行解析,只提取其中数据的变化如增、删、改操作,并将相关信息转换为GoldenGate自定义的中间格式存放在队列文件(trail)中。再利用传送进程将队列文件通过TCP/IP传送到目标系统。捕捉进程在每次读完log中的数据变化并在数据传送到目标系统后,会写检查点(

5、checkpoint),记录当前完成捕捉的log位置,检查点的存在可以使捕捉进程在中止并恢复后可从检查点位置继续复制; 目标系统接受数据变化并缓存到GoldenGate队列当中,队列为一系列临时存储数据变化的文件,等待投递进程读取数据; GoldenGate投递进程从队列中读取数据变化并创建对应的SQL 语句,通过数据库的本地接口执行,提交到数据库成功后更新自己的检查点,记录已经完成复制的位置,数据的复制过程最终完成。 由此可见,GoldenGate是一种基于软件的数据复制方式,它从数据库的日志解析数据的变化(数据量只有日志的四分之一左右)。GoldenGate将数据变化转化为自己的格式,直接

6、通过TCP/IP网络传输,无需依赖于数据库自身的传递方式,而且可以通过高达9:1 的压缩率对数据进行压缩,可以大大降低带宽需求。在目标端,GoldenGate可以通过交易重组、分批加载等技术手段大大加快数据投递的速度和效率,降低目标系统的资源占用,可以在亚秒级实现大量数据的复制,并且目标端数据库是活动的GoldenGate提供了灵活的应用方案,基于其先进、灵活的技术架构可以根据用户需求组成各种拓扑结构,如图所示: GoldenGate可以提供可靠的数据复制,主要体现在下面三点: (1)保证事务一致性 GoldenGate在灾备数据库应用复制数据库交易的顺序与在生产中心数据库上的顺序相同,并且按

7、照相同的事务环境提交,确保在目标系统上数据的完整性和读一致性,为实时查询和事务处理创造了条件。 (2)检查点机制保障数据无丢失 GoldenGate的抽取和复制进程使用检查点机制记录完成复制的位置。对于抽取进程,其检查点记录当前已经抽取日志的位置和写队列文件的位置;对于投递进程,其检查点记录当前读取队列文件的位置。检查点机制可以保证在系统、网络或GoldenGate进程故障重启后数据无丢失。 (3)可靠的数据传输机制 GoldenGate用应答机制传输交易数据,只有在得到确认消息后才认为数据传输完成,否则将自动重新传输数据,从而保证了抽取出的所有数据都能发送到备份端。数据传输过程中支持128位

8、加密和数据压缩功能。Oracle 公司的GoldenGate产品,可以在异构的IT基础结构之间实现大量数据的秒一级的数据捕捉、转换和投递。目前最新版本为V11.1.1.1.0。GoldenGate可以支持几乎所有常用操作系统如和数据库平台,如下表所示: 操作系统 数据库 MS NT, 2000, XP, Linux, Sun Solaris, HP-UX, IBM AIX, HP NonStop, TRU64, IBM z/OS,OS/390 Oracle, DB2, MS SQL Server, MySQL, Enscribe, SQL/MP, SQL/MX, Sybase, Teradat

9、a, 其他ODBC 兼容数据库 2、 文档约定和说明为统一表示命令和便于查看,对格式作如下约定:GG_HOME 表示从操作系统命令行(cmd )进入 GoldenGate 安装路径下执行命令。GGSCI 表示在 GoldenGate 命令环境中执行命令。SQL 表示在数据库下执行 SQL 语句/*/ 表示配置文件内容,/*不包含在内。表示自定义参数,如自定义表名以下示例中若无特殊说明,GoldenGate 使用的版本主要为 11.1,部分使用 10.4 版本,除部分新特性,两者基本无差别;GoldenGate 命令行中的操作均是在 mgr 主进程 running时进行,当然,GoldenGat

10、e 安装部分除外。补充说明:该文档主要介绍 GoldenGate 基本使用、GoldenGate 的各类解决方案,以及以往本人在使用测试中总结的经验,文中的例子和执行的命令都是参照官方文档并亲自测试执行过。但因个人能力所限,错漏之处再所难免,文档中也不可能覆盖 GoldenGate 的方方面面。而且,因为 GoldenGate 本身提供了大量的参数,也不可能在这里一一列举,本文档中只举例了常用的一些参数命令,关于各个参数的具体使用语法和作用,还请参照官方文档Oracle GoldeGate Reference Guide 。3、 GoldenGate 软件安装在不同的操作系统和平台上安装 Go

11、ldenGate,需要在官网下载对应的版本。 32 位系统和 64 位系统的安装介质虽然不同,但是在同一 OS 上安装方式是一样的。GoldenGate 需要解析数据库的日志文件,所以安装位置必须要能访问到日志文件(在线日志和归档文件) ,并具有相应的权限。3.1 GoldenGate 软件安装包下载经常有人问我 GoldenGate 的下载地址,所以在这里专门说明一下。GoldenGate 软件的官方下载地址: http:/ 目前只有这个地址能下到对应 32 位操作系统的安装介质。首页如下:网页开头点击这个 Continue 进入下载。首次进入需要登记一些个人信息,如名字、公司等,然后下方选

12、择同意协议之类的,点 Continue 进入搜索。搜索时如下选择:点 GO,然后选择对应版本的 Oracle GoldenGate 下载。GoldenGate 安装包一般只有几十兆的大小,下载还是很快的。GoldenGate 除了同步软件这块,还有其他相关的产品,比如 Oracle GoldenGate Director,用于集中图形化管理和监控;Oracle GoldenGate Veridata,用于两端同步数据质量检验。在本文档中暂不介绍。3.2 Windows 下安装(1 )安装 Microsoft Visual C + 2005 SP1Windows 操作系统需要首先下载安装 Mic

13、rosoft Visual C + 2005 SP1 发行包(注意该软件也分 32 位和 64 位) 。(2 )绿色安装 GoldenGate下载对应平台版本的 GoldenGate 安装包,解压。然后进入操作系统命令行( cmd) ,进入 GoldenGate 解压路径下,执行:GG_HOME ggsci -进入 GoldenGate 命令窗口模式GGSCI CREATE SUBDIRS -建立子目录GGSCIedit param mgr -配置 GoldenGate 主进程参数由于第一次执行该命令,会提示创建 mgr 参数文件,点“是”并在文本中输入如下参数:/*PORT 7801 -Go

14、ldenGate 主进程端口号DYNAMICPORTLIST 7802-7820 -GoldenGate 为进程间通讯动态分配的端口段,注意这里如果分配的端口端少于 extract-replicat 进程对的话,会导致部分进程因通讯失败而出错。*/保存,生成的参数文件保存在 GG_HOME dirprm 下然后可以启动 GoldenGate 主控制进程:GGSCIstart mgr GGSCIinfo all -查看进程状态如果进程 MANAGER 状态显示为 RUNNING 则表示主进程已在运行。至此软件安装完成。(3 )管理 GoldenGate 服务在 WINDOWS 下还可以将 Gol

15、denGate 主进程作为系统服务进行管理,如下配置:GGSCI edit param ./globals -配置全局参数,注意前面的 ./ 表明与其他参数文件位置不同,该参数文件是直接位于 GoldenGate 安装路径下的输入:/*MGRSERVNAME -GoldenGate 主进程端口号,为自定义的系统服务名*/然后退出 GGSCI 命令行:GGSCI exitGG_HOME install addservice addevents -创建服务,完成后可以直接进服务进行管理WINDOWS 删除 GoldenGate 服务:GG_HOME install deleteevents del

16、eteservice -对应删除服务操作或者在注册表删除:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices 一般服务会以相同的名字在这里显示一个主健,直接删除相关的键值便可3.3 Linux 和 Unix 下安装(1 )检查必需的 lib 包下载对应平台版本的 GoldenGate,解压。在解压路径下执行:rootGG_HOME # ldd ggsci将列出所有需要的 lib 和当前缺少的。GoldenGate 在 Linux 和 Unix 下安装,需要安装ORACLE 的 lib 环境以及$ORACLE_HOME/lib 下的几个包,所以必须

17、安装在 Oracle 之后,而且确保在环境变量中加入:export LD_LIBRARY_PATH=$ORACLE_HOME/lib(2 )绿色安装 GoldenGate在解压路径下执行./ggsci 进行接口命令行,rootGG_HOME # ./ggsci -进入 GoldenGate 命令窗口模式GGSCI CREATE SUBDIRS -建立子目录GGSCIedit param mgr -配置 GoldenGate 主进程参数由于第一次执行该命令,会提示创建 mgr 参数文件,点“是”并在文本中输入如下参数:/*PORT 7801 -GoldenGate 主进程端口号DYNAMICPO

18、RTLIST 7802-7820 -GoldenGate 为进程间通讯动态分配的端口段,注意这里如果分配的端口端少于 extract-replicat 进程对的话,会导致部分进程因通讯失败而出错。*/保存,生成的参数文件保存在 GG_HOME dirprm 下然后可以启动 GoldenGate 主控制进程:GGSCIstart mgr GGSCIinfo all -查看进程状态如果进程 MANAGER 状态显示为 RUNNING 则表示主进程已在运行。至此软件安装完成。和 Windows 下安装的主要区别是需要确认必需的 lib 包,进入 GGSCI 接口命令行后的操作都是一致的。4、 Gol

19、denGate 同步基本配置GoldenGate 支持目前大部分主流数据库,这也是它的优势之一。下面列举了Oracle、Db2、Sybase 之间的同步。同步测试的准备工作中,有一部分是共通的,如下:(1 ) 在源端和目标端建立相同结构的两个表,建立主键。保证复制的对象在一开始是一致的。(2 ) 保证没有相关对象的触发器(会导致数据冲突的那些)或设置失效。(3 ) 数据库需要开启必须的日志模式。不同数据库的配置差异主要在这一步。(4 ) 源端和目标端都需要安装相应版本的 GoldenGate 软件,并分配一个有 DBA 权限的数据库用户给 GoldenGate 用以连接数据库。备注:分配给 G

20、oldenGate 的用户一般情况下并不需要完全的 DBA 权限,在官方文档上有详细的权限需求说明,但是完全按照那个配置比较繁琐。额外的,如果数据库使用 ASM 时,需要 sysdba 权限。4.1 oracle 之间同步和 GoldenGate 基础4.1.1 Oracle 数据库设置首先安装好 ORACLE,设置好 ORACLE_SID,ORACLE_HOME 等环境变量。当然,推荐的做法是在每个进程配置文件里都加上指定的环境变量参数,在后面优化配置中进行说明。Oracle 数据库需要开启归档日志,并开启最小附加日志模式。SQL select supplemental_log_data_m

21、in from v$database; -查看是否开启了最小附加日志模式SQL alter database add supplemental log data; -开启最小附加日志模式实际生产应用中,最好同时打开 ORACLE 的强制日志模式,以防止源数据库因直接路径加载忽略 redo 生成而导致这部分数据无法同步:SQL select force_logging from v$database;SQL Alter database force logging;光开启最小附加日志模式还不够,还需要打开表级的补全日志,可以在 GoldenGate 中使用 add trandata 命令强制重做

22、日志记录主键值,以保证在目标端能成功复制:GGSCI dblogin userid ddw,password ddw -GoldenGate 中登录 OARCLE 数据库GGSCIadd trandata ddw. -表名可以使用通配符GGSCI add trandata coss3.per_test,nokey,cols(sampletime, objectid) -无主键指定字段补全的示例也可以在数据库中打开:SQL alter table add supplemental log data (primary key) columns;千万不要小看这步日志设置,其实在 GoldenGate

23、 的配置中,这步是最容易出错的环节。如果开启 DDL 复制做冗灾备份,最好直接在数据库级别打开补全日志:SQL alter database add supplemental log data (primary key,unique,foreign key) columns;检查一下,全是 YES 就 OK 了(整个数据库级别补全)SQL select supplemental_log_data_min,supplemental_log_data_pk,supplemental_log_data_ui from v$database; 4.1.2 关于 Oracle 补全日志补充说明Oracl

24、e 日志(redo log)一般用于实例恢复和介质恢复,但是如果需要靠日志还原完整的 DML 操作信息(比如 Logmnr、Streams 和这里的 Goldengate) ,默认记录的日志量还不够。比如一个 UPDATE 的操作,默认 redo 只记录了 rowid 以及被修改的字段信息,但这里GoldenGate 还原这个事务,因为不是根据 rowid 而是 SQL 层面根据唯一键值来定位记录,所以还需要将主键或者其他字段的信息附加到日志中去。要往日志中增加这些额外字段信息的操作,就是开启补全日志,即 Add Supplemental Logging。打开补全日志,会使数据库的日志量增加,

25、所以只打开需要的级别和对象即可。Oracle 补全日志可以在数据库级别设置,也可以在表级别设置。在数据库级别中,补全日志按补全的信息量,对应好几个级别:(1 ) 最小附加日志(Minimal supplemental logging):是开启 logmnr 的最低日志要求,提供了行链接(chained rows)和多种数据存储(比如聚簇表、索引组织表)的信息。在 Oracle 9.2 之后的版本中,默认都不开启。(2 ) 主键补全(Primary key supplemental logging):在日志中补全所有主键列。如果表中无主键,则补全一个非空唯一索引列;如果非空唯一索引键也没,那么会

26、补全除了 LOB 和 LONG 类型字段以外的所有列,这时就和下面的所有补全一样了。(3 ) 唯一键补全(Unique key supplemental logging):当唯一键列或位图索引列被修改时,在日志中补全所有唯一键列或位图索引列。打开唯一键补全也会同时打开主键补全。注意这个级别是需要条件触发的。(4 ) 外键补全(Foreign Key supplemental logging):当外键列被修改时,将在日志中补全所有外键列。这个级别也是需要条件触发的。(5 ) 所有补全(All supplemental logging):在日志中补全所有字段(排除 LOB 和LONG 类型) 。这

27、里对于补全日志的详细操作语句不做一一说明。数据库级别中的 5 个类型中,除了最小附加日志级别,都可以在表级进行设置。除此之外,表级还可以明确指定需要补全的列。Oracle 表级补全日志需要在最小补全日志打开的情况下才起作用,即若一个数据库没有开最小补全日志或之前 drop supplemental log data 操作则即便指定了表级补全日志,实际在重做日志输出的过程中描述的记录仍只记录 rowid 和相关列值。而要关闭最小补全日志,也必须首先关闭数据库级别的其他补全级别后,才能关闭。所以在 GoldenGate 中,对于 Oracle 数据库的日志补全要求,至少是打开最小附加日志和主键补全

28、。主键补全只要在需要同步的表上开启即可。当然 GoldenGate 的 add trandata语法中也可以指定补全的列,这和 Oracle 表级补全日志的功能完全一致。毕竟,日志还是由数据库生成的,GoldenGate 并不能直接控制日志的生成方式和规则,只能根据所捕获的数据库的日志规则而来。不同的数据库,日志补全的规则也会不同。以上部分内容参考自Oracle 10gR2 UtilitiesSupplemental Logging 部分4.1.3 dml 同步4.1.3.1 一对一的实时同步简单配置同步流程如图:(1 )源数据库端添加提取进程(extract process)GGSCI ad

29、d extract extl,tranlog,begin now -新增抽取进程 extl,基于日志方式,立即生效需要注意的是,GoldenGate 中的进程名最长只能 8 个字符。注意,如果是在 RAC 环境下,需要再加上 THREADS 指定提取的日志 THREADGGSCI add extract extl,tranlog,begin now , THREADS GGSCI edit param extl -生成并编辑同名配置文件/*extract extl -抽取进程名userid ddworcl,password ddw -连接本机 DB 的帐号密码rmthost 192.168.0

30、.44, mgrport 7801 -目标数据库服务器地址和 GG 服务端口号rmttrail d:toolsGGgg10gdirdatrl -远程队列的位置(下一步建的东西)dynamicresolution -优化参数,动态分析表结构gettruncates -抓取 truncate 数据table ddw.aatest; -需要抽取的表,可以使用通配符*/然后给这个提取进程创建远端队列,即图中的 RMTTRAIL:GGSCI add rmttrail d:toolsGGgg10gdirdatrl extract extl 需要注意的是,这里最后的名称 rl(可以自定义,字母或数字)是指以

31、后生成的 trail文件都会以 rl 开头,如 rl000001,这个文件头名称最长只能 2 个字符。如果需要在文件级别区分队列,建议将队列创建于于不同的目录下。开启这个提取进程:GGSCI start extlGGSCI info all -查看所有进程状态此时 extl 进程 running 则表示已成功运行,这时开始会在前面指定的目标端队列位置生成trail 文件。如果进程出错,可以使用 view report extl 查看错误信息。(2 )目标数据库端添加复制应用进程(replicat process)在目标端 GoldenGate 命令行中配置复制进程:GGSCIadd repli

32、cat repl exttrail d:toolsGGgg10gdirdatrl,begin now,nodbcheckpoint 新增复制进程,使用对应的队列 rl,即刻开始,使用文件检查点GGSCIedit param repl -配置复制进程参数/*replicat repl -复制进程名userid ddworcl,password ddw -目标数据库的帐号密码assumetargetdefs -两台数据库数据结构一致则使用此参数reperror default,discard -如果复制数据出错则忽略discardfile D:repsz.dsc,append,megabytes

33、100 -错误信息写入 XXXX 文件,追加模式,最大 100mgettruncates -复制 truncate 操作 map ddw.aatest, target ddw.aatest_1; -映射关系,注意 target 前必须留一个空格-map ddw.aatest, target ddw.aatest_1, keycols (name), where (TYPE1 = “1“) -加两横杠在配置文件中进行注释;keycols 指定唯一键;where 筛选数据*/开启复制进程:GGSCIstart repl至此,一个最简单的同步配置完成,对于源数据库相应表的 insert,update

34、 ,delete 和truncate 操作都将通过日志捕获并同步到目标数据库。4.1.3.2 使用 datapump加入 datapump 后的数据传输的流程:这里的 datapump 与 ORACLE 10g 推出的数据泵不是一个概念。在 GoldenGate 中,datapump 相当于一个次级提取进程(secondary extract) 。在上面演示的同步流程中,提取进程直接将提取的 redo 信息经过处理后放置到了目标端服务器上,当两者之间的网络出现故障时,会因无法生成 trail 文件而导致提取进程崩溃,错误提示类似如下:2010-11-12 10:01:21 GGS ERROR

35、150 TCP/IP error 10061 (由于目标机器积极拒绝,无法连接。); retries exceeded.2010-11-12 10:01:21 GGS ERROR 190 PROCESS ABENDING.而加入 datapump 后,主提取进程(即第一个 extract)首先将 trail 生成在本地,然后datapump 读取本地 trail 再发送到目标服务器,即便网络故障,主提取进程仍然能随着事务生成 trail 文件,而 datapump 则会暂时停止传输,等待网络通畅后在将堆积的本地 trail文件发送至目标服务器,从而实现了断点传输的功能。在实际应用中,每一个同步

36、流程都应该配置 datapump 以应对网络问题。加入 datapump 的配置:将前面 extl 参数文件中的/*rmthost 192.168.0.44, mgrport 7801 rmttrail d:toolsGGgg10gdirdatrl*/替换为/*exttrail d:toolsGGgg10gdirdatl1 -本地队列文件生成位置*/配置 datapump 进程:GGSCI ADD EXTRACT pump1, EXTTRAILSOURCE , BEGIN -即是对应 extl 配置文件中定义的 d:toolsGGgg10gdirdatl1GGSCI edit param pu

37、mp1/*extract pump1userid ddw, password ddwrmthost 192.168.0.44, mgrport 7801rmttrail d:toolsGGgg10gdirdatr1PASSTHRU|NOPASSTHRU -直通模式或普通模式gettruncatestable ddw.bbtest;*/直通模式用在两边表名、列名一致,可以直接映射的情况,不需要额外配置;普通模式可以配置表名列名自定义映射,可以加 FILTER、transformation 等,需要配置一个数据定义文件(data-definitions file) 。然后修改原先为提取进程配置远端

38、队列位置:GGSCI delete rmttrail d:toolsGGgg10gdirdatrl extract extlGGSCI add rmttrail d:toolsGGgg10gdirdatrl extract pump1然后启动 extl 和 pump 进程就 OK 了。4.1.3.3 使用数据定义文件GoldenGate 数据定义文件(data-definitions file),主要用于不同数据源之间(比如下面的Oracle 与 DB2 之间的同步),进行数据同步时用来转换数据格式。数据定义文件主要包含表名、字段名、字段类型、字段长度和偏移量。利用 GoldenGate 的

39、defgen 工具生成一个数据定义文件(data-definitions file) ,大致步骤如下:(1 )创建 DEFGEN 工具的参数文件(2 )运行 DEFGEN 工具生成数据定义文件(3 )配置 GG 进程识别定义文件例子:GGSCI edit param defgen -创建 DEFGEN 工具的参数文件/*DEFSFILE -指定由 DEFGEN 生成的数据定义文件的全路径和名称SOURCEDB | TARGETDB , -oracle 不需要配置这个参数USERID ,PASSWORD -DB2 不需要配置 PASSWORDTABLE . -分析指定表生成配置文件*/类似如下(

40、ORACLE):/*DEFSFILE GG_HOMEdirdefextdb.refUSERID ddw,PASSWORD ddwTABLE ddw.aatest;*/然后退出 GGSCI,在 GG 安装路径下运行 DEFGEN 工具:GG_HOME defgen paramfile dirprm/defgen.prm配置文件默认生成在 GG_HOMEdirdef 下,不要去手动修改。如果对应表的表结构发生更改,需要重新生成这个配置文件。然后将生成的配置文件拷贝至目标服务器的 GG_HOMEdirdef 下。修改复制进程 repl参数文件:GGSCIedit param repl将原先的 ass

41、umetargetdefs 参数替换为 sourcedefs GG_HOME dirdefextdb.refGGSCIstop replGGSCIstart repl数据定义文件的配置完成。4.1.3.4 配置进程检查点(checkpoint)检查点记录了进程读写的位置信息用以数据恢复,目的是为了防止进程因系统、网络崩溃而导致的数据丢失,对于 GoldenGate 保证数据同步过程中数据不丢失非常重要。GoldenGate 的检查点由一个内部进程自动控制,与数据库检查点的概念类似。提取进程的检查点记录它在数据源中的读取位置和队列的写出位置,复制进程的检查点记录它读取队列的位置。每条提取或复制进

42、程都有自己对应的检查点信息。当 GoldenGate 的进程重启时,由它所记录的检查点决定需要读取的队列位置。GoldenGate 的检查点信息有两种存放方式:(1 )默认存放在 GGHOMEdirchk 下的文件中,一个进程对应一个文件。提取进程只能使用这种模式。不需要特殊配置。(2 )存放在数据库指定的表中,需要进行如下配置:首先在./globals 参数文件中加入:/*CHECKPOINTTABLE . -指定的检查点记录表*/然后运行:GGSCI DBLOGIN SOURCEDB , USERID , PASSWORD GGSCI ADD CHECKPOINTTABLE . -生成这个

43、检查点记录表在新增复制进程时可以在添加时指定 checkpointtable .替代nodbcheckpoint,使用数据库记录检查点信息。ORACLE 官方文档中,比较推荐将复制进程的检查点信息存放到数据库表中进行管理,认为在某些情况下能促进数据恢复。并指出检查点信息量非常小,而且是进行记录更新而非记录插入,一个进程只对应一条记录,在它特殊的检查点处理机制下不会对数据库造成影响。个人猜想是当目标数据库崩溃还原后(特别是在不完全恢复的情况下) ,检查点信息能同数据库一起还原,在数据上能利用数据库事务性与数据库保持一致,从而在数据库正常打开后能继续进行数据同步。但实际上并不必要,因为数据库故障的

44、情况多种多样,就算检查点同步恢复后,也不能保证直接就能启动 GoldenGate 进程。4.1.3 ddl 同步GoldenGate 的 DDL 同步只支持两边一致的数据库,限制条件较多(如不能进行字段映射、转换等) ,具体可以参考官方文档。DDL 的抓取不是通过日志抓取来捕获的,而是通过触发器来实现,所以对源数据库的性能影响要比单纯的数据抓取要大很多,可谓屏弃了GoldenGate 的优势。尽量不要使用 GoldenGate 的 DDL 复制功能,在大多数业务系统中,实际上不会有频繁的数据库结构变动,完全可以通过手工的方式进行维护。确实有大量DDL 操作的环境,如果可以,还是推荐物理 DG

45、之类的替换方案;确实要使用 GoldenGate的 DDL 复制,那么请详细参考官方文档的限制和说明。-以上主要为个人意见,有不同看法的请无视开启 DDL 复制的基本配置步骤为:(1 )关闭 ORACLE 的回收站功能。(2 )选择一个数据库 schema 存放支持 DDL 的 GoldenGate 对象,运行相应创建脚本。(3 )编辑 globals 参数文件。(4 )修改 extl 和 repl 的配置文件具体操作步骤:(1 )关闭数据库回收站:SQLalter system set recyclebin=off scope=both; (2 )编辑 globals 参数文件:GGSCIe

46、dit param ./globals添加以下内容后保存:GGSCHEMA ddw -标明支持 DDL 的 GG 对象存放在哪个 schema 下(3 )执行创建脚本:首先需要命令行进入 GG 安装目录下,然后再运行 sqlplus 执行脚本,如果不进入目录下脚本执行会报错(应该是由于 GG 脚本中子脚本嵌套使用相对路径的问题所造成) 。SQLmarker_setup.sql -提示输入目标 schemaSQLddl_setup.sql -提示输入目标 schema,输入 initialsetup 最后输入 yesSQLrole_setup.sqlSQLgrant GGS_GGSUSER_RO

47、LE to ddw; -不进行该步赋权后面起进程会报错SQLddl_enable.sql -使触发器生效(4 )修改提取进程和复制进程的配置文件,分别加入 ddl include all 属性。此时 repl 必须指定 assumetargetdefs 属性,这表明只有两边数据库结构一致的情况下才可以启用 DDL 复制。另外,开启 DDL 同步不能再只映射单表了,对整个模式下的对象都有效。加入 DDL 复制之后,数据复制的 lag 明显增加了。清除数据库中 DDL 复制的设置在实际测试中,由于我在同一个数据库中进行映射,映射表结构不一致,导致进程报了一系列的错误。这个时候需要把通过脚本创建的

48、GG 对象中的数据清空,安装目录下只提供了清除对象的脚本,可以如下操作:首先要求把所有的 GG 进程停掉,包括 mgr 进程SQLddl_disable.sql -首先使 DDL 触发器失效SQLddl_remove.sqlSQLmarker_remove.sqlrole_setup.sql 没有对应的清除脚本,但是这块不影响配置信息的清除然后重新再创建脚本。4.2 oracle 与 db2 同步设置 DB2 数据库参数:db2 connect to user using -DB2 命令行工具登陆 DB2db2 get db cfg for -查看数据库参数配置db2 update db cfg for using LOGRETAIN ON -设置 LOGRETAIN 参数db2 update db cfg for using USEREXIT ON -设置 USEREXIT 参数设置完后的参数配置相关显示如下:Log retain for recovery status = RECO

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报