GoldenGate软件是一种基于日志的结构化数据复制软件。GoldenGate 能够实现大量交易数据的实时捕捉、变换和投递,实现源数据库与目标数据库的数据同步,保持亚秒级的数据延迟。

GoldenGate能够支持多种拓扑结构,包括一对一,一对多,多对一,层叠和双向复制等等。

一、版本选择与前期准备

OGG安装版本与Oracle的匹配,可以参考这个网站:版本参考

但是最好还是查看Oracle的官方文档,之前我也因为版本的问题安装一直失败。先看Oracle的版本:

先看Oracle的版本:

因为是Oracle 10g的数据库,所以看这个文档知道要使用10.4的版本:OGG文档

找到匹配的OGG版本号后,在 搜索版本 中可以搜索该版本。

注意:

在Oracle GoldenGate 11.2.1.0.22 Patch Set Availability (Doc ID 1669160.1)中提及:

Alert! OGG 11.2.1.0.22 is -not- available for Oracle Database 10g. Oracle GoldenGate 11.2.1.0.20 is the Terminal Release for support of Oracle Database 10g. 

OGG 11.2.1.0.20是最后一个支持10g数据库的版本了。(这个之前我安装了3个版本的OGG,各种问题,一定要注意)

除了源端的OGG以为,还需要下载目标端的应用,所以先查看kafka的版本:

然后检索 Oracle GoldenGate for Big Data 12.3.2.1.0 下载:

注意:下载以后尽快执行安装,不然会说 There are no products in your library。这样的话,只要重新下载就可以了

二、检查数据库配置情况

Ogg是基于日志的结构化数据复制软件,所以源端数据库必须开启归档模式。

归档模式就是保存所有的事务日志,记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。相反非归档就是不保存旧事务日志。

检查归档模式、附加日志、强制日志参数是否开启。Oracle 10g要检查回收站功能是否关闭,11g则不必检查。这里使用的是10g的,所以需要通过以下指令检查。

SQL> select log_mode,supplemental_log_data_min,force_logging from v$database;

默认情况下归档模式、附加日志、强制日志参数是关闭的。启动归档模式、附加日志、强制日志。其中开启归档模式需要重启数据库,开启附加日志、强制日志不需要重启数据库。

SQL> shutdown immediate;   //关闭数据库

SQL> startup mount;   //启动实例并加载数据库h

SQL> alter database archivelog;  //更改数据库为归档模式

SQL> alter database force logging;  

SQL> alter database add supplemental log data;

SQL> alter database open;


然后再检查是否开启,可以看到已经为YES

三、安装GoldenGate

将下载的exe文件执行后就可以在指定路径下看到zip文件:

我把他解压以后再重命名为ogg11.2.1.0.2:

然后进入此文件,然后运行 ggsci.exe ,进入ogg的管理控制台:

四、在Oracle中创建GoldenGate专属用户ogg

SQL> create user ogg identified by ogg;
SQL> grant connect,resource,unlimited tablespace to ogg;
SQL> grant execute on utl_file to ogg;
SQL> grant select any dictionary,select any table to ogg;
SQL> grant alter any table to ogg;
SQL> grant flashback any table to ogg;
SQL> grant execute on DBMS_FLASHBACK to ogg;

这样的权限只能满足DML的配置。DDL还暂时不能满足。至于DDL所需要的配置,下次会更新。

如果觉得这样赋权有点麻烦,也可以直接使用   grant dba to ogg; 

五、配置

在ogg控制台输入命令:create subdirs,初始化目录。创建其需要用到的目录
> create subdirs

 

各个目录的作用:

(1)dirprm
用于存放GG的参数文件,这些参数文件可以通过系统文本编辑器直接编辑,也可以通过在ggsci命令行下edit params来编辑,达到的效果是一样的。

文件格式如下:
<group name/user-defined name>.prm
比如mgr.prm

(2)dirrpt
用于存放各个进程的报告文件,内容为extract、replicat和manager进程运行相关的统计报告信息。

文件格式如下:
<group name><sequencenumber>.rpt

(3)dirchk
用于存放由extract抽取进程和replicat复制进程创建的checkpoint文件,checkpoint文件保存当前读和写的时间戳信息,通过这些信息保证了数据的准确性和数据容错功能。

文件格式如下:
<groupname><sequence number>.<ext>
group name就是我们配置的进程名称,序列号,加上后缀名成,后缀名称分为cpe(checkpoint extract)和cpr(checkpoint replicat)。

(4)dirpcs
用于存放各个进程的状态信息,当相关进程运行的时候,这些进程的相关信息,比如程序名称,进程名称,进程监听端口,进程ID等等都将被写入各自状态信息文件。

文件格式如下:
<group>.<extension>
其中extension有3个:pce(extract)  pcr(replicat)  pcm(manager)

(5)dirsql
用于存放由TRIGGEN组件创建的SQL脚本文件,这些SQL脚本用于创建GG相关的记录触发器和日志表。

文件格式如下:
用户自定义名称.sql   或者  表名称.sql
注意都是SQL结尾的脚本文件。

(6)dirdef
用于存放由DEFGEN组件创建的定义文件,包含在异构环境同步中的源或者目标端的数据定义。是一个可编辑的文本文件,比如你要添加一个新进创建表的相关的同步定义就可以在此直接编辑。
文件格式如下:
用户通过DEFGEN参数文件自定义

(7)dirdat
用于存放GG跟踪文件和由extract进程创建的抽取文件,这些文件将被复制进程(或者其他需要的)进一步处理和使用。

文件格式如下:
用户自定义的2个前缀字符+6位序列号(跟踪文件)  或者  用户自定义的格式(抽取文件)

(8)dirtmp
用于执行大事务处理过程,官方的说法是当请求的内存超过分配的内存的时候,就会……巴拉巴拉,这个怎么理解和解释呢?临时文件目录?

记住一点就是了:不要编辑里面的任何文件和内容。

六、配置源端的MGR

编辑mgr进程配置文件,没有的话会提示我们创建:

edit params mgr

 

PORT 7809
DYNAMICPORTLIST  7810-7920
AUTOSTART er *
AUTORESTART er *, retries 5, waitminutes 3
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45

参数解释:

PORT:指定服务监听端口;这里以7809为例,默认端口为7809
DYNAMICPORTLIST:动态端口:可以制定最大256个可用端口的动态列表,当指定的端口不可用时,管理进程将会从列表中选择一个可用的端口,源端和目标段的Collector、Replicat、GGSCI进程通信也会使用这些端口;
COMMENT:注释行,也可以用--来代替;
AUTOSTART:指定在管理进程启动时自动启动哪些进程;
AUTORESTART:自动重启参数设置:本处设置表示每3分钟尝试重新启动所有EXTRACT进程,共尝试5次;
PURGEOLDEXTRACTS:定期清理trail文件设置:本处设置表示对于超过7天的trail文件进行删除。
LAGREPORT、LAGINFO、LAGCRITICAL:定义数据延迟的预警机制:本处设置表示MGR进程每隔1小时检查EXTRACT的延迟情况,如果超过了30分钟就把延迟作为信息记录到错误日志中,如果延迟超过了45分钟,则把它作为警告写到错误日志中。

ACCESSRULE, PROG *, IPADDR 192.168.8.*, ALLOW   一般只设置在目标端,允许被这个网段的ip地址访问。

七、启动MGR进程

start mgr

然后再info all比较,可以发现已经成功执行:

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