使用 Oracle Real Application Clusters 作为 AWS DMS 的数据

使用 Oracle Real Application Clusters 作为 AWS DMS 的数据


使用 Oracle Real Application Clusters 设定 AWS DMS 源端

关键要点

AWS 数据库迁移服务 (DMS) 是一项托管迁移和复制服务,能够快速、安全地将数据库迁移至 AWS,确保最低的停机时间和零数据丢失。Oracle Real Application Clusters (RAC) 支持跨多个服务器运行 Oracle 数据库,提高可用性和水平扩展性。配置选项 有三种方法设置 Oracle RAC 作为 AWS DMS 的源端点,包括使用 Amazon Route 53 解析器、RAC SCAN IP,或使用 AWS CLI 创建复制实例来进行本地 DNS 配置。

在本篇文章中,我们将探讨如何将 Oracle RAC 配置为 AWS DMS 的源。使用 Oracle RAC 的高可用性功能,可以实现更可靠的迁移。不过,Oracle RAC 拥有多个主机名和 IP 地址,可能会造成在 AWS DMS 中配置时的困惑。

解决方案概述

有三种方法可以将 Oracle RAC 配置为源端点:

使用 Amazon Route 53 解析器 和 RAC 单一客户端访问名称 (SCAN)。使用 RAC SCAN IP。创建一个复制实例,使用 本地 DNS 进行 RAC SCAN 名称解析。

接下来的部分将逐步讨论这三种选项,选择最适合您用例的方法。

下图展示了一个由两个节点组成的 RAC 数据库,配置了三个 SCAN IP 和 SCAN 名称。AWS DMS 通过 Amazon Route 53 将 SCAN 名称解析到三个 IP 地址,并使用 SCAN 侦听器连接到源 RAC 数据库。

为说明如何配置端点,我们使用以下表格中所示的 Oracle RAC 配置。

SCAN 名称scanclusterSCAN 1 IPv4 VIP1003176SCAN 2 IPv4 VIP1003253SCAN 3 IPv4 VIP100384

前提条件

在进行设置前,您需完成以下几个前提步骤:

创建一个具有适当 权限 的 Oracle 用户,使其可被 AWS DMS 访问。以本例为例,创建名为 dmsuser 的用户,并授予以下权限,尤其是针对 Oracle RAC 的权限: sql GRANT SELECT ON gvtransaction TO dmsuser

确保本地防火墙允许 AWS DMS 复制实例的 IP 与 RAC SCAN 主机或 SCAN IP 建立连接。有关更多信息,请参考设置复制实例的网络配置。

如果您希望将迁移前评估作为迁移的一部分,请为 Oracle 用户授予以下权限: sql GRANT SELECT ON gvparameter TO dmsuser GRANT SELECT ON vinstance TO dmsuser GRANT SELECT ON vversion TO dmsuser GRANT SELECT ON gvASMDISKGROUP TO dmsuser GRANT SELECT ON gvdatabase TO dmsuser GRANT SELECT ON dbadblinks TO dmsuser GRANT SELECT ON gvlogHistory TO dmsuser GRANT SELECT ON gvlog TO dmsuser GRANT SELECT ON DBATYPES TO dmsuser GRANT SELECT ON DBAUSERS TO dmsuser GRANT SELECT ON DBADIRECTORIES TO dmsuser

AWS DMS 处理 Oracle 作为源进行变更数据捕获 (CDC) 时,有两种读取重做日志的方法:Oracle LogMiner 和 AWS DMS 二进制阅读器。LogMiner 是一个 Oracle API 用于读取在线重做日志和归档重做日志文件,而二进制阅读器则直接读取和解析原始重做日志文件。

AWS DMS 默认使用 LogMiner。LogMiner 通常较慢,并且可能会对源数据库造成更高的资源消耗,从而导致源延迟。如果归档生成大小超过每小时 20 GB,建议使用二进制阅读器。使用 Oracle RAC 作为源时,我们也推荐使用二进制阅读器。

若要使用二进制阅读器,请使用以下附加连接属性 (ECA):sqluseLogMinerReader=NuseBfile=Y

对于二进制阅读器,AWS DMS 将从 Oracle 自动存储管理 (ASM) 实例或数据库集群文件系统读取归档和重做日志文件,这取决于 Oracle 归档日志位置。

使用 Route 53 解析器和 RAC SCAN 名称

在此选项中,您将使用 Route 53 解析器和 RAC SCAN 名称来配置 AWS DMS 端点。Route 53 解析器帮助您解析源 Oracle RAC 系统的本地 DNS 记录。配置完成后,您可以通过 AWS DMS 复制实例的 VPC 解析 SCAN IP。请按照以下步骤执行:

配置 Route 53 解析器。在与 AWS DMS 复制实例相同的 VPC 和子网的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上运行 nslookup 命令,以确保 DNS 解析正常工作。

在 AWS DMS 控制台中,导航至“迁移数据”,选择“端点”。选择“创建端点”。

在“端点标识符”中输入端点名称。选择“Oracle”作为源引擎。对于“访问端点数据库”,选择“手动提供访问信息”或选择 AWS Secrets Manager。提供其余详细信息,包括服务器名称 (SCAN 名称)、端口、用户名和密码、SSL 模式以及 SID 或服务名称。

您也可以为服务器名称使用任意名称,并在附加连接属性部分中指定 SCAN 名称。ECA 始终覆盖在源引擎下提到的参数。

要添加 ECA,请使用以下代码:

sqlserverServer=scanclusterxxxx1521/orcla

或者使用以下代码:

sqlserver=(DESCRIPTION=(CONNECTTIMEOUT=8)(ENABLE=BROKEN)(LOADBALANCE=ON)(FAILOVER=ON)(ADDRESSLIST=(ADDRESS=(PROTOCOL=tcp)(HOST=scanclusterxxxx)(PORT=1521)))(CONNECTDATA=(SERVICENAME=ORCLA)))

测试端点连接。

使用 RAC SCAN IP

在此选项中,您无需配置 Route 53 解析器,而是使用 RAC SCAN IP。请按以下步骤进行操作:

在 AWS DMS 控制台中,导航至“迁移数据”,选择“端点”。选择“创建端点”。在“端点标识符”中输入端点名称。选择“Oracle”作为源引擎。对于“访问端点数据库”,选择“手动提供访问信息”。在“服务器名称”中输入名称。提供其余详细信息,包括端口、用户名和密码、SSL 模式以及 SID 或服务名称。在“附加连接属性”中指定 SCAN IP。

下面是一个连接字符串示例。在此示例中,您指定源 RAC 系统的 SCAN IP,并指定源数据库的端口和服务名称:

sqlserver=(DESCRIPTION=(CONNECTTIMEOUT=8)(ENABLE=BROKEN)(LOADBALANCE=ON)(FAILOVER=ON)(ADDRESSLIST=(ADDRESS=(PROTOCOL=tcp)(HOST=100384)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=1003176)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=1003253)(PORT=1521)))(CONNECTDATA=(SERVICENAME=ORCLA)))

测试连接。

创建使用本地 DNS 的复制实例

使用以下 AWS CLI 命令创建使用本地 DNS 服务器的复制实例:

bashaws dms createreplicationinstance replicationinstanceidentifier myreplinstance replicationinstanceclass dmst2micro allocatedstorage 50 dnsnameservers DNS IP1DNS IP2DNS IP3DNS IP4

为复制实例访问您本地源或目标数据库所支持的自定义 DNS 名称服务器列表。此列表将覆盖复制实例使用的默认名称服务器。您可以指定最多四个本地 DNS 名称服务器的逗号分隔网际地址。

复制 VPC 会将名称解析请求转发到本地 DNS 服务器,并解析 SCAN IP。有关如何配置本地 DNS 解析的更多信息,请参见设置单账号 AWS 环境中混合网络的 DNS 解析 指南。

配置 ASM 以在 AWS DMS 上实现高可用性

在 Oracle RAC 中,自动存储管理 (ASM) 具有多个实例,您可以连接到任何 ASM 实例。但是,为实现高可用性,您需要在连接字符串中配置多个 IP 或使用 SCAN 名称。

要确定 ASM 实例是否已使用 SCAN 侦听器注册,请选择任一 SCAN 侦听器并检查侦听器的状态。例如:

bashlsnrctl status LISTENERSCAN2

以下输出显示 ASM 实例未注册到 SCAN 侦听器:

plaintextListening Endpoints Summary(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENERSCAN2))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=1003253)(PORT=1521))) Services Summary Service ORCLA has 2 instance(s)Instance ORCL1 status READY has 1 handler(s) for this serviceInstance ORCL2 status READY has 1 handler(s) for this serviceThe command completed successfully

如果 ASM 实例未注册,请使用具有 sysasm 角色的用户连接到 ASM 实例并运行以下命令:

sqlSQLgt show parameter remotelistener

如上所示,remotelistener 尚未设置。使用以下命令将 ASM 实例注册到 SCAN 侦听器:

sqlalter system set remotelistener=ltscan namegtltportgt

例如:

sqlSQLgt alter system set remotelistener=scancluster1521SQLgt alter system register

通过检查任一 SCAN 侦听器的状态确认 ASM 实例已注册。例如:

bashlsnrctl status LISTENERSCAN2

将会得到如下输出:

plaintextListening Endpoints Summary(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENERSCAN2))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=1003253)(PORT=1521))) Services Summary Service ASM has 2 instance(s)Instance ASM1 status READY has 1 handler(s) for this serviceInstance ASM2 status READY has 1 handler(s) for this serviceService ORCLA has 2 instance(s)Instance ORCL1 status READY has 1 handler(s) for this serviceInstance ORCL2 status READY has 1 handler(s) for this serviceThe command completed successfully

现在配置 ECA asmserver:

sqlasmuser=dmsasmasmserver=scanclusterxxxx1521/ASM

另外,可以使用以下连接字符串,将 AWS DMS 的重做读取分布到 ASM 节点:

sqlasmserver=(DESCRIPTION=(CONNECTTIMEOUT=8)(ENABLE=BROKEN)(LOADBALANCE=ON)(FAILOVER=ON)(ADDRESSLIST=(ADDRESS=(PROTOCOL=tcp)(HOST=100384)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=1003176)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=1003253)(PORT=1521)))(CONNECTDATA=(SERVICENAME=ASM)))

啊哈加速器app

提供 ASM 密码时,请在您之前输入数据库密码的地方,输入 ASM 密码。

这两个密码应以逗号分隔,如下所示:

sqloracleuserpasswordasmuserpassword

使用以下 ECA 以提高从 ASM 的归档/重做日志传输性能:

sqlparallelASMReadThreads=6readAheadBlocks=150000 asmUsePLSQLArray=true

parallelASMReadThreads 的最大允许值为 8,readAheadBlocks 的最大允许值为 200000。

此设置允许 AWS DMS 在每个单一读取线程的 ASM 层缓冲 50 次读取,同时使用 parallelASMReadThreads 属性控制线程数量。当您设置此属性时,AWS DMS 的二进制读取器将使用匿名 PL/SQL 块捕获重做数据,并将其作为大型缓冲区返回到复制实例。这减少了对源的往返次数。此设置可以显著提高源捕获性能,但会导致 ASM 实例上的 PGA 内存消耗增加。

清理

如果您不再需要使用此端点,请完成以下步骤以清理您的资源:

使用 Oracle Real Application Clusters 作为 AWS DMS 的数据删除 复制任务。删除 端点。删除 Route 53 记录。

总结

在本文中,我们演示了如何在使用 Oracle RAC 作为源时配置 AWS DMS。我们概述了前提条件,并探讨了设置源端点的可用选项。

如您有任何意见或问题,请在评论区留言。

作者简介

Nagarjuna Paladugula是亚马逊 AWS 的高级云支持工程师,专注于 Oracle、Amazon RDS for Oracle 及 AWS DMS。他在不同数据库技术领域拥有

2026-01-27 13:03:20

优先考虑员工福祉:一种结合生成性人工智能和 Amazon SageMaker Canvas 的创新方
  • 2026-01-27 12:33:26

员工心理健康优先:利用生成式人工智能与 Amazon SageMaker Canvas 的创新方法文章重点关键要点在当今快节奏的企业环境中,员工心理健康愈加重要。利用 Amazon SageMaker...

利用人工智能的力量推动公平的气候解决方案:AI公平挑战 机器学习博客
  • 2026-01-27 13:18:04

利用人工智能推动公平的气候解决方案关键要点气候危机是当今世界面临的最大挑战之一,尤其影响脆弱群体。“AI公平挑战:气候行动、性别与健康”旨在利用先进的AI和云技术,推动现实世界中的积极变化。该挑战分为...