最近某客户的一套数据库系统从原先的单实例迁移到RAC中,由于原先的系统上配置了OGG数据同步(将部分业务表进行同步,提供给其他系统使用),待数据库迁移完成后,需要对OGG进行重新配置工作,顺便借此机会进行OGG的升级。由于目标端数据库没有变动,因此本次OGG实施配置主要针对生产库。
以下是旧环境和新环境的基本信息:
指标 | 旧环境 | 新环境 |
OS | HP-UX 11.31 IA64 | HP-UX 11.31 IA64 |
Oracle | Oracle10.2.0.4 | Oracle11.2.0.3 |
Instance | 单实例 | RAC双实例 |
OGG | version 11.1 | version 11.2.0.6 |
存储管理 | 文件系统 | ASM |
OGG安装路径 | 本地目录/ogg | 节点2上面的目录/ogg |
由于新环境数据文件是通过ASM来管理的,并且数据库的在线日志和归档日志都是统一存在在ASM磁盘组中,因此在配置OGG捕获进程参数的时候,为了读取ASM上面的redo log和archive log ,需要设置登陆ASM实例的相关参数。
Oracle GoldenGate extract 进程访问 ASM 中存放的 transaction log 主要有2种方式:
1、 以 sys用户直接连接 ASM 实例访问
2、 在 Oracle 10.2.0.5、Oracle 11.2.0.2 版本和后续版本的数据库中,Oracle 提供了一个新的 ASM API接口 ,可以让 extract 进程直接利用数据库服务器来访问 redo 和 archive log。使用该 API 后,extract 将获得一个最大不超过 4 mb 的read buffer。read buffer 越大,对于 redo 量较高的 环境越容易提高 Extract 的进程。可以通过使用 TRANLOGOPTIONS 的 DBLOGREADERBUFSIZE 选项来指定read buffer 的大小。
下面我们就这2种方式介绍下具体步骤:
方法1:
1)修改节点2的tnsnames.ora文件,添加以下内容:
ASM2 = |
2)添加OGG捕获进程:
GGSCI>add extract wuhan, tranlog, begin now,threads 2 |
threads 2-----针对RAC模式的必选,代表是2个节点的双实例
3) 添加OGG捕获进程参数:
EXTRACT WUHAN setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8) USERID ogg, PASSWORD ogg --配置登陆ASM实例 TRANLOGOPTIONS ASMUSER SYS@+ASM2, ASMPASSWORD oracle EXTTRAIL ./dirdat/aa DBOPTIONS ALLOWUNUSEDCOLUMN --配置归档路径位置 TRANLOGOPTIONS ALTARCHIVELOGDEST primary instance EVEN1 +data/archivelog, ALTARCHIVELOGDEST primary instance EVEN2 +data/archivelog table his_dba.HIS_CARD_T; table his_dba.HIS_PHOTO_T; table his_dba.HIS_TRACE_T; table his_dba.HIS_GROUP_T; table his_dba.HIS_GROUP_RELATION_T; table his_dba.HIS_REPORT_T; table his_dba.HIS_LOST_T; table his_dba.HIS_APPLY_INFO_T; table his_dba.HIS_ERROR_INFO_T; table his_dba.HIS_SSMZ_T; |
方法2:
OGG11g提供一个新的参数:DBLOGREADER
使用该参数,我们就不需要配置登陆ASM所需要的TNS配置内容,而且在参数文件里面也不需要制定归档路径的位置,它会自动去寻找归档路径。但如果要使用该参数,对数据库的版本有一定的要求,以下是官方文档对该参数的解释:
DBLOGREADER | (Oracle) Valid for Extract in classic capture mode. Causes Extract to use a newer ASM API that is available as of Oracle 10.2.0.5 and later 10g R2 versions, and Oracle 11.2.0.2 and later 11g R2 versions (but not in Oracle 11g R1versions). This API uses the database server to access the redo and archive logs, instead of connecting directly to the Oracle ASM instance. The database must contain the libraries that contain the API modules and must be running. To use this feature, the Extract database user must have SELECT ANY TRANSACTION privilege. |
在oracle11.2.0.1上面测试,报以下错误:
2014-01-20 15:34:12 2014-01-20 15:34:12 |
使用该参数,只需要在捕获进程参数文件里面添加好就OK了。
1)添加OGG捕获进程:
GGSCI>add extract wuhan, tranlog, begin now,threads 2 |
2)添加OGG捕获进程:
EXTRACT WUHAN setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8) USERID ogg, PASSWORD ogg EXTTRAIL ./dirdat/aa DBOPTIONS ALLOWUNUSEDCOLUMN TRANLOGOPTIONS DBLOGREADER table his_dba.HIS_CARD_T; table his_dba.HIS_PHOTO_T; table his_dba.HIS_TRACE_T; table his_dba.HIS_GROUP_T; table his_dba.HIS_GROUP_RELATION_T; table his_dba.HIS_REPORT_T; table his_dba.HIS_LOST_T; table his_dba.HIS_APPLY_INFO_T; table his_dba.HIS_ERROR_INFO_T; table his_dba.HIS_SSMZ_T; |
总体来说,方法1配置起来步骤比方法2要繁琐些,但方法2对数据库版本有一定的要求。