环境介绍:
两台装有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权限。
如果在Oracle 10g ASM处于运行状态,在ASM实例中你必须使用sys用户以sysdba的身份进行访问,Because GG不支持使用操作系统用户访问ASM实例。
3、数据库处于归档模式。
4、检查源端数据库是否打开附加日志。
5、如果数据文件是存放在ASM中,则还必须将ASM实例静态注册到监听器中,否则,在后续实验过程中会失败的。Listern.ora和tnsname.ora文件内容如下:
listen.ora内容如下:
tnsname.ora内容如下:
还有其他一些限制条件,请参考官方文档。
二、安装:
这里用的是ggs_solaris10_x86_64_ora10g_64bit_v10.4.0.19_002.tar版本。软件的下载地址是:http://edelivery.oracle.com。
1、设置GG用户的环境变量:
由于这里直接使用的是oracle用户,之前已经设置好了环境变量,检查下述变量是否正确配置:
2、设置library paths for dynamic builds:
操作系统的不同,共享库的名称也不同,详见下图:
3、安装:
安装其实很简单,以oracle用户身份将压缩包解压到指定位置即可,这里的安装路径是/u01/app/oracle/gg
安装完成后,必须切换至GG的安装目录运行GGSCI命令,否则有些帮助信息是看不到的。
到此,GG的安装过程已经完成了。在另外一个节点执行上述步骤安装GG即可。
4、创建GG用户:
源数据库GGDB01:
目标数据库GGDB02:
这里为了做起来方便,所以直接赋予guser用户的dba权限。
三、源数据库(GGDB01)和目标数据库(GGDB02)上配置manager进程:
1、GG01上配置Manager process:
加入PORT 7809,保存退出。 这个端口号只要不重复即可。
2、启动Manager:
目标端(GG02)也配置MANAGER:
3、在源数据库端(GGDB01)创建表并载入数据:
以guser用户登录,然后创建测试表并载入数据:
创建并插入数据完成后,查看创建的表内容:
目标数据库端(GGDB02)也创建上述两张表,但不插入数据:
目标数据库(GGDB02)上已成功创建tcustmer和tcustord两张表,并且当前表中没有任何的记录可以查询到。
4、Add supplemental logging(源数据库GGDB01上执行):
在ggsci程序中将tcustmer和tcustord两张表的supplemental logging功能打开。
5、源数据库(GGDB01)中的数据导入目标数据库(GGDB02):
这步在异构数据库上是非常实用的,对于两端都是oracle的数据库,可以采用oracle自己的方式导入数据。
源(GG01)端执行:
目标(GG02)端执行以下命令:
接着源端启动:
启动了之后,就可以使用view report命令查看源端的einig1以及目标端的rinig1日志信息,在目标端使用sql查询下是否导入成功:
到此,已成功将源端数据导入目标端了。
四、抓取进程(capture)的配置:
源端GG01上进行设置:
添加一个eorag1进程,从数据库中抓取有效数据:
如果是RAC环境,则上面的threads后面的值就是2了。
配置抓取进程eorag1的参数:
由于这里使用了ASM,所以上述文件中必须加入ASMUSER以及ASMPASSWORD,并且ASM的用户必须是sys。如果没有编辑listen.ora文件和tnsname.ora文件,即使加上ASM选项,后续实验过程也是不会成功的。
五、目标数据库端上数据入库进程的配置:
目标端GG02上进行设置:
添加检查表:
添加入库进程rorag1并编辑其参数:
编辑完成后,启动rorag1进程:
最后在源端GG01上向表tcustmer上插入新数据,以测试下是否会实时同步数据:
完成以后一定要commit,否则数据是传不过去的。
目标端GG02上检查下,是否已经接收到数据:
向表tcustord中插入新数据:
未插入新记录之前的值:
源数据库(GGDB01)端插入新记录,然后提交:
目标数据库(GGDB02)端查询:
到此已经成功了,哈哈!!!后续还会增加GoldenGate高级内容,敬请期待!!!
参考文献:
1、 Oracle GoldenGate官方文档
2、Oracle Database Net Services Administrator's Guide
本文出自 “candon123” 博客,谢绝转载!