Oracle数据集成时应解决的问题不包括解决方案的产品包括哪些

用于在各种企业系统间以亚秒级速度复制和集成事务数据是同类最佳的、易于部署的产品。Oracle GoldenGate

本文演示如何安装、设置和配置此产品以轻松实现 Oracle Database 10g 和 11g 之间数据的无缝复制還介绍了此产品的加速能力。

Oracle 于 2009 年收购了 GoldenGate我们可以看到在全球各行业超过 4,000 个解决方案中实施了 Oracle GoldenGate。该软件执行实时的、基于日志的更改数據捕获 (CDC)能够在异构数据库间以极低的延迟和很小的空间移动大量事务数据。

通常您部署 GoldenGate 捕获、数据泵和交付进程,并且可将这些进程蔀署在许多不同的操作系统和数据库上可根据目标数据库的需要,复制所有数据或部分数据当 Oracle GoldenGate 用于 Oracle 数据库时,可以复制数据操作语言 (DML) 囷数据定义语言 (DDL) 操作(目前只能在同类(不能在异类的)Oracle 版本间复制 DDL 操作。)

如上所述可以在所支持的同类或异类 Oracle Database 版本间移动数据,吔可以在 Oracle 数据库和非 Oracle 数据库间移动数据大多数情况下,可对数据进行筛选、映射和转换注意,如果启用了 DDL 支持(换言之如果使用 GoldenGate 进荇同类 Oracle Database 版本之间的 DDL 复制),则不支持数据筛选、映射和转换

Oracle GoldenGate 是以 DBA 为中心的,因此 DBA 很容易学会如何使用它其实现时间也是最少的 — 一些站点只用一个月的时间就完全付诸实现。

支持主动打开备用数据库以提供报表服务甚至在应用重做数据的同时也如此。这个特性非常棒可将生产报表和查询工作分流到备用数据库上。

我们应注意到已发布的 中指出,“由于 Oracle

这三个数据库的 SYS 和 SYSTEM 口令已设置为 hrpassword1用于测试目嘚。稍后可更改此口令

此演示的目的是在 HRPRD2 和 HRPRD3 这两个 Oracle 10g 数据库的 HR.EMPLOYEES 表之间建立单向复制。对第一个数据库中此表的 DML 更改应传给第二个数据库嘫后,我们将对这一复制进行增强可以将更改同时复制到 Oracle 11g 数据库 HRPRD1 中。其结果是对 HRPRD2 中该表的任何更新、插入和删除不仅将会成功更新 HRPRD3,吔会成功更新 HRPRD1

如果您想安装管理包,下载所有这些文件该管理包是一个安装您 Windows 服务器上的独立产品,该产品原名为 Oracle GoldenGate Director,它包含一个多層的客户端-服务器应用程序使组织可以轻松监视和管理其 Oracle GoldenGate 部署。

Oracle GoldenGate Veridata 软件作为服务器进行安装在不同平台上具有代理,它负责将一组数据與另一组数据进行对比以识别不同步的数据对比时无需停机。此对比可全天候进行可与大流量的复制同时进行。还可在不同平台间进荇数据对比

11g 数据库的复制。

发出一个系统请求 (SR)

在命令提示符处输入以下命令

为了在两个 Oracle 10g 数据库间建立复制,将这些变量进行如下设置:

另一种方法是用系统变量进行这些设置为此您可以在 Windows XP Professional 中使用:我的电脑..属性..高级..环境变量..系统变量。在这里添加新的系统变量并按洳上所述更改路径

服务。由于这是一个测试系统这么做可能没有问题。但在生产环境下您需要采取一种更自动化的方法(如采用脚夲化的方法)在脚本中设置这些变量并启动 Manager 服务。

您可以将 Oracle GoldenGate Manager 当作一个本地程序在命令窗口中运行也可以将它作为一个 Windows 服务安装以便在 Windows 启動时自动启动。我们建议使用后面这种方法

如果您希望将其作为一个本地命令运行,只需调用目录中的 Manager 执行文件(调用时带着一个参数攵件)即可命令语法为:

PARAMFILE 是必需的参数。因此您必须在 GGSCI 中创建一个参数文件:

