大多数关注数据复制的 Oracle 技术专家都熟悉 Oracle Streams。在 2009 年之前,Streams 一直是推荐使用的最流行的 Oracle 数据分发技术。
2009 年 7 月,Oracle 收购了 GoldenGate 这一数据库复制软件供应商。Oracle 现在鼓励客户使用 Oracle GoldenGate(Oracle 融合中间件系列的组成部分)来满足新应用中的数据复制需求。Oracle 关于 Oracle Streams 的发展方向声明表示该产品“将继续得到支持,但不会积极增强其功能”。
在本文中,我们将使用 Oracle GoldenGate 构建一个简单事务复制示例,以便熟悉这一新技术。
Oracle GoldenGate 架构
GoldenGate v11 能够在异构平台之间实现事务级的复制。它支持 Oracle Database、IBM DB2、Microsoft SQL Server、MySQL、Teradata 以及众多其他平台。(它还支持通过通用 ODBC 驱动程序进行访问。)
我们需要熟悉的最重要的组件是 Extract 和 Replicat 进程。Extract 进程运行在源系统上,负责捕获数据更改。Replicat 运行在目标计算机上,负责将更改应用于目标数据库。
以上是 Extract 进程的两个常见配置。所谓的“初始加载”用于用源数据的精确副本填充目标数据库(即 Extract 从源数据库提取所有数据并且通常只运行一次)。然后就可以进行“更改同步”。在“更改同步”配置中,Extract 不间断地监视源数据库并即时捕获所有更改。
在本演示中,我们将 Microsoft SQL Server 2008 配置为源数据库,配置并执行一个初始加载,然后以更改同步模式启动 Extract 进程。为了显示此复制的确是异构的,我们将在 Windows XP 上运行 SQL Server,在 Oracle Linux 5 上运行 Oracle Database 11g 第 2 版。作为先决条件,假定您在 Windows 系统上安装了干净的 SQL Server 2008,在 Linux 系统安装了 Oracle Database。
我们将从安装 GoldenGate 开始构建演示场景。首先从 Windows 系统开始。
在 Windows XP 上安装适用于 SQL Server 的 GoldenGate
首先,需要适用于 SQL Server 的 Oracle GoldenGate v11。可以从 http://edelivery.oracle.com 下载 (Oracle Fusion Middleware → Microsoft Windows x32 → Oracle GoldenGate for Non Oracle Database v11)。所需介质包的序列号是 V22241-01。
在希望安装 Oracle GoldenGate 的位置(在本示例中为 C:\GG)解压缩下载的压缩包。然后打开命令提示符,转到 C:\GG 目录,启动 GGSCI(GoldenGate 命令界面):
C:\GG>ggsci
Oracle GoldenGate Command Interpreter for ODBC
Version 11.1.1.0.0 Build 078
Windows (optimized), Microsoft SQL Server on Jul 28 2010 18:55:52
Copyright (C) 1995, 2010, Oracle and/or its affiliates.All rights reserved.
GGSCI (MSSQL) 1>
接着执行 CREATE SUBDIRS 命令创建 Oracle GoldenGate 工作目录。
GGSCI (MSSQL) 1> CREATE SUBDIRS
Creating subdirectories under current directory C:\GG
Parameter files C:\GG\dirprm: created
Report files C:\GG\dirrpt: created
Checkpoint files C:\GG\dirchk: created
Process status files C:\GG\dirpcs: created
SQL script files C:\GG\dirsql: created
Database definitions files C:\GG\dirdef: created
Extract data files C:\GG\dirdat: created
Temporary files C:\GG\dirtmp: created
Veridata files C:\GG\dirver: created
Veridata Lock files C:\GG\dirver\lock: created
Veridata Out-Of-Sync files C:\GG\dirver\oos: created
Veridata Out-Of-Sync XML files C:\GG\dirver\oosxml: created
Veridata Parameter files C:\GG\dirver\params: created
Veridata Report files C:\GG\dirver\report: created
Veridata Status files C:\GG\dirver\status: created
Veridata Trace files C:\GG\dirver\trace: created
Stdout files C:\GG\dirout: created
GGSCI (MSSQL) 2> EXIT
C:\GG>
根据官方文档,GGSCI 支持每个 Oracle GoldenGate 实例最多 300 个并发的 Extract 和 Replicat 进程。不过,有一个进程负责控制其他进程;这个进程被称作 Manager 进程。虽然您可以手动运行此进程,但最好将其安装为服务,否则当启动该进程的用户注销时,该进程将停止。
要将 Manager 进程添加为 Windows 服务,请在 GoldenGate 安装目录中执行 INSTALL ADDSERVICE 命令。
C:\GG>INSTALL ADDSERVICE
Service 'GGSMGR' created.
Install program terminated normally.
C:\GG>
这样就差不多完成了 Windows 安装。我们转到 Linux 系统。
在 Oracle Linux 5 上安装适用于 Oracle 的 GoldenGate
在 Linux 上安装 Oracle GoldenGate 与您刚才在 Windows XP 上进行的安装大同小异。您需要下载适用于 Linux 上的 Oracle 的 GoldenGate 介质包 (V22228-01)。创建一个安装目录并将压缩包解压缩到该目录。在本示例中,我使用 /u01/app/oracle/gg 目录,因为 ORACLE_BASE 指向 /u01/app/oracle。完成该操作后,需要设置 PATH 和 LD_LIBRARY_PATH 环境变量,如下所示:
[oracle@oradb ~]$ export PATH=$PATH:$ORACLE_BASE/gg
[oracle@oradb ~]$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_BASE/gg
启动 GGSCI 并执行 CREATE SUBDIRS。
Oracle GoldenGate Command Interpreter for Oracle
Version 11.1.1.0.0 Build 078
Linux, x86, 32bit (optimized), Oracle 11 on Jul 28 2010 13:22:25
Copyright (C) 1995, 2010, Oracle and/or its affiliates.All rights reserved.
GGSCI (oradb) 1> CREATE SUBDIRS
Creating subdirectories under current directory /u01/app/oracle/gg
Parameter files /u01/app/oracle/gg/dirprm: created
Report files /u01/app/oracle/gg/dirrpt: created
Checkpoint files /u01/app/oracle/gg/dirchk: created
Process status files /u01/app/oracle/gg/dirpcs: created
SQL script files /u01/app/oracle/gg/dirsql: created
Database definitions files /u01/app/oracle/gg/dirdef: created
Extract data files /u01/app/oracle/gg/dirdat: created
Temporary files /u01/app/oracle/gg/dirtmp: created