环境介绍:

       两台装有Solaris10的虚拟机,主机名为GG01和GG02 ,对应的IP为192.168.1.91和192.168.1.92。目前已经安装了oracle database 10g软件,数据库已处于运行状态。GG01上的数据库实例是GGDB01,而GG02上的数据库实例是GGDB02。网上好多类似文档中的数据库的数据文件都是放在本地磁盘上的,做起来基本上没什么问题。可我这里使用了ASM,所以好几次都是失败,几经周折最后还是搞定了。

一、安装之前的准备工作:

在安装GG之前,必须确保满足以下几个条件:

1、创建GoldenGate系统用户,根据官方文档中的描述最好直接使用oracle用户进行安装配置。

2、在数据库中创建GoldenGate数据库用户,至少包含connect,resource,select any dictionary,select any table权限。

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_本地磁盘

如果在Oracle 10g ASM处于运行状态,在ASM实例中你必须使用sys用户以sysdba的身份进行访问,Because GG不支持使用操作系统用户访问ASM实例。

3、数据库处于归档模式。

4、检查源端数据库是否打开附加日志。

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_软件_02

5、如果数据文件是存放在ASM中,则还必须将ASM实例静态注册到监听器中,否则,在后续实验过程中会失败的。Listern.ora和tnsname.ora文件内容如下:

listen.ora内容如下:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_数据库_03

tnsname.ora内容如下:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_数据库_04

还有其他一些限制条件,请参考官方文档。

二、安装:

这里用的是ggs_solaris10_x86_64_ora10g_64bit_v10.4.0.19_002.tar版本。软件的下载地址是:http://edelivery.oracle.com

1、设置GG用户的环境变量:

由于这里直接使用的是oracle用户,之前已经设置好了环境变量,检查下述变量是否正确配置:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_数据库_05

2、设置library paths for dynamic builds:

操作系统的不同,共享库的名称也不同,详见下图:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_本地磁盘_06

3、安装:

安装其实很简单,以oracle用户身份将压缩包解压到指定位置即可,这里的安装路径是/u01/app/oracle/gg

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_数据库_07

安装完成后,必须切换至GG的安装目录运行GGSCI命令,否则有些帮助信息是看不到的。

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_oracle_08

到此,GG的安装过程已经完成了。在另外一个节点执行上述步骤安装GG即可。

4、创建GG用户:

源数据库GGDB01:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_虚拟机_09

目标数据库GGDB02:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_本地磁盘_10

这里为了做起来方便,所以直接赋予guser用户的dba权限。

三、源数据库(GGDB01)和目标数据库(GGDB02)上配置manager进程:

1、GG01上配置Manager process:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_软件_11

加入PORT 7809,保存退出。 这个端口号只要不重复即可。

2、启动Manager:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_虚拟机_12

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_oracle_13

目标端(GG02)也配置MANAGER:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_本地磁盘_14

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_本地磁盘_15

3、在源数据库端(GGDB01)创建表并载入数据:

以guser用户登录,然后创建测试表并载入数据:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_软件_16

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_数据库_17

创建并插入数据完成后,查看创建的表内容:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_数据库_18

目标数据库端(GGDB02)也创建上述两张表,但不插入数据:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_oracle_19

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_本地磁盘_20

目标数据库(GGDB02)上已成功创建tcustmer和tcustord两张表,并且当前表中没有任何的记录可以查询到。

4、Add supplemental logging(源数据库GGDB01上执行):

在ggsci程序中将tcustmer和tcustord两张表的supplemental logging功能打开。

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_数据库_21

5、源数据库(GGDB01)中的数据导入目标数据库(GGDB02):

这步在异构数据库上是非常实用的,对于两端都是oracle的数据库,可以采用oracle自己的方式导入数据。

源(GG01)端执行:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_本地磁盘_22

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_本地磁盘_23

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_数据库_24

目标(GG02)端执行以下命令:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_虚拟机_25

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_虚拟机_26

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_本地磁盘_27

接着源端启动:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_数据库_28

启动了之后,就可以使用view report命令查看源端的einig1以及目标端的rinig1日志信息,在目标端使用sql查询下是否导入成功:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_软件_29

到此,已成功将源端数据导入目标端了。

四、抓取进程(capture)的配置:

源端GG01上进行设置:

添加一个eorag1进程,从数据库中抓取有效数据:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_虚拟机_30

如果是RAC环境,则上面的threads后面的值就是2了。

配置抓取进程eorag1的参数:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_虚拟机_31

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_数据库_32

由于这里使用了ASM,所以上述文件中必须加入ASMUSER以及ASMPASSWORD,并且ASM的用户必须是sys。如果没有编辑listen.ora文件和tnsname.ora文件,即使加上ASM选项,后续实验过程也是不会成功的。

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_数据库_33

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_本地磁盘_34

五、目标数据库端上数据入库进程的配置:

目标端GG02上进行设置:

添加检查表:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_本地磁盘_35

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_软件_36

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_虚拟机_37

添加入库进程rorag1并编辑其参数:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_数据库_38

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_数据库_39

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_oracle_40

编辑完成后,启动rorag1进程:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_本地磁盘_41

最后在源端GG01上向表tcustmer上插入新数据,以测试下是否会实时同步数据:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_虚拟机_42

完成以后一定要commit,否则数据是传不过去的。

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_本地磁盘_43

目标端GG02上检查下,是否已经接收到数据:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_本地磁盘_44

向表tcustord中插入新数据:

未插入新记录之前的值:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_数据库_45

源数据库(GGDB01)端插入新记录,然后提交:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_oracle_46

目标数据库(GGDB02)端查询:

Configure Oracle GoldenGate for Oracle to Oracle Database Synchronization_oracle_47

到此已经成功了,哈哈!!!后续还会增加GoldenGate高级内容,敬请期待!!!

参考文献:

           1、 Oracle GoldenGate官方文档

           2、Oracle Database Net Services Administrator's Guide