此命令将在 C:\OGG10G\dirprm 目录中创建一个新的 mgr.prm 文件。在该文件中键入將用于运行 manager 进程的端口号然后保存该文件。

默认端口号为 7809无论您选择哪个端口号,请确保该端口号未被任何其他程序所使用并且没有任何防火墙限制因为 PORT 是 Manager 唯一需要的参数,所以必须指定该参数GGSCI 使用该端口将请求发送给 Manager 以启动进程,并且 Extract 进程也使用该端口进行各种操作

创建该参数文件之后,就可以在 Windows 命令提示符下启动 Manager 了如下所示:

该命令启动 Manager,并且显示图 3 所示的消息:

必须保持此窗口为打开状態以保持 Manager 运行。如果您注销该窗口将关闭,Manager 将停止运行

上文描述了手动启动 Manager 的方法,还有一种启动方法那就是将 Manager 作为自动启动的 Windows 垺务来安装。

在 Windows 集群环境下必须使用后面这种方法因为出现故障时只有服务可以自动切换到备用服务器上。在非集群系统中将 Manager 作为服務来安装是可选的方法但也是强烈建议的方法。

用以下方法为 Manager 服务指定一个不同的名称在 GGSCI 命令提示符处执行以下命令:

在出现的记事本編辑器中,选择新建一个文件(如果是首次这么做)然后输入以下代码并保存该 GLOBALS 文件:

新服务在 Windows 服务列表中显示为一个自动启动的服务(见图 5):

Manager 服务以本地系统帐户运行,也可配置为以特定帐户(使用用户名和口令选项)运行该用户名和口令可由 addservice 命令指定。现在可通過以下命令启动该服务:

还可使用 Install 程序将事件消息安装到 Windows 注册表中这样它们可通过 Windows Event Manager 显示。使用以下命令可完成此操作:

为此您至少需偠创建和配置一个 Extract 和 Replicat 组。在这些组中指定您想捕获和复制的数据

Extract 进程捕获发生的数据更改并将这些更改发送给目标服务器上的一个“线索”。在目标服务器上启动 Replicat 进程该进程负责进行实际的复制,它从线索中获取数据更改然后将这些更改应用到目标数据库中。

您还需偠为 Oracle GoldenGate Replication 准备数据库:在数据库级打开追加日志 功能为此,在以 SYSDBA 身份登录到数据库后使用以下命令:

您在这里指定了 TRANLOG这意味着事务(重做)日志成为数据源。BEGIN 后面可以是该日志中的一个时间戳以便从该时刻开始进行处理也可以是 NOW 以便立即开始处理。TRANLOG 还可以带有 EXTSEQNO 选项(某个 Oracle 偅做日志的序列号从该日志开始)和 EXTRBA 选项(该日志中的相对字节地址)。

注意Extract 组的名称只能有八位字符。如果进行以下指定则可获嘚完全帮助。

接下来我们要添加一个 RMTTRAIL 或 EXTTRAIL。前者用于远程计算机如果您在同一台本地计算机上建立复制,则建议使用后者我们将使用 EXTTRAIL,通过以下命令来创建它:

指定的文件名只能是两位字符因为在创建实际文件时,会在这两个指定的字符后追加一个数字后缀以产生实際文件名例如,当 EXTRACT 进程启动并且发生数据更改时会创建一个 C:\OGG10G\dirdat\et000001 文件作为提取文件。

RMTTRAIL 的命令语法与之相同如果您要使用 RMTTRAIL,只需用 RMTTRAIL 代替 EXTTRAIL主要差别体现在 extract 的参数文件中 — 下一步将创建此参数文件。使用 RMTTRAIL 时该参数文件将有更多参数用于描述远程主机和远程管理器端口号。

现茬我们来为 Extract 组 emp_ext 创建参数文件,如下所示:

在此文件中键入以下代码行:

如果您使用了 RMTTRAIL,则只需按下列行进行更改:

现在可使用以下命令启动 extract:

该进程的状态和有关信息如下所示:

还可查看有关该进程的详细信息:

只要有错误,extract 进程就会显示为 STOPPED 状态这种情况下需要进荇错误分析。

ggserr.log 文件包含事件信息例如:

也可通过以下方法查看这些事件:

这个特定错误指明存在数据库连接问题,您需要在监听器级进荇分析确保 Path 环境变量在最开始处包含了 Oracle Home bin 子目录。可能有其他的 TNS 错误它们可能会指明其他解决方法。

这指明 Extract 进程正在尝试以 sys 而不是 SYSDBA 身份登录只需在 Extract 的参数文件中将登录参数改为“system”即可。

在这里我们应注意在 Extract 参数文件中 login 行的末尾指定 SYSDBA 是不起作用的,尽管这么做对于 GGSCI 中嘚 DBLOGIN 命令(在下文中可看到此命令)确实会起作用

这指明 Manager 的参数文件 mgr.prm 中所提供的登录凭证可能存在问题。其结果是 Manager 没有启动

您还可能在 Extract 嘚报告文件中看到另一个错误。例如EMP_EXT.rpt 可能会有此类错误:

问题的解决方法显然是在数据库级启用追加日志功能。由于该功能已启用在夲例中将不会看到此错误。

现在转到目标数据库 HRPRD3在本例中该数据库位于同一服务器上。由于这也是一个 Oracle 10g 数据库您可以使用同一 Oracle GoldenGate for Oracle 10g 安装软件(在 C:\OGG10G 子目录中)和同一 Manager 服务。如果这个数据库位于另一台服务器上您需要在该服务器上安装适用于该数据库版本的相应

首先,使用 GGSCI 的 DBLOGIN 命令连接到该数据库这样以后发出的其他命令将在此数据库上运行。

注意DBLOGIN 正常运行,如下所示:

现在需要为要复制的 employees 表添加一个检查点表:

此表中保存的检查点指示 Replicat 进程的当前读写位置。这用于在进程需要重启时或者在服务器出现任何故障或网络停顿时防止数据丢失如果没有这一机制,将导致数据丢失另一个好处是,通过使用检查点多个 Extract 或 Replicat 进程可通过相同的一组线索进行读取。

对于以批处理模式运行的 Extract 和 Replicat 进程检查点不是必需的,因为这样的进程总是可以重启然而,在 Extract 和 Replicat 进程连续工作的情况下检查点是必需的。检查点通常保存在 dirchk 子目录的文件中但是对于 Replicat,可以选择在数据库的检查点表中保存检查点

如果您在 GLOBALS 参数文件中指定检查点表,则上面的命令可使鼡该文件中的规定这种情况下,只需这样来使用该命令:

现在可以添加 Replicat 组了具体如下所示,其中指定的 EXTTRAIL 正是在第一个数据库中建立 Extract 组時所使用的 EXTTRAIL这样,该 Replicat 组将以 Extract 组创建的线索为数据源即使用相同的线索:

编辑此 Replicat 组的参数文件,具体如下:

在新文件中输入以下内容:

稍候片刻再查看其状态如果立即查看,其状态可能显示为“stopped”看到状态为“running”后,查看详细信息执行 info all 命令显示所有正在运行的进程:

对于 Oracle 11g 数据库 home,按如下所示设置环境变量:

在该文件中键入以下代码行然后保存该文件。注意这里使用了不同的端口号并且 Manager 现在登录箌 HRPRD1 上。

现在可以启动 Manager 了下一步是使用 DBLOGIN 登录到 Oracle 11g 数据库,然后在此数据库中创建检查点表

现在,可以在数据库 HRPRD1 中创建第二个 Replicat 组了注意,峩们将使用和前面数据库 HRPRD3 所使用的完全相同的线索

这样,HRPRD2 的数据所写入到的同一个线索同时为两个数据库(HRPRD3 和 HRPRD1)、两个 Replicat 组所使用这相當棒。

在此文件中输入以下几行内容:

注意该文件中额外的参数如 HANDLECOLLISIONS 和 DISCARDFILE。这是为了对表中记录重复之类的错误进行处理我们已将这些参數作为选项放入此文件中,也可以将它们放入第一个 Replicat 组的参数文件中

HANDLECOLLISIONS 在源数据库活动时对初始数据加载进行自动错误处理。确保在初始加载完成后删除此参数DISCARDFILE 参数指示被删除的记录将保存在哪个文件中。

现在启动该 Replicat 组并查看其状态:

其状态显示为 stopped但 C:\OGG11G 目录下的任何日志攵件中都没有错误指示。

迫使错误显示出来的唯一方法是从命令提示符处运行 Replicat这可用于调试目的 — 错误(如果有的话)会显示在屏幕上洏不是写入报告文件中。但在 Oracle GoldenGate for Oracle 11g 版本中看上去需要通过这种方法来使 Replicat 运行起来,虽然我们认为这可能是测试服务器上的环境问题造成的使用的命令为:

此时,Replicat 进程已准备就绪我们可在屏幕上查看其状态。如果您打开一个新的命令窗口、启动 GGSCI 并查看其状态Replicat 进程会显示为 RUNNING。这样通过这种方式,Oracle Database 11g 中的复制开始工作

文件中额外的参数(如 HANDLECOLLISIONS 和 DISCARDFILE)是特意添加的,这是因为通过命令行运行 Replicat 进程时屏幕上曾显示出記录重复错误从下面的输出结果中可以看到这些错误,这些错误指示初始加载时出现的问题与重复的记录有关

通过进一步的分析发现,某个用户在 Oracle 11g 目标数据库中手动插入了记录而手动插入的数据与启动 Oracle GoldenGate 复制进程之后 插入到 Oracle 10g 源数据库中的数据相同。这就引发了记录重复从而导致重复问题。

解决此问题的办法是使用 HANDLECOLLISIONS 和 DISCARDFILE 参数然后重启该 Replicat 进程。DISCARDFILE 在出现被删除的记录时可提供更多信息在命令提示符处启动運行 Replicat 进程后,等待直到其通过线索完成运行并根据需要删除记录

然后在命令窗口按 Ctrl-C 停止该 Replicat 进程。这将显示:

现在可以取消 HANDLECOLLISIONS 参数了可在該参数行之前添加“—”将其注释掉。然后在命令行重启该 Replicat 进程由于记录重复问题已得到解决,该进程现在可以正常工作以后对源数據库进行任何更改时,该进程都可将这些更改复制过来

从图 6 的命令行窗口中可以看到 HRPRD1、HRPRD2 和 HRPRD3 这三个数据库的 HR.EMPLOYEES 表中的记录。这三个数据库都囸好有 107 条记录在第三个窗口中可看到使用的 SELECT 命令。

三个数据库中的员工记录

对所有三个数据库再次运行 SELECT其结果显示,即刻发生了到目標数据库的复制所有数据库现在都有 109 条记录(如图 8 所示)。这样使用 Oracle GoldenGate 到 Oracle 10g 和 Oracle 11g 的复制成功。

c:\OGG11G\dirprm\emp_rep.prm”)才会如此而从 GGSCI 启动 Replicat 进程仍会使其滞留于 stopped 狀态。这可能是由于我们的测试服务器存在环境错误我们应记住,如果从命令提示符处启动就不会有错误进程会正常运行。

然而随著此类进程数量的增加,对内存的占用也会增加 — 每个 Extract 和 Replicat 进程需要大约 25 至 55 MB 内存对内存的占用实际上可能更高,这取决于并发事务的数量囷事务大小这始终是个问题。

我们在这里建立的是单向复制还可以建立双向多主复制(对多站点更新的复制)。在这样的安装环境中Oracle GoldenGate 通过研究和了解两个站点何时更新相同的记录来解决冲突。您可以设置一些冲突解决规则(如时间戳或者哪一方始终优先等等),您吔可以就如何解决冲突设置用户退出机制

即使目标数据库的表中没有唯一键时,Oracle GoldenGate 也能复制数据这对所有支持的数据库都是可行的,条件是您能够指定那些是唯一的列或者使用整行作为一个键 — 因为任何删除或更新操作都需要某种唯一性

目前,Oracle GoldenGate 不能复制双字节数据但計划在未来的版本中支持这种复制。现在对双字节数据的处理可传递给一个备用数据库以用于灾难恢复。

的安装要求该信息库所使用的數据库口令必须至少为八位字符其中至少包含一个数字和一个字母数字字符。

在 Oracle GoldenGate Manager 参数文件中可以指定其他参数可通过这些参数来允许動态端口分配、在 Manager 启动时自动启动复制进程(如 Extract 和 Replicat)、建立对所有线索的集中维护(清除)。

用于实时报表、实时数据分布、实时数据仓儲、维护实时备用数据库和主-主高可用性等各种目的以及如何配置 DDL 同步。在某个数据库要升级但要求停机时间几乎为零的情况下,Oracle GoldenGate 也非常有用 — 您只需建立从旧的数据库版本到新的数据库版本之间的 Oracle GoldenGate 复制然后在切换时将您的所有客户端切换为指向新数据库即可。这会昰一个极好的选择例如,如果您准备将现有数据库移到 Oracle Exadata V2 数据库机上以便将您的所有数据库整合到世界上最快的数据库机。

另外要了解使用 Oracle Enterprise Manager Grid Control 进行 Oracle Data Guard 的安装、管理(包括倒换和故障切换)和监视如何能够节省大量的时间和资源,请阅读作者最近发表的另一篇文章“


  摘要:Oracle Exadata将智能存储软件和标准化硬件相结合提供了高性能及高稳定性的数据库存储服务。对其配置及有特色的功能进行了介绍在使用及深入研究之后,通过对数據库整合及其参数配置性能优化的方式提高了其整体运行效率。
  关键词:Oracle Exadata;数据库整合;性能优化
  中图分类号:TP392
  文献标识碼:A 文章编号:(2013)
  随着数据库系统规模的增加传统的系统架构的瓶颈问题越来越突出。首先在存储层随着长时间的运行会带来數据分布不均及IO瓶颈,其次在网络层由于带宽的不足会导致大量数据无法快速传达最后在服务器层由于接收过多的数据处理,内存优势無法发挥具体而言就是传统的存储设备不知道数据库驻留在存储设备上,因此无法提供任何数据库识别 I/O 或 SQL 处理数据库请求行或列时,從存储返回的是数据块而非数据库查询的结果集传统的存储不具备数据库智能来识别实际请求的特定行或列。因此当数据库查询处理 I/O請求时,传统的存储将消耗带宽返回大量与执行的数据库查询不相关的数据。
  Oracle Exadata其实是一台带有CPU、内存及操作系统(Oracle Enterprise Linux)的服务器当數据库需要查询时,Exadata可对数据进行筛选然后将结果传送到服务器内存,而不是将结果转移到存储系统中从而大量减少存储系统的读写。
  Exadata是一个模块化产品每一个模块称为存储单元,增加存储单元可以提高这个系统的吞吐量并称为一种大容量并行的存储网格,增加存储单元可以增加传输管道的数量Oracle Exadata智能存储服务器通过在存储部件中实现数据密集处理,并进行表及索引的扫描与数据过滤无关,從而减轻服务器及带宽的负载提高工作效率。
  Oracle Exadata可进行仅被请求的行返回到数据库服务器的谓词过滤仅被请求的列返回到数据库服務器的列过滤扫描,采用Bloom过滤器实施的用于确定某行是否为预期结果的联合扫描针对大型数据库,大量超过所需的行读取到内存会产苼过多的数据传输,不仅消耗带宽而且影响应用程序的吞吐量和响应时间而采用智能扫描技术能够避免这种情况产生。
  智能扫面不受优化器控制但他受查询优化结果的影响,其只能用于完整的表或索引扫描且只能直接路径读取。另外使用智能扫描必须在数据库Φ启动,并存储在相应的磁盘组中
  1.3 智能闪存高速缓存
  高速缓存主要用于存放经常被访问的对象,适用于缓存重复的随机读取其允许按应用程序表优化。智能闪存高速缓存了解各种类型的数据库的读写可以缓存经常访问的数据和索引块,缓存控制文件及头文件嘚读取和写入但Oracle Exadata的高速缓存不能存放数据泵、备份文件、镜像副本及数据格式设置等。
  2 数据库整合目的
  数据库整合的基本原则昰所整合的数据库必须具有相似的可用性和计划维护目标其对系统的要求、安全性及边界组织相近。数据库整合的目的主要有以下几点:①建立统一标准的数据格式并具有相应的工作规范及管理流程,便于数据交换;②降低数据库使用费用提升运转效率;③最大限度哋减少网络及硬件的空闲资源;④采用数据安全措施,确保机密数据的使用
  传统的数据库整合方式大致可分为三类:①在一台物理垺务器上托管多台虚拟服务器;②在一台服务器上托管多个应用程序;③在一个应用程序中支持更多的用户使用。数据库的整合必须具有楿似的可用性以及计划维护目标的数据库由于具有一定的数据风险,所以在操作时必须注意相关硬件性能、系统要求及组织边界
  3.1 數据库分组
  根据数据安全级别及应用模式可将数据库分为3组:①关键数据组包含核心业务数据、生产业务数据及面向客户类数据;②標准数据组主要指非关键的生产数据;③非生产数据组指相关开发和测试数据。在每个数据组中创建一个数据库环境(POD)每个POD调用1~2台Exadata Database Machine垺务器来整合数据库,对于需要两台以上服务器的数据库应具有一个专用的POD
  3.2 整合存储及操作系统参数配置
  首先给每个POD分配一个囲享的Oracle Exadata存储网格,建立磁盘分组:DATA组用于存放数据库文件;RECO组用于存放快速恢复区(Fast Recovery Area简称FRA);DBFS_DG用于存放群集共享文件和数据库文件系统(Database FileSystem,简称DBFS)其次再将所有数据使用设置为高冗余,跨所有单元和磁盘对各个磁盘组进行条带化然后再使用IORM管理和分配I/O资源,并将COMPATIBLE.RDBMS 磁盘組属性中将数据库软件版本设置为最低这样每个数据库环境采用统一的标准配置,便于数据库管理而且平衡系统资源提高可用性和设備性能。
  在操作系统参数设置中共享内存段数(SHMMNI) 设置为大于数据库的数量,最大共享内存段大小(SHMMAX) 设置为物理内存大小的85%系統信号的最大总数(SEMMNS) 设置为大于所有数据库进程的总和,信号集内信号的最大数量(SEMMSL) 设置为大于任何一个数据库中的最大进程数
  3.3 其它资源配置
  无论使用OLTP或是数据仓库方式每台服务器上所有数据库占用内存总和应小于服务器物理内存大小的75%,使用实例锁定防止單个数据库使用过多的CPU并通过数据库资源管理器控制每个数据库中CPU的分配。配置好I/O资源及进程管理使用连接池管理应用程序连接,通過连接速率限制器防止连接风暴的产生   4 Exadata数据库性能优化
  4.1 闪存及索引的优化
  每个Oracle Exadata 均包含384 GB 的高性能闪存,其智能闪存的主要用途是默认使用大多数可用的内存对频繁访问的数据进行加速,采用自动管理方式以实现效率最大化基于闪存的永久存储,由于价格较高所以需要有计划有效率地使用从而为特定的应用程序提供额外的附加优势。
  Oracle Exadata自带智能扫描功能若其使用在可接受范围之内则可刪除不必要的索引,从而提高数据操纵语言命令(Data Manipulation Language简称DML)的性能,同时节省存储所需空间
  4.2 调整ASM分配单元大小
  Oracle Exadata的利用可以大幅提高数据库的安全性、可用性及可伸缩性。通过智能扫描的方式将大量的查询及数据挖掘工作分流到存储服务器提高了查询性能,通过讀写闪存数据加快了查询响应并提高吞吐量实现了数据库整合和性能的优化,使大数据量的读写及查询效率得到了质的飞跃
  [2] 李学強,罗省贤.基于ORACLE系统的数据库性能优化设计[J].北京印刷学院学报2006(6).
  [3] 廉彦平.Oracle数据库性能优化策略[J].科技信息:学术研究,2008(29).
  [4] 唐小噺李家深.基于Oracle数据库的图书馆管理系统性能优化探索[J].企业科技与发展,2010(8).
  [5].王雷曾蕴波,王璐.Oracle数据库的性能调整与优化方法探析[J].航天器工程2008(6).
  [6] 杨正校,杨阳.基于企业环境的ORACLE数据库性能优化[J].苏州市职业大学学报2012(2).
  [7] 袁慧颖.ORACLE数据库性能优化[J].海军总医院学報,2007(3).
  [8] 张文峰陈云华,彭小斌.浅谈ORACLE数据库的性能优化[J].科技情报开发与经济2007(18).
  (责任编辑:余 晓)

我要回帖

更多关于 数据集成时应解决的问题不包括 的文章

 

随机推荐