Oracle 11gR2 RAC和GoldenGate都是Oracle比较热门的产品,经过简单的学习和阅读文档,配置单节点的GoldenGate进行数据的复制相信
Oracle 11gR2 RAC和GoldenGate都是Oracle比较热门的产品,经过简单的学习和阅读文档,配置单节点的GoldenGate进行数据的复制相信不是什么太有难度的事情,但是对于利用GoldenGate进行RAC系统到RAC系统的复制,还是有些配置的技巧和策略设置的,前阵子就遇到一个这样一个问题:假设源和目标分别是两节点的RAC系统,如何保证目标部分节点失效的时候replicate会自动切换? 其实如果了解GG的工作机制和RAC的资源管理,问题的解决就十分清晰了。
今天就从系统的介绍下11gR2 RAC上OGG (Oracle GoldenGate的简称,下同)的完整配置步骤,,并简单谈谈如何解决上面这个场景的问题。
第一阶段:下载OGG(可以参考之前的单节点的复制例子,不再赘述)
OGG的下载地址
第二阶段:OGG的安装
1)登录源端的RAC系统中的任一个节点,并在ACFS上建立一个供OGG使用的共享目录,比如叫/cloudfs/goldengate
2)解压OGG的安装包到/cloudfs/goldengate目录
3) 设置好OGG工作的环境变量,比如
export LIBRARY_PATH=/cloudfs/goldengate:$ORACLE_HOME/lib:$LD_LIBRARY_PATH
4)启动ggsci并创建目录,然后进行必要的设置,启动manager
$ ggsci
GGSCI > create subdirs
(optional, support for DDL/Sequence)
Create and edit the parameter file for GLOBALS:
GGSCI > EDIT PARAMS ./GLOBALS
Add this line to GLOBALS parameter file:
GGSCHEMA ggs
NOTE: 'ggs' is the example OGG user and will be used in the rest of this document.
GGSCI > EDIT PARAMS mgr
Add the following lines to Manager parameter file:
PORT 7809
AUTOSTART ER *
AUTORESTART ER *
GGSCI > START mgr
5)在目标端重复上面的步骤1-4,注意目录名的使用,我们在目标端使用/mycloudfs/goldengate以示区分。
第三阶段:源和目标RAC数据库准备步骤
1) Create OGG user 'ggs' on both the source and target database, connect to database using SQL*Plus as SYSDBA:
SQL> CREATE USER ggs IDENTIFIED BY ggs;
SQL> GRANT CONNECT,RESOURCE,DBA TO ggs;
2)(optional, add Oracle sequence replication support) On both source and target database, go to OGG directory and run this SQL, enter OGG user 'ggs' as prompted:
SQL> @sequence.sql
3) Enable supplemental logging on source ODA database:
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;
SQL> ALTER SYSTEM SWITCH LOGFILE;
(Optional) Add Oracle DDL replication support
4) On the source system, go to OGG directory, connect to database using SQL*Plus as SYSDBA.
SQL> GRANT EXECUTE ON utl_file TO ggs;
5 On the source system, run the following script, provide OGG user 'ggs' as prompted.
SQL> @marker_setup.sql
SQL> @ddl_setup.sql
NOTE: enter 'INITIALSETUP' when prompted for the mode of installation.
SQL> @role_setup.sql
SQL> @ddl_enable.sql
SQL> @ddl_pin ggs
NOTE: 'ggs' here is the OGG user.
第四阶段:配置源端的extract group
1)发出以下命令登录数据库。
GGSCI> DBLOGIN USERID ggs, PASSWORD ggs
2) 创建主提取组 'myext':
GGSCI > ADD EXTRACT myext、TRANLOG、BEGIN NOW、THREADS 2
注意:THREADS 值是 RAC 实例的数量。
3)创建本地路径。主 Extract 写入该路径,数据泵 Extract 读取它。
GGSCI > ADD EXTTRAIL /cloudfs/goldengate/dirdat/et, EXTRACT myext
注意:“et”是提取“myext”的示例跟踪标识符。
4)创建并编辑Extract 'myext'的参数文件:
GGSCI >编辑 PARAMS myext
将以下行添加到此参数文件:
EXTRACT myext
SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/dbhome_1")
USERID ggs@ggdb,密码 ggs
TRANLOGOPTIONS DBLOGREADER
THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 20000
EXTTRAIL /cloudfs/goldengate/dirdat/et
动态分辨率
DDL 包括所有
表 hr.*;
注 1:确保 SQL*Net 连接字符串“ggdb”有效。
注 2:“hr”是将同步到目标系统的示例架构。
第五阶段:在源端配置数据泵提取组
1)创建数据泵组“mypump”:
GGSCI > ADD EXTRACT mypump, EXTTRAILSOURCE /cloudfs/goldengate/dirdat/et, BEGIN now
2)指定将在目标系统上创建的远程跟踪。
GGSCI > ADD RMTTRAIL /mycloudfs/goldengate/dirdat/rt, EXTRACT mypump
注意:“rt”是提取“mypump”的示例跟踪标识符,并在此处使用目标 OGG 目录“/mycloudfs/goldengate”。
3)创建并编辑Extract 'mypump'的参数文件:
GGSCI >编辑参数 mypump
将以下行添加到此参数文件:
EXTRACT mypump
RMTHOST rac12box-scan, MGRPORT 7809
RMTTRAIL /mycloudfs/goldengate/dirdat/rt
PASSTHRU
表 hr.*;
注意:RMTHOST 是目标主机。如果您还希望在目标系统上设置 HA,请将目标系统的 VIP 指定为 RMTHOST,
否则只需使用目标系统的 IP 地址/主机名。
4)开始提取'myext'和'mypump':
GGSCI >开始我的ext
GGSCI>启动mypump
5)检查OGG进程的状态:
GGSCI >全部信息
第六阶段:在目标端配置复制组
1) 创建一个 Replicat 组 'rept',从 Extract 'mypump' 读取路径:
GGSCI > ADD REPLICAT rept, EXTTRAIL /mycloudfs/goldengate/dirdat/rt, nodbcheckpoint
2)创建并编辑 Replicat 'rept' 的参数文件:
GGSCI >编辑参数rept
将以下行添加到此参数文件,假设与源ODA环境中相同的ORACLE_HOME和目标数据库'ggdb':
REPLICATrept
SETENV (ORACLE_HOME = "/u01/app /oracle/product/11.2.0/dbhome_1")
用户 ID ggs@ggdb,密码 ggs
ASSUMETARGETDEFS
HANDLECOLLISIONS
重复错误(默认,丢弃)
DDLERROR 默认丢弃
DDLOPTIONS 报告
DISCARDFILE /mycloudfs/goldengate/repsz.dsc,append,兆字节 100
地图 hr.*,目标 hr.*;
注意:确保 SQL*Net 连接字符串“ggdb”有效。
3)开始复制 'rept':
GGSCI >开始rept
4)检查OGG进程的状态:
GGSCI >全部信息
第七阶段:验证Goldengate功能
1) 以hr用户登录源数据库,进行一些简单的DDL和DML操作。
2)检查源系统上的Extract是否已捕获数据更改:
GGSCI>统计 myext
GGSCI>统计 mypump
3)以oracle用户登录目标系统,检查Replicat 'rept'的状态:
GGSCI>统计报告
4)比较输出并确保数据变化同步。
5)(可选,用于进一步的 HA 设置)在源系统上停止 OGG:
GGSCI>停止我的分机
GGSCI>停止我的泵
GGSCI>停止经理
6)(可选,用于进一步的 HA 设置)在目标系统上停止 OGG:
GGSCI>停止报告
GGSCI>停止经理
关于HA的设置,请继续关注下篇。