分类: Oracle
2010-08-31 10:47:03
了解如何安装、设置和配置 Oracle GoldenGate 以轻松实现 Oracle Database 10g 和 11g 之间数据的无缝复制。
作者:Porus Homi Havewala
2010 年 4 月发布
用于在各种企业系统间以亚秒级速度复制和集成事务数据,是同类最佳的、易于部署的产品。Oracle GoldenGate 可以灵活地在同类和异类系统(包括不同版本的 Oracle Database、不同的硬件平台)之间以及 Oracle 数据库和非 Oracle 数据库(包括 Microsoft SQL Server、用于开放系统和 z/OS 的 IBM DB2、Sybase 等等)之间移动数据。
本文演示如何安装、设置和配置此产品以轻松实现 Oracle Database 10g 和 11g 之间数据的无缝复制,还介绍了此产品的加速能力。
Oracle 于 2009 年收购了 GoldenGate,我们可以看到在全球各行业超过 4,000 个解决方案中实施了 Oracle GoldenGate。该软件执行实时的、基于日志的更改数据捕获 (CDC),能够在异构数据库间以极低的延迟和很小的空间移动大量事务数据。
通常,您部署 GoldenGate 捕获、数据泵和交付进程,并且可将这些进程部署在许多不同的操作系统和数据库上。可根据目标数据库的需要,复制所有数据或部分数据。当 Oracle GoldenGate 用于 Oracle 数据库时,可以复制数据操作语言 (DML) 和数据定义语言 (DDL) 操作。(目前只能在同类(不能在异类的)Oracle 版本间复制 DDL 操作。)
Oracle GoldenGate 官方支持 Oracle9i 第 2 版到 Oracle Database 11g 第 2 版,并且对所有这些版本提供 DML/DDL 支持。该产品可用于 Oracle Database 的企业版和标准版。
如上所述,可以在所支持的同类或异类 Oracle Database 版本间移动数据,也可以在 Oracle 数据库和非 Oracle 数据库间移动数据。大多数情况下,可对数据进行筛选、映射和转换。注意,如果启用了 DDL 支持(换言之,如果使用 GoldenGate 进行同类 Oracle Database 版本之间的 DDL 复制),则不支持数据筛选、映射和转换。
Oracle GoldenGate 是以 DBA 为中心的,因此 DBA 很容易学会如何使用它。其实现时间也是最少的 — 一些站点只用一个月的时间就完全付诸实现。
Oracle GoldenGate 产品系列包括:
为使增值服务造福客户,Oracle GoldenGate 核心许可包括 Oracle Active Data Guard 的全权使用许可和 Oracle Database 中 XStream 的全权使用许可。XStream 是与 Oracle Streams 接口的 API。Oracle Active Data Guard 支持主动打开备用数据库以提供报表服务,甚至在应用重做数据的同时也如此。这个特性非常棒,可将生产报表和查询工作分流到备用数据库上。
一直以来,Oracle Streams 只用于在 Oracle 数据库间复制数据。Oracle GoldenGate 还可以在非 Oracle 数据库间复制数据,并且这种复制易于建立。
我们应注意到,已发布的 中指出,“由于 Oracle GoldenGate 的战略性,将继续支持 Oracle Streams,但不会对其进行主动增强。而是对 Oracle Streams 中最好的内容行评估以确定是否将其并入 Oracle GoldenGate 中。”
为了进行此次演示,您应在一台 Microsoft Windows 服务器上有三个数据库。这三个数据库是 HRPRD1、HRPRD2 和 HRPRD3。其数据库版本分别为 Oracle Database 11g、Oracle Database 10g 和 Oracle Database 10g。
这三个数据库的 SYS 和 SYSTEM 口令已设置为 hrpassword1,用于测试目的。稍后可更改此口令。
此演示的目的是在 HRPRD2 和 HRPRD3 这两个 Oracle 10g 数据库的 HR.EMPLOYEES 表之间建立单向复制。对第一个数据库中此表的 DML 更改应传给第二个数据库。然后,我们将对这一复制进行增强,可以将更改同时复制到 Oracle 11g 数据库 HRPRD1 中。其结果是,对 HRPRD2 中该表的任何更新、插入和删除不仅将会成功更新 HRPRD3,也会成功更新 HRPRD1。
这种从 Oracle Database 10g 到 Oracle Database 10g 然后再到 Oracle Database 11g 的复制策略常用于升级情况,进行升级时,需要先复制数据,然后方可切换到升级后的数据库版本。Oracle GoldenGate 提供了简单的解决方案。
注意,针对 Oracle 数据库时,您不 需要使用 Microsoft ODBC 数据源管理器为这些数据库创建数据源名称 (DSN)。Oracle GoldenGate 复制将使用监听器直接连接到 Oracle 数据库。
首先,对于 Windows 系统,需要从 Microsoft 下载中心下载 Microsoft Visual C ++ 2005 SP1 Redistributable Package,然后进行安装。如果计算机上未安装 Visual C++,这用于安装运行本应用程序时所需的 Visual C++ 库的运行时组件。
接下来,需要从 下载 Oracle GoldenGate 软件。截至本文撰写时,OTN 只支持 Windows 平台 64 位版本:适用于 Windows 2000、XP 和 2003(64 位)上的 Oracle 10g 的 Oracle GoldenGate 10.4.0.x 版 (8 MB)。要下载 32 位 Windows 版本,您必须使用 网站。(请注意,E-Delivery 下载有一个为期 30 天的试用产品许可,而非 OTN 开发人员许可。)登录此网站后,搜索适用于 Microsoft Windows(32 位)平台的“Oracle Fusion Middleware Product Pack”(因为 Oracle GoldenGate 被视作一个 Oracle 融合中间件产品,而非 Oracle Database 产品),然后单击 Go。
此时会出现介质包列表。在此列表中,先选择 Oracle GoldenGate on Oracle Media Pack for Microsoft Windows (32-bit)。
此介质包中包含:
适用于 Windows 2000、XP 和 2003 上的 Oracle 10g 的 Oracle GoldenGate 10.4.0.x 版 |
V18162-01 |
大小:8.4 MB |
适用于 Windows 2000、XP 和 2003 上的 Oracle 11g 的 Oracle GoldenGate 10.4.0.x 版 |
V18164-01 |
大小:8.4 MB |
Oracle GoldenGate 文档 |
V18423-01 |
大小:20 MB |
下载这三个 zip 文件,因为您需要适用于 Oracle 10g 和 Oracle 11g 的 Oracle GoldenGate。
然后,返回到 Oracle 融合中间件的介质包列表,从中选择 Management Pack for Oracle GoldenGate (v2.0.0.2) Media Pack for Microsoft Windows。
该管理包介质包中包含:
适用于 Windows 的 Oracle GoldenGate Director V2.0.0.x Server |
V18127-01 |
大小:228 MB |
适用于 Windows 的 Oracle GoldenGate Director V2.0.0.x Client |
V18128-01 |
大小:55 MB |
Oracle GoldenGate Director 文档 |
V18129-01 |
大小:952 KB |
如果您想安装管理包,下载所有这些文件。该管理包是一个安装您 Windows 服务器上的独立产品,。该产品原名为 Oracle GoldenGate Director,它包含一个多层的客户端-服务器应用程序,使组织可以轻松监视和管理其 Oracle GoldenGate 部署。
使用 Oracle GoldenGate Director 的 GUI 界面,可以集中设计和配置 Oracle GoldenGate,还可以管理和监视为了在公司各服务器间复制数据而建立的各种 Oracle GoldenGate 进程。
介质包的主列表中还有其他一些介质包,如 Oracle GoldenGate Veridata Media Pack for Microsoft Windows。
Oracle GoldenGate Veridata 软件作为服务器进行安装,在不同平台上具有代理,它负责将一组数据与另一组数据进行对比以识别不同步的数据,对比时无需停机。此对比可全天候进行,可与大流量的复制同时进行。还可在不同平台间进行数据对比。
除了上述主要介质包外,列表中还显示了其他 Oracle GoldenGate 包。这些软件包适用于非 Oracle 数据库,如 Sybase、SQL Server、IBM DB2、Teradata,还有 JMS 和平面文件,这反映了 Oracle GoldenGate 支持异构的性质。
您下载的 Oracle GoldenGate 文档 zip 文件 (V18423-01.zip)中包含 Oracle GoldenGate Oracle Installation and Setup Guide Version 10.4 (gg_ora_inst_v104.pdf),其中描述了适用于 Linux、UNIX 和 Windows 上的 Oracle 数据库的 Oracle GoldenGate 的安装步骤。
注意,还有其他一些安装文档,它们针对适用于 Sybase、SQL Server、DB2、MySQL、Teradata 等的 Oracle GoldenGate。
首先,将 Oracle GoldenGate for Oracle 10g (V18162-01.zip) 解压缩到一个新的 Oracle GoldenGate 软件目录中,目录名中不含任何空格。例如,您可以使用 C:\OGG10G 作为 Oracle GoldenGate 目录。此目录中的软件代码将用于建立第一个和第二个 Oracle 10g 数据库之间的复制。
由于您的第三个数据库是 Oracle Database 11g 版,您还需要解压缩 Oracle GoldenGate for Oracle 11g (V18164-01.zip)。对于此版本的 Oracle GoldenGate,您需要使用一个单独的目录,C:\OGG11G。此目录中的软件代码将用于控制到第三个 Oracle Database 11g 数据库的复制。
如果您有 Oracle9i 数据库并且想从其复制数据或向其复制数据,需要另一个适用于 Oracle9i 的 Oracle GoldenGate 软件。不过,您不能通过 Oracle 网站下载 Oracle GoldenGate 的 Oracle9i 版本。如果您需要此版本,可能需要通过 My Oracle Support 发出一个系统请求 (SR)。
在命令提示符处输入以下命令:
mkdir C:\OGG10G cd C:\OGG10G unzip c:\V18162-01.zip mkdir C:\OGG11G cd C:\OGG11G unzip C:\V18164-01.zip # start the 10g databases if not already started net start OracleServiceHRPRD2 net start OracleServiceHRPRD3 # start the 11g database if not already started net start OracleServiceHRPRD1
现在,您可以打开两个命令窗口(开始..运行..Cmd),针对 Oracle Database 10g 和 Oracle Database 11g 将相应的环境变量(如 ORACLE_HOME、ORACLE_SID、LD_LIBRARY_PATH 等)设置为相应的值。
为了在两个 Oracle 10g 数据库间建立复制,将这些变量进行如下设置:
set ORACLE_HOME=C:\Oracle\product\10.2.0\db_1 set ORACLE_SID=HRPRD2 set PATH=%ORACLE_HOME%\bin;%PATH% set LD_LIBRARY_PATH=C:\OGG10G; %ORACLE_HOME%\LIB; %ORACLE_HOME%\jdbc\lib set CLASSPATH=;C:\Program Files\Java\jre6\lib\ext\QTJava.zip;%ORACLE_HOME%\jdbc\lib
ORACLE_SID 可设置为 HRPRD2 或 HRPRD3,两者都是 Oracle 10g 数据库。请注意 PATH、LD_LIBRARY_PATH 和 CLASSPATH 的值。
另一种方法是用系统变量进行这些设置,为此您可以在 Windows XP Professional 中使用:我的电脑..属性..高级..环境变量..系统变量。在这里添加新的系统变量并按如上所述更改路径。
在此例中,在一台服务器上运行两个数据库版本的缺点是,每次启动 Oracle GoldenGate for Oracle 10g 或 Oracle GoldenGate for Oracle 11g 的 Manager 服务时,都必须更改系统变量。您可能要添加与 Oracle Database 11g 有关的系统变量,然后启动 Oracle GoldenGate for Oracle 11g Manager 服务。这之后,您可能要更改这些系统变量,使其适合于 Oracle Database 10g,然后启动 Oracle GoldenGate for Oracle 10g Manager 服务。由于这是一个测试系统,这么做可能没有问题。但在生产环境下,您需要采取一种更自动化的方法(如采用脚本化的方法)在脚本中设置这些变量并启动 Manager 服务。
在命令窗口或“我的电脑”级别设置环境变量之后,转到 Oracle GoldenGate 的文件夹下,通过命令行(见图 1)或 Windows 资源管理器运行 Oracle GoldenGate Command Interpreter for Oracle (GGSCI) 程序。
现在,您可在 GGSCI 中执行 CREATE SUBDIRS 命令来创建 Oracle GoldenGate 的工作子目录。参见图 2,其中列出了所创建的重要目录。
您可以将 Oracle GoldenGate Manager 当作一个本地程序在命令窗口中运行,也可以将它作为一个 Windows 服务安装以便在 Windows 启动时自动启动。我们建议使用后面这种方法。
如果您希望将其作为一个本地命令运行,只需调用目录中的 Manager 执行文件(调用时带着一个参数文件)即可。命令语法为:
C:\OGG10G>mgr Usage: MGR PARAMFILE [REPORTFILE] [PID ] [PORT ] [USESUBDIRS] [NOUSESUBDIRS] [PAUSEATEND] [NOPAUSEATEND] [CD ]
PARAMFILE 是必需的参数。因此,您必须在 GGSCI 中创建一个参数文件:
GGSCI (HaviPori) 1> edit params mgr
此命令将在 C:\OGG10G\dirprm 目录中创建一个新的 mgr.prm 文件。在该文件中键入将用于运行 manager 进程的端口号,然后保存该文件。
PORT 7809
默认端口号为 7809。无论您选择哪个端口号,请确保该端口号未被任何其他程序所使用并且没有任何防火墙限制。因为 PORT 是 Manager 唯一需要的参数,所以必须指定该参数。GGSCI 使用该端口将请求发送给 Manager 以启动进程,并且 Extract 进程也使用该端口进行各种操作。
创建该参数文件之后,就可以在 Windows 命令提示符下启动 Manager 了,如下所示:
C:\OGG10G>mgr paramfile c:\OGG10G\dirprm\mgr.prm
该命令启动 Manager,并且显示图 3 所示的消息:
必须保持此窗口为打开状态,以保持 Manager 运行。如果您注销,该窗口将关闭,Manager 将停止运行。
上文描述了手动启动 Manager 的方法,还有一种启动方法,那就是将 Manager 作为自动启动的 Windows 服务来安装。
在 Windows 集群环境下必须使用后面这种方法,因为出现故障时只有服务可以自动切换到备用服务器上。在非集群系统中,将 Manager 作为服务来安装是可选的方法但也是强烈建议的方法。
在 Windows 中作为服务创建 Manager 进程时,该服务的默认名称为 GGSMGR。您可以为此服务指定自定义的名称。如果您在同一台服务器上需要不止一个 Oracle GoldenGate Manager 服务,比如一个针对 Oracle GoldenGate for Oracle 10g 的服务和另一个针对 Oracle GoldenGate for Oracle 11g 的服务,则指定名称是很重要的。如果您打算运行 Oracle GoldenGate Veridata,还需要一个 Manager 服务。
用以下方法为 Manager 服务指定一个不同的名称。在 GGSCI 命令提示符处执行以下命令:
EDIT PARAMS ./GLOBALS
在出现的记事本编辑器中,选择新建一个文件(如果是首次这么做),然后输入以下代码并保存该 GLOBALS 文件:
MGRSERVNAME OracleGGSMGR1
根据 Windows 上的 Oracle 服务一般带有 Oracle 前缀(如 OracleDBConsole
通过 C:\OGG10G 目录中的 Install 程序可轻松创建 Manager 服务。使用 install addservice 命令,如图 4 所示:
新服务在 Windows 服务列表中显示为一个自动启动的服务(见图 5):
Manager 服务以本地系统帐户运行,也可配置为以特定帐户(使用用户名和口令选项)运行,该用户名和口令可由 addservice 命令指定。现在可通过以下命令启动该服务:
GGSCI (HaviPori) 1> start manager Starting Manager as service ('OracleGGSMGR1')... Service started.
还可使用 Install 程序将事件消息安装到 Windows 注册表中,这样它们可通过 Windows Event Manager 显示。使用以下命令可完成此操作:
C:\OGG10G>install addevents Oracle GoldenGate messages installed successfully. Install program terminated normally.
还可将 category.dll 和 ggsmsg.dll 文件从 C:\OGG10G 目录复制到 C:\WINDOWS\system32 目录,从而生成具体的而不是一般性的错误。
Oracle GoldenGate Manager 进程已启动并运行。下一步要建立数据库之间的复制。
为此,您至少需要创建和配置一个 Extract 和 Replicat 组。在这些组中指定您想捕获和复制的数据。
Extract 进程捕获发生的数据更改并将这些更改发送给目标服务器上的一个“线索”。在目标服务器上启动 Replicat 进程,该进程负责进行实际的复制,它从线索中获取数据更改,然后将这些更改应用到目标数据库中。
您还需要为 Oracle GoldenGate Replication 准备数据库:在数据库级打开追加日志 功能。为此,在以 SYSDBA 身份登录到数据库后使用以下命令:
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; Database altered. SQL> alter system switch logfile; System altered
现在可以添加 Extract 组了。
GGSCI (HaviPori) 1> ADD EXTRACT emp_ext, TRANLOG, BEGIN NOW EXTRACT added.
您在这里指定了 TRANLOG,这意味着事务(重做)日志成为数据源。BEGIN 后面可以是该日志中的一个时间戳以便从该时刻开始进行处理,也可以是 NOW 以便立即开始处理。TRANLOG 还可以带有 EXTSEQNO 选项(某个 Oracle 重做日志的序列号,从该日志开始)和 EXTRBA 选项(该日志中的相对字节地址)。
注意,Extract 组的名称只能有八位字符。如果进行以下指定,则可获得完全帮助。
GGSCI (HaviPori) 1> help add extract
接下来,我们要添加一个 RMTTRAIL 或 EXTTRAIL。前者用于远程计算机,如果您在同一台本地计算机上建立复制,则建议使用后者。我们将使用 EXTTRAIL,通过以下命令来创建它:
GGSCI (HaviPori) 1> ADD EXTTRAIL C:\OGG10G\dirdat\et, EXTRACT emp_ext EXTTRAIL added.
EXTTRAIL 被指定为服务器上的一个物理子目录 — 最好在 dirdat 子目录下,dirdat 是为 Oracle GoldenGate 复制而创建的工作目录之一。
指定的文件名只能是两位字符,因为在创建实际文件时,会在这两个指定的字符后追加一个数字后缀以产生实际文件名。例如,当 EXTRACT 进程启动并且发生数据更改时,会创建一个 C:\OGG10G\dirdat\et000001 文件作为提取文件。
RMTTRAIL 的命令语法与之相同,如果您要使用 RMTTRAIL,只需用 RMTTRAIL 代替 EXTTRAIL。主要差别体现在 extract 的参数文件中 — 下一步将创建此参数文件。使用 RMTTRAIL 时,该参数文件将有更多参数用于描述远程主机和远程管理器端口号。
现在,我们来为 Extract 组 emp_ext 创建参数文件,如下所示:
GGSCI (HaviPori) 1> EDIT PARAM emp_ext
在此文件中,键入以下代码行:
EXTRACT emp_ext USERID system@localhost:1521/HRPRD2, PASSWORD hrpassword1 EXTTRAIL C:\OGG10G\dirdat\et TABLE hr.employees;
您指定了在这个 Extract 组中,对第一个 Oracle 10g 数据库(即 HRPRD2)中的表 HR.EMPLOYEES 进行提取。
如果您使用了 RMTTRAIL,则只需按下列行进行更改:
RMTHOST, MGRPORT RMTTRAIL C:\ \dirdat\rt
现在,可使用以下命令启动 extract:
GGSCI (HaviPori) 1> START EXTRACT EMP_EXT Sending START request to MANAGER ('OracleGGSMGR1') ... EXTRACT EMP_EXT starting
该进程的状态和有关信息如下所示:
GGSCI (HaviPori) 2> STATUS EXTRACT EMP_EXT EXTRACT EMP_EXT: RUNNING GGSCI (HaviPori) 3> INFO EXTRACT EMP_EXT EXTRACT EMP_EXT Last Started 2009-12-08 13:04 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:00 ago) Log Read Checkpoint Oracle Redo Logs 2009-12-08 13:05:58 Seqno 11, RBA 578560
还可查看有关该进程的详细信息:
GGSCI (HaviPori) 4> INFO EXTRACT EMP_EXT detail EXTRACT EMP_EXT Last Started 2009-12-08 13:04 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:00 ago) Log Read Checkpoint Oracle Redo Logs 2009-12-08 13:07:19 Seqno 11, RBA 596992 Target Extract Trails: Remote Trail Name Seqno RBA Max MB C:\OGG10G\dirprm\et 0 923 10 Extract Source Begin End D:\ORADATA\HRPRD2\REDO01.LOG 2009-12-08 12:59 2009-12-08 13:07 Not Available * Initialized * 2009-12-08 12:59 Current directory C:\OGG10G Report file C:\OGG10G\dirrpt\EMP_EXT.rpt Parameter file C:\OGG10G\dirprm\EMP_EXT.prm Checkpoint file C:\OGG10G\dirchk\EMP_EXT.cpe Process file C:\OGG10G\dirpcs\EMP_EXT.pce Error log C:\OGG10G \ggserr.log
只要有错误,extract 进程就会显示为 STOPPED 状态。这种情况下需要进行错误分析。
首先,查看报告文件 C:\OGG10G\dirrpt\EMP_EXT.rpt,上面的详细信息中提到了该报告。
然后,查看日志文件 ggserr.log 和 sqlnet.log 中是否有任何说明性的消息,这两个文件位于 C:\OGG10G 主目录中。
ggserr.log 文件包含事件信息,例如:
2009-12-02 14:53:26 GGS INFO 301 Oracle GoldenGate Manager for Oracle, mgr.prm: Command received from GGSCI on host 10.10.10.10 (START EXTRACT EMP_EXT ). 2009-12-02 14:53:26 GGS INFO 302 Oracle GoldenGate Manager for Oracle, mgr.prm: EXTRACT EMP_EXT starting.
也可通过以下方法查看这些事件:
GGSCI (HaviPori) 1> VIEW GGSEVT … …. 2009-12-02 15:09:34 GGS INFO 302 Oracle GoldenGate Manager for Oracle, mgr.prm: EXTRACT EMP_EXT starting. 2009-12-02 15:13:26 GGS INFO 399 Oracle GoldenGate Command Interpreter for Oracle: GGSCI command (HaviPoriH): EDIT PARAM emp_ext.
sqlnet.log 可显示错误,例如:
TNS-12557: TNS:protocol adapter not loadable
这个特定错误指明存在数据库连接问题,您需要在监听器级进行分析。确保 Path 环境变量在最开始处包含了 Oracle Home bin 子目录。可能有其他的 TNS 错误,它们可能会指明其他解决方法。
EMP_EXT.rpt 可显示如下所示的错误:
2009-12-08 13:01:27 GGS ERROR 182 OCI Error beginning session (status = 28009-ORA-28009: connection as SYS should be as SYSDBA or SYSOPER). 2009-12-08 13:01:27 GGS ERROR 190 PROCESS ABENDING.
这指明 Extract 进程正在尝试以 sys 而不是 SYSDBA 身份登录。只需在 Extract 的参数文件中将登录参数改为“system”即可。
在这里我们应注意,在 Extract 参数文件中 login 行的末尾指定 SYSDBA 是不起作用的,尽管这么做对于 GGSCI 中的 DBLOGIN 命令(在下文中可看到此命令)确实会起作用。
ggserr.log 文件可显示类似错误:
2009-12-03 00:43:16 GGS INFO 399 Oracle GoldenGate Command Interpreter for Oracle: GGSCI command (HaviPoriH): start manager. 2009-12-03 00:43:25 GGS ERROR 182 Oracle GoldenGate Manager for Oracle, mgr.prm: OCI Error during OCIServerAttach (status = 12154-ORA-12154: TNS:could not resolve the connect identifier specified). 2009-12-03 00:43:25 GGS ERROR 190 Oracle GoldenGate Manager for Oracle, mgr.prm: PROCESS ABENDING.
这指明 Manager 的参数文件 mgr.prm 中所提供的登录凭证可能存在问题。其结果是 Manager 没有启动。
您还可能在 Extract 的报告文件中看到另一个错误。例如,EMP_EXT.rpt 可能会有此类错误:
2009-12-07 16:40:08 GGS ERROR 190 No minimum supplemental logging is enabled. This may cause extract process to handle key update incorrectly if key column is not in first row piece. 2009-12-07 16:40:08 GGS ERROR 190 PROCESS ABENDING.
问题的解决方法显然是在数据库级启用追加日志功能。由于该功能已启用,在本例中将不会看到此错误。
现在转到目标数据库 HRPRD3,在本例中该数据库位于同一服务器上。由于这也是一个 Oracle 10g 数据库,您可以使用同一 Oracle GoldenGate for Oracle 10g 安装软件(在 C:\OGG10G 子目录中)和同一 Manager 服务。如果这个数据库位于另一台服务器上,您需要在该服务器上安装适用于该数据库版本的相应 Oracle GoldenGate 软件然后配置一个新的 Manager 服务。
首先,使用 GGSCI 的 DBLOGIN 命令连接到该数据库,这样以后发出的其他命令将在此数据库上运行。
注意,DBLOGIN 正常运行,如下所示:
GGSCI (HaviPori) 1> DBLOGIN USERID system@localhost:1521/HRPRD3 PASSWORD hrpassword1 Successfully logged into database.
在 GGSCI help 中可以看到还有两个参数:SOURCEDB 和 TARGETDB。这两个参数只用于非 Oracle 数据库。
现在,需要为要复制的 employees 表添加一个检查点表:
GGSCI (HaviPori) 2> ADD CHECKPOINTTABLE HR.EMPLOYEES_CHKPT Successfully created checkpoint table HR.EMPLOYEES_CHKPT.
此表中保存的检查点指示 Replicat 进程的当前读写位置。这用于在进程需要重启时或者在服务器出现任何故障或网络停顿时防止数据丢失。如果没有这一机制,将导致数据丢失。另一个好处是,通过使用检查点,多个 Extract 或 Replicat 进程可通过相同的一组线索进行读取。
对于以批处理模式运行的 Extract 和 Replicat 进程,检查点不是必需的,因为这样的进程总是可以重启。然而,在 Extract 和 Replicat 进程连续工作的情况下,检查点是必需的。检查点通常保存在 dirchk 子目录的文件中,但是对于 Replicat,可以选择在数据库的检查点表中保存检查点。
如果您在 GLOBALS 参数文件中指定检查点表,则上面的命令可使用该文件中的规定。这种情况下,只需这样来使用该命令:
GGSCI (HaviPori) 3> ADD CHECKPOINTTABLE No checkpoint table specified, using GLOBALS specification (hr.employees_chkpt). Successfully created checkpoint table HR.EMPLOYEES_CHKPT.
现在可以添加 Replicat 组了,具体如下所示,其中指定的 EXTTRAIL 正是在第一个数据库中建立 Extract 组时所使用的 EXTTRAIL。这样,该 Replicat 组将以 Extract 组创建的线索为数据源,即使用相同的线索:
GGSCI (HaviPori) 4> ADD REPLICAT emp_rep, EXTTRAIL C:\OGG10G\dirdat\et, CHECKPOINTTABLE hr.employees_chkpt, REPLICAT added.
编辑此 Replicat 组的参数文件,具体如下:
GGSCI (HaviPori) 5> EDIT PARAM emp_rep
在新文件中输入以下内容:
REPLICAT emp_rep USERID system@localhost:1521/HRPRD3, PASSWORD hrpassword1 ASSUMETARGETDEFS MAP hr.employees, TARGET hr.employees;
由于各表具有完全相同的 DDL 结构,您使用 ASSUMETARGETDEFS 参数。
现在可以启动 Replicat 组:
GGSCI (HaviPori) 6> start REPLICAT emp_rep Sending START request to MANAGER ('GGSMGR') ... REPLICAT EMP_REP starting
稍候片刻再查看其状态,如果立即查看,其状态可能显示为“stopped”。看到状态为“running”后,查看详细信息,执行 info all 命令显示所有正在运行的进程:
GGSCI (HaviPori) 7> status REPLICAT emp_rep REPLICAT EMP_REP: STOPPED GGSCI (HaviPori) 8> status REPLICAT emp_rep REPLICAT EMP_REP: RUNNING GGSCI (HaviPori) 11> info REPLICAT emp_rep detail REPLICAT EMP_REP Last Started 2009-12-08 13:35 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:01 ago) Log Read Checkpoint File C:\OGG10G\dirdat\et000001 2009-12-08 13:33:24.000000 RBA 985 Extract Source Begin End C:\OGG10G\dirdat\et000001 2009-12-08 13:33 2009-12-08 13:33 C:\OGG10G\dirdat\et000000 * Initialized * 2009-12-08 13:33 Current directory C:\OGG10G Report file C:\OGG10G\dirrpt\EMP_REP.rpt Parameter file C:\OGG10G\dirprm\EMP_REP.prm Checkpoint file C:\OGG10G\dirchk\EMP_REP.cpr Checkpoint table HR.EMPLOYEES_CHKPT Process file C:\OGG10G\dirpcs\EMP_REP.pcr Error log C:\OGG10G\ggserr.log GGSCI (HaviPori) 12> info all Program Status Group Lag Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING EMP_EXT 00:00:00 00:00:03 REPLICAT RUNNING EMP_REP 00:00:00 00:00:06
此时可对两个 Oracle Database 10g 数据库 HRPRD2 和 HRPRD3 之间的复制进行测试。但我们决定等到建立好到 Oracle 11g 数据库 HRPRD1 的复制之后再进行测试。下面我们将建立该复制。
您的 Oracle 11g 数据库 HRPRD1 也在同一服务器上。由于它是一个 11g 数据库版本,您需要使用本文开始时解压缩到 C:\OGG11G 目录中的 Oracle GoldenGate for Oracle 11g 软件。
对于 Oracle 11g 数据库 home,按如下所示设置环境变量:
set ORACLE_HOME=C:\app\havipori\product\11.1.0\db_1 set ORACLE_SID=HRPRD1 set PATH=%ORACLE_HOME%\bin;%PATH% set LD_LIBRARY_PATH=C:\OGG11G; %ORACLE_HOME%\LIB; %ORACLE_HOME%\jdbc\lib set CLASSPATH=;C:\Program Files\Java\jre6\lib\ext\QTJava.zip;%ORACLE_HOME%\jdbc\lib
按照与 Oracle GoldenGate for Oracle 10g 安装软件类似的步骤进行操作,创建一个名为 OracleGGSMGR2 的 Manager 服务并启动它。创建工作子目录和 mgr.prm 文件。这些步骤如下所示:
C:\OGG11G>ggsci GGSCI (HaviPori) 1> EDIT PARAMS ./GLOBALS
在该文件中键入 MGRSERVNAME OracleGGSMGR2,然后保存。
C:\OGG11G>install addservice Service 'OracleGGSMGR2' created. Install program terminated normally. GGSCI (HaviPori) 1>create subdirs Creating subdirectories under current directory C:\OGG11G Parameter files C:\OGG11G\dirprm: created Report files C:\OGG11G\dirrpt: created Checkpoint files C:\OGG11G\dirchk: created Process status files C:\OGG11G\dirpcs: created SQL script files C:\OGG11G\dirsql: created Database definitions files C:\OGG11G\dirdef: created Extract data files C:\OGG11G\dirdat: created Temporary files C:\OGG11G\dirtmp: created Veridata files C:\OGG11G\dirver: created Veridata Lock files C:\OGG11G\dirver\lock: created Veridata Out-Of-Sync files C:\OGG11G\dirver\oos: created Veridata Out-Of-Sync XML files C:\OGG11G\dirver\oosxml: created Veridata Parameter files C:\OGG11G\dirver\params: created Veridata Report files C:\OGG11G\dirver\report: created Veridata Status files C:\OGG11G\dirver\status: created Veridata Trace files C:\OGG11G\dirver\trace: created Stdout files C:\OGG11G\dirout: created GGSCI (HaviPori) 2> EDIT PARAMS mgr
在该文件中键入以下代码行,然后保存该文件。注意,这里使用了不同的端口号并且 Manager 现在登录到 HRPRD1 上。
PORT 7810 USERID system@localhost:1521/HRPRD1 PASSWORD hrpassword1
现在可以启动 Manager 了。下一步是使用 DBLOGIN 登录到 Oracle 11g 数据库,然后在此数据库中创建检查点表。
GGSCI (HaviPori) 3> start manager Starting Manager as service ('OracleGGSMGR2')... Service started. GGSCI (HaviPori) 4> DBLOGIN USERID system@localhost:1521/HRPRD1 PASSWORD hrpassword1 Successfully logged into database. GGSCI (HaviPori) 5> ADD CHECKPOINTTABLE HR.EMPLOYEES_CHKPT Successfully created checkpoint table HR.EMPLOYEES_CHKPT.
现在,可以在数据库 HRPRD1 中创建第二个 Replicat 组了。注意,我们将使用和前面数据库 HRPRD3 所使用的完全相同的线索。
这样,HRPRD2 的数据所写入到的同一个线索同时为两个数据库(HRPRD3 和 HRPRD1)、两个 Replicat 组所使用。这相当棒。
如果在 ADD REPLICAT 命令中不使用 BEGIN NOW,则 Replicat 进程会在跟踪开始时就启动,这也不错。
GGSCI (HaviPori) 6> ADD REPLICAT emp_rep, EXTTRAIL C:\OGG10G\dirdat\et, CHECKPOINTTABLE hr.employees_chkpt, REPLICAT added. GGSCI (HaviPori) 7> EDIT PARAM emp_rep
在此文件中输入以下几行内容:
REPLICAT emp_rep USERID system@localhost:1521/HRPRD1, PASSWORD hrpassword1 ASSUMETARGETDEFS HANDLECOLLISIONS DISCARDFILE c:\OGG11G\dirrpt\emp_ext.dsc, purge MAP hr.employees, TARGET hr.employees;
注意该文件中额外的参数,如 HANDLECOLLISIONS 和 DISCARDFILE。这是为了对表中记录重复之类的错误进行处理。我们已将这些参数作为选项放入此文件中,也可以将它们放入第一个 Replicat 组的参数文件中。
HANDLECOLLISIONS 在源数据库活动时对初始数据加载进行自动错误处理。确保在初始加载完成后删除此参数。DISCARDFILE 参数指示被删除的记录将保存在哪个文件中。
现在启动该 Replicat 组并查看其状态:
GGSCI (HaviPori) 8> start REPLICAT emp_rep Sending START request to MANAGER ('GGSMGR2') ... REPLICAT EMP_REP starting GGSCI (HaviPori) 9> status REPLICAT emp_rep REPLICAT EMP_REP: STOPPED
其状态显示为 stopped,但 C:\OGG11G 目录下的任何日志文件中都没有错误指示。
迫使错误显示出来的唯一方法是从命令提示符处运行 Replicat。这可用于调试目的 — 错误(如果有的话)会显示在屏幕上而不是写入报告文件中。但在 Oracle GoldenGate for Oracle 11g 版本中,看上去需要通过这种方法来使 Replicat 运行起来,虽然我们认为这可能是测试服务器上的环境问题造成的。使用的命令为:
C:\OGG11G> replicat paramfile c:\OGG11G\dirprm\emp_rep.prm *********************************************************************** Oracle GoldenGate Delivery for Oracle Version 10.4.0.19 Build 002 Windows (optimized), Oracle 11 on Sep 18 2009 16:44:02 Copyright (C) 1995, 2009, Oracle and/or its affiliates. All rights reserved. Starting at 2009-12-09 11:46:28 *********************************************************************** Operating System Version: Microsoft Windows XP Professional, on x86 Version 5.1 (Build 2600: Service Pack 2) Process id: 1504 Description: *********************************************************************** ** Running with the following parameters ** *********************************************************************** REPLICAT emp_rep USERID system@localhost:1521/HRPRD1, PASSWORD *********** ASSUMETARGETDEFS HANdlecollisions Discardfile c:\OGG11G\dirrpt\emp_ext.dsc, purge MAP hr.employees, TARGET hr.employees; CACHEMGR virtual memory values (may have been adjusted) CACHEBUFFERSIZE: 64K CACHESIZE: 512M CACHEBUFFERSIZE (soft max): 4M CACHEPAGEOUTSIZE (normal): 4M PROCESS VM AVAIL FROM OS (min): 1G CACHESIZEMAX (strict force to disk): 881M Database Version: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production PL/SQL Release 11.1.0.6.0 - Production CORE 11.1.0.6.0 Production TNS for 32-bit Windows: Version 11.1.0.6.0 - Production NLSRTL Version 11.1.0.6.0 - Production Database Language and Character Set: NLS_LANG environment variable not set, using default value AMERICAN_AMERICA.WE8M SWIN1252. NLS_LANGUAGE = "AMERICAN" NLS_TERRITORY = "AMERICA" NLS_CHARACTERSET = "WE8MSWIN1252" Warning: NLS_LANG is not set. Please refer to user manual for more information. *********************************************************************** ** Run Time Messages ** *********************************************************************** Opened trail file C:\OGG10G\dirdat\et000001 at 2009-12-09 11:46:35 MAP resolved (entry HR.EMPLOYEES): MAP HR.EMPLOYEES, TARGET hr.employees; Using following columns in default map by name: EMPLOYEE_ID, FIRST_NAME, LAST_NAME, EMAIL, PHONE_NUMBER, HIRE_DATE, JOB_ID, SALARY, COMMISSION_PCT, MANAGER_ID, DEPARTMENT_ID Using the following key columns for target table HR.EMPLOYEES: EMPLOYEE_ID.
此时,Replicat 进程已准备就绪,我们可在屏幕上查看其状态。如果您打开一个新的命令窗口、启动 GGSCI 并查看其状态,Replicat 进程会显示为 RUNNING。这样,通过这种方式,Oracle Database 11g 中的复制开始工作。
文件中额外的参数(如 HANDLECOLLISIONS 和 DISCARDFILE)是特意添加的,这是因为通过命令行运行 Replicat 进程时屏幕上曾显示出记录重复错误。从下面的输出结果中可以看到这些错误,这些错误指示初始加载时出现的问题与重复的记录有关。
通过进一步的分析发现,某个用户在 Oracle 11g 目标数据库中手动插入了记录,而手动插入的数据与启动 Oracle GoldenGate 复制进程之后 插入到 Oracle 10g 源数据库中的数据相同。这就引发了记录重复,从而导致重复问题。
… *********************************************************************** ** Run Time Messages ** *********************************************************************** Opened trail file C:\OGG10G\dirdat\et000000 at 2009-12-09 11:17:51 Switching to next trail file C:\OGG10G\dirdat\et000001 at 2009-12-09 11:17:51 du e to EOF, with current RBA 923 Opened trail file C:\OGG10G\dirdat\et000001 at 2009-12-09 11:17:51 Processed extract process graceful restart record at seq 1, rba 923. MAP resolved (entry HR.EMPLOYEES): MAP HR.EMPLOYEES, TARGET hr.employees; Using following columns in default map by name: EMPLOYEE_ID, FIRST_NAME, LAST_NAME, EMAIL, PHONE_NUMBER, HIRE_DATE, JOB_ID, SALARY, COMMISSION_PCT, MANAGER_ID, DEPARTMENT_ID Using the following key columns for target table HR.EMPLOYEES: EMPLOYEE_ID. 2009-12-09 11:17:54 GGS WARNING 218 Aborted grouped transaction on 'HR.EMP LOYEES', Database error 1 (ORA-00001: unique constraint (HR.EMP_EMAIL_UK) violat ed). 2009-12-09 11:17:54 GGS WARNING 218 Repositioning to rba 985 in seqno 1. 2009-12-09 11:17:54 GGS WARNING 218 SQL error 1 mapping HR.EMPLOYEES to HR .EMPLOYEES OCI Error ORA-00001: unique constraint (HR.EMP_EMAIL_UK) violated (st atus = 1), SQL. 2009-12-09 11:17:54 GGS WARNING 218 Repositioning to rba 985 in seqno 1. ….
解决此问题的办法是使用 HANDLECOLLISIONS 和 DISCARDFILE 参数,然后重启该 Replicat 进程。DISCARDFILE 在出现被删除的记录时可提供更多信息。在命令提示符处启动运行 Replicat 进程后,等待直到其通过线索完成运行并根据需要删除记录。
然后在命令窗口按 Ctrl-C 停止该 Replicat 进程。这将显示:
Enter X to exit or C to continue: X *********************************************************************** * ** Run Time Statistics ** * *********************************************************************** Last record for the last committed transaction is the following: ___________________________________________________________________ Trail name : C:\OGG10G\dirdat\et000001 Hdr-Ind : E (x45) Partition : . (x04) UndoFlag : . (x00) BeforeAfter: A (x41) RecLength : 196 (x00c4) IO Time : 2009-12-08 13:43:36.000000 IOType : 5 (x05) OrigNode : 255 (xff) TransInd : . (x03) FormatType : R (x52) SyskeyLen : 0 (x00) Incomplete : . (x00) AuditRBA : 11 AuditPos : 1188880 Continued : N (x00) RecCount : 1 (x01) 2009-12-08 13:43:36.000000 Insert Len 196 RBA 1295 Name: HR.EMPLOYEES ___________________________________________________________________ Reading C:\OGG10G\dirdat\et000001, current RBA 1604, 2 records Report at 2009-12-09 11:47:56 (activity since 2009-12-09 11:46:35) From Table HR.EMPLOYEES to HR.EMPLOYEES: # inserts: 2 # updates: 0 # deletes: 0 # discards: 0 # insert collisions: 2 Last log location read: FILE: C:\OGG10G\dirdat\et000001 SEQNO: 1 RBA: 1604 TIMESTAMP: Not Available EOF: YES READERR: 400
现在可以取消 HANDLECOLLISIONS 参数了,可在该参数行之前添加“—”将其注释掉。然后在命令行重启该 Replicat 进程。由于记录重复问题已得到解决,该进程现在可以正常工作,以后对源数据库进行任何更改时,该进程都可将这些更改复制过来。
从图 6 的命令行窗口中可以看到 HRPRD1、HRPRD2 和 HRPRD3 这三个数据库的 HR.EMPLOYEES 表中的记录。这三个数据库都正好有 107 条记录。在第三个窗口中可看到使用的 SELECT 命令。
现在可以在源数据库 HRPRD2 的 HR.EMPLOYEES 表中 INSERT 和 COMMIT 一些行,然后查看这些行是否被复制到目标数据库 HRPRD3 和 HRPRD1 中。从图 7 中可以看到这些 INSERT 操作。
对所有三个数据库再次运行 SELECT,其结果显示,即刻发生了到目标数据库的复制,所有数据库现在都有 109 条记录(如图 8 所示)。这样,使用 Oracle GoldenGate 到 Oracle 10g 和 Oracle 11g 的复制成功。
您已看到,从 Oracle Database 10g 到 10g 数据库的复制可正常进行。从 Oracle Database 10g 到 11g 数据库的复制也可正常进行,但是只有在命令提示符处启动 Replicat 进程(例如使用“replicat paramfile c:\OGG11G\dirprm\emp_rep.prm”)才会如此。而从 GGSCI 启动 Replicat 进程仍会使其滞留于 stopped 状态。这可能是由于我们的测试服务器存在环境错误。我们应记住,如果从命令提示符处启动就不会有错误,进程会正常运行。
您已看到,Oracle GoldenGate 的 Extract 和 Replicat 进程已生效。每个实例(即一个 Manager 进程)可通过 GGSCI 命令接口支持多达 300 个并发的 Extract 和 Replicat 进程,这个数量相当大。
然而,随着此类进程数量的增加,对内存的占用也会增加 — 每个 Extract 和 Replicat 进程需要大约 25 至 55 MB 内存。对内存的占用实际上可能更高,这取决于并发事务的数量和事务大小。这始终是个问题。
Oracle GoldenGate Replication 还对源系统有 3% 到 5% 的 CPU 影响,这取决于生成的重做日志的数量。
我们在这里建立的是单向复制。还可以建立双向多主复制(对多站点更新的复制)。在这样的安装环境中,Oracle GoldenGate 通过研究和了解两个站点何时更新相同的记录来解决冲突。您可以设置一些冲突解决规则(如时间戳,或者哪一方始终优先等等),您也可以就如何解决冲突设置用户退出机制。
即使目标数据库的表中没有唯一键时,Oracle GoldenGate 也能复制数据。这对所有支持的数据库都是可行的,条件是您能够指定那些是唯一的列或者使用整行作为一个键 — 因为任何删除或更新操作都需要某种唯一性。
目前,Oracle GoldenGate 不能复制双字节数据,但计划在未来的版本中支持这种复制。现在,对双字节数据的处理可传递给一个备用数据库以用于灾难恢复。
Oracle GoldenGate 中的这一产品现在名为 Oracle Management Pack for GoldenGate。这是一个多层的客户端-服务器应用程序,通过一个 GUI 界面监视和管理 Oracle GoldenGate 的部署。如果多台主机上安装了 Oracle GoldenGate Director 的远程客户端,您可以对这些主机上运行的多个 Oracle GoldenGate 实例(Manager 进程)进行管理。
这些客户端全部连接到集中安装的 Oracle GoldenGate Director 服务器,该服务器使用 Oracle WebLogic Server 11g (10.3.1) 作为功能应用服务器。以前,较早的 JBoss Application Server 3.2.7 附带 Oracle GoldenGate Director。现在它为 Oracle WebLogic Server 所取代,但要注意后者必须在安装 Oracle GoldenGate Director 服务器之前在系统上预先安装并运行。
Oracle GoldenGate Director 服务器有一个 Web 界面并且需要在现有 Oracle 数据库中拥有自己的数据库信息库(至少 200 MB),您也可以对该信息库使用 MySql 或 Microsoft SQL Server。作为一项安全措施,Oracle GoldenGate Director 的安装要求该信息库所使用的数据库口令必须至少为八位字符,其中至少包含一个数字和一个字母数字字符。
如果在 GGSCI 中定义一个进程,您可以通过 Oracle GoldenGate Director 配置、监视和控制该进程。从操作系统命令行执行的其他独立进程(如 DDLGEN 进程)不能通过 Oracle GoldenGate Director 监视。
在 Windows、UNIX 和 NonStop 平台上,Extract 进程、Replicat 进程、Manager 进程、线索(本地或远程)、文件(本地或远程)以及 Extract 和 Replicat 任务均可通过 Oracle GoldenGate Director 来配置、监视和控制。
在 Oracle GoldenGate Manager 参数文件中可以指定其他参数,可通过这些参数来允许动态端口分配、在 Manager 启动时自动启动复制进程(如 Extract 和 Replicat)、建立对所有线索的集中维护(清除)。
The Oracle GoldenGate Administration Guide Version 10.4 详细介绍了这些高级 Manager 参数。该指南还介绍了如何以不同的方法配置 Extract 和 Replicat 进程、如何将 Oracle GoldenGate Replication 用于实时报表、实时数据分布、实时数据仓储、维护实时备用数据库和主-主高可用性等各种目的,以及如何配置 DDL 同步。在某个数据库要升级,但要求停机时间几乎为零的情况下,Oracle GoldenGate 也非常有用 — 您只需建立从旧的数据库版本到新的数据库版本之间的 Oracle GoldenGate 复制,然后在切换时将您的所有客户端切换为指向新数据库即可。这会是一个极好的选择,例如,如果您准备将现有数据库移到 Oracle Exadata V2 数据库机上,以便将您的所有数据库整合到世界上最快的数据库机。
有关 Oracle GoldenGate 的另一个有用的参考资料是 Oracle GoldenGate Troubleshooting and Tuning Guide Version 10.4。在本文开始时下载的文档 zip 文件中包含了这个参考资料和管理指南。
我们想感谢 Oracle 融合中间件和 Oracle GoldenGate 的各位 Oracle 产品经理,本文所述建立 Oracle GoldenGate 复制的过程得到了他们的欣然帮助(真正的 Oracle 精神)。我们期待着计划之中的 Oracle GoldenGate Director 与 Oracle Enterprise Manager Grid Control 的集成。
Oracle Enterprise Manager Grid Control 是 Oracle 的一个强大的企业管理产品。如果您想了解如何对您环境中所有的 Oracle RAC 或非 Oracle RAC 数据库、Oracle 自动存储管理 (ASM) 实例和 Oracle Clusterware 自动打补丁,请阅读作者的一篇题为的文章。有关如何使用 Oracle Enterprise Manager Grid Control 为您公司的数据库轻松建立 Oracle Recovery Manager (Oracle RMAN) 备份的信息,请阅读“”。
另外,要了解使用 Oracle Enterprise Manager Grid Control 进行 Oracle Data Guard 的安装、管理(包括倒换和故障切换)和监视如何能够节省大量的时间和资源,请阅读作者最近发表的另一篇文章“”。
享受 Oracle 的世界。
Porus Homi Havewala(Oracle ACE 总监(数据库))是 S & I Systems Pte Ltd(Oracle 在新加坡的一个白金合作伙伴)的首席顾问。他在 Oracle 技术方面经验丰富,自 1994 年以来担任过生产 DBA、高级顾问、电子商务技术 DBA 和系统管理员、开发 DBA 以及数据库设计人员/建模人员(使用 Oracle Designer)。他曾在澳大利亚的一家电信巨头担任全球第一个生产 Oracle Enterprise Manager Grid Control 站点的首席数据库架构师和技术团队领头人。他是 Oracle Enterprise Manager Grid Control 的热心推广者,已经撰写了数篇有关网格管理的 OTN 文章。