

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 同构数据库迁移工具
<a name="homogeneous-migration-tools"></a>

**Notice**  
自 2024 年 4 月 30 日起，VMware Cloud on AWS 不再由其渠道 AWS 合作伙伴转售。服务将继续通过 Broadcom 提供。我们鼓励您联系您的 AWS 代表了解详情。

有许多工具和技术可用于数据迁移。根据您的数据库大小、一致性、本地环境与之间的网络连接带宽以及允许的数据库迁移时间 AWS，您可以分单个阶段或多个阶段执行迁移。下表列出了工具和信息，可帮助您选择最能满足您需求的选项。


|  |  |  |  | 
| --- |--- |--- |--- |
| **迁移工具** | **数据库大小** | **支持** | **推荐用于** | 
| [Oracle SQL 开发人员](#oracle-sql-developer)（数据库复制功能） | 最大 200 MB | Amazon RDS Amazon EC2 | 包含任意数量对象的小型数据库。 | 
| [Oracle SQL\*Loader](#oracle-sql-loader) | 最高 10 GB | Amazon RDS Amazon EC2 | 包含有限数量对象的中小型数据库。 | 
| [Oracle 导出和导入实用程序](#oracle-export-import) | 最高 10 GB  | Amazon RDS Amazon EC2  | 包含大量对象的中小型数据库。 | 
| [Oracle Data Pump](#oracle-data-pump) | 最大 20 TB | Amazon RDS Amazon EC2 | 任何大小为 10 GB — 20 TB 的数据库的首选方法。 | 
| [AWS DMS](#homogeneous-tools-dms) | 任何大小 | Amazon RDS<br />Amazon EC2<br />  | 迁移停机时间最短。数据库大小受带宽限制。您可以 AWS DMS 与 Oracle Data Pump 一起使用来迁移大型数据库。 | 
| [甲骨文 GoldenGate](#oracle-goldengate) | 任何大小 | 亚马逊 RDS 亚马逊 EC2 VMware Cloud 开启 AWS<br />  | 迁移停机时间最短。与 Oracle Data Pump 配合使用以进行大型数据库迁移。 | 
| [Oracle Data Guard](#oracle-data-guard) | 任何大小 | 亚马逊 RDS 定制亚马逊 EC2 VMware Cloud 开启 AWS | 迁移停机时间最短。与 Oracle RMAN 一起使用，可在初始数据传输后复制更改。 | 
| [Oracle RMAN](#oracle-rman) | 任何大小 <br />  | Amazon RDS Custom Amazon EC2<br />开启 VMware AWS | 超过 2 TB 的数据库，或者数据库备份已在 Amazon Simple Storage Service (Amazon S3) 中。  | 
| AWS Application Migration Service | 任何大小 | Amazon EC2 | 快速复制，割接期间的停机时间最短。有关更多信息，请参阅[应用程序迁移服务文档](https://docs.aws.amazon.com/mgn/index.html)。 | 
| [VMware HCX](#vmware-hcx) | 任何大小 | 开启 VMware AWS | HCX vMotion 允许一次性在线或离线迁移单个虚拟机 (VM)，无需停机。  | 

下面的小节提供了关于每个工具的更多信息。

## Oracle SQL Developer
<a name="oracle-sql-developer"></a>

[Oracle SQL Developer](https://docs.oracle.com/en/database/oracle/sql-developer/index.html) 是 Oracle 提供的免费 GUI 工具，用于数据操作、管理、开发和管理。该 Java-based 工具适用于微软 Windows、Linux 或 macOS。您可以使用数据库复制功能将小型数据库迁移到 AWS，其中数据的总大小低于 200 MB。源数据库和目标数据库之间的数据传输直接通过网络完成。要使用此选项，您需要在源数据库和目标数据库之间建立可靠的网络连接。此外，请记住，此方法不会在传输过程中对数据进行加密。

Oracle SQL Developer 支持 Amazon RDS for Oracle 和 Amazon EC2 上的 Oracle 数据库。

## Oracle SQL\*Loader
<a name="oracle-sql-loader"></a>

[Oracle SQL\*Loader](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-sql-loader.html) 是 Oracle 提供的批量数据加载实用程序，用于将数据从外部文件加载到数据库中。SQL\*Loader 包含在完整的 Oracle 数据库客户端二进制文件中。您可以将 SQL\*Loader 用于对象数量有限的 10 GB 以下的中小型数据库。由于这是一种基于架构的方法，因此它涉及从源数据库中单独导出特定的架构，然后将其加载到目标数据库中。如果数据库中有多个架构，则必须对每个架构重复该过程。

Oracle SQL\*Loader 支持 Amazon RDS for Oracle 和 Amazon EC2 上的 Oracle 数据库。

## Oracle 导出和导入
<a name="oracle-export-import"></a>

[Oracle 导出和导入实用程序](https://docs.oracle.com/cd/B28359_01/server.111/b28300/preup.htm#BABFHFIJ)可帮助您迁移小于 10 GB 且不包含二进制浮点和双精度数据类型的数据库。导入过程会创建架构对象，因此，您无需事先运行脚本来创建他们。这使得该过程非常适合具有大量小表的数据库。

您可以将此工具用于 Amazon RDS for Oracle 和 Amazon EC2 上的 Oracle 数据库。

## Oracle Data Pump
<a name="oracle-data-pump"></a>

[Oracle Data Pump](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump.html) 是 Oracle 导出和导入的增强版。此实用程序用于从或向 Oracle 数据库导出和导入数据和元数据。可以在整个数据库、选定架构、表空间或数据库对象 export/import 上运行 Data Pump。对于大小在 10 GB 到 20 TB 之间的大型数据库 AWS，建议使用 Data Pump 向其迁移数据。它允许高度的并行性、灵活的数据提取选项和可扩展的操作，从而支持将数据和元数据从源数据库高速移动到目标数据库。在将数据导出到数据转储文件时，Oracle Data Pump 还支持加密和压缩。 

您可以将此工具用于 Amazon RDS for Oracle 和 Amazon EC2 上的 Oracle 数据库。您还可以使用 Oracle 数据泵 AWS DMS 和 Oracle GoldenGate 来处理大型数据库的初始数据传输。

对于 Amazon RDS for Oracle，使用 Oracle Data Pump 导出实用程序将数据导出到转储文件后，Oracle Data Pump 导入实用程序要求数据文件在数据库服务器实例中可用，才能将其导入数据库。您无法直接访问 Amazon RDS 数据库实例中的文件系统，因此您需要使用以下选项之一将转储文件传输到 Amazon RDS：
+ 在两个数据库之间使用数据库链接。本过程使用 Oracle Data Pump 和 Oracle [DBMS\_FILE\_TRANSFER](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_FILE_TRANSFER.html) 包。它在源（本地）Oracle 数据库和目标 Amazon RDS for Oracle 数据库之间创建数据库链接。此选项要求源数据库和目标数据库之间的带宽连接更高；我们建议您使用[AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)。仅建议小型数据库使用此选项。 有关更多信息，请参阅 Amazon RDS 文档中的[使用 Oracle Data Pump 导入数据和数据库链接](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Procedural.Importing.DataPump.html#Oracle.Procedural.Importing.DataPump.DBLink)。
+ 使用 Amazon S3 存储桶。Amazon RDS for Oracle 支持 Amazon S3 集成。当您有大型数据转储文件并且数据库大小以 TB 为单位时，建议使用此选项。然后，您可以使用 AWS Direct Connect （如果您的数据大小介于 10 GB 到 5 TB 之间）或 AWS Snowball （如果您的数据大小超过 5 TB）将本地数据转储文件复制到 S3 存储桶，具体取决于数据库所需的迁移时间。

将数据转储文件上传到 Amazon S3 后，可以将其下载到目标 Amazon RDS for Oracle 数据库实例上的 DATA\_PUMP\_DIR 目录，然后将数据导入数据库实例。有关更多信息，请参阅 Amazon RDS 文档中的[使用 Oracle Data Pump 和 Amazon S3 存储桶导入数据](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Procedural.Importing.DataPump.html#Oracle.Procedural.Importing.DataPump.S3)。

借助 Oracle Data Pump，您可以逐个架构分阶段迁移更大的数据库。您可以迁移到不同版本的 Oracle 数据库软件，也可以迁移到具有不同硬件和软件配置的平台。

## AWS DMS
<a name="homogeneous-tools-dms"></a>

[AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/) 是一项托管服务，可帮助您 AWS 轻松安全地将数据移入和移出。 AWS DMS 支持大多数商用和开源数据库，并促进同构和异构迁移。 AWS DMS 提供一次性完整数据库拷贝和变更数据捕获 (CDC) 技术，以保持源数据库和目标数据库同步，并最大限度地减少迁移过程中的停机时间。

AWS DMS 可以对小型 (10-20 GB) 到中型 (100-200 GB) 大小的数据库执行 Oracle 数据库架构的完整复制。对于非常大的数据库，您可以使用 Oracle 数据泵将数据迁移到 Amazon RDS 或 Amazon EC2，然后使用 AWS DMS CDC 功能以最少的停机时间进行持续复制。同步数据后，您可以切换到目标数据库。

下图显示了如何使用 Oracle Data Pump 和 AWS DMS 一起将本地数据库迁移到 Amazon RDS for Oracle，同时最大限度地减少停机时间。Oracle Data Pump 导出实用程序将架构导出到数据库转储文件，然后使用 AWS Direct Connect 或 AWS Snowball （取决于数据库的大小、网络带宽和允许的迁移时间）将这些文件传输到 Amazon S3。将转储文件加载到 Amazon S3 中后，您可以将文件上传到 Amazon RDS for Oracle 数据库实例。然后，Oracle Data Pump 导入实用程序将数据导入到 Amazon RDS for Oracle， AWS DMS CDC 会将所有更改从源数据库复制到目标 Amazon RDS for Oracle 数据库。

![使用 Oracle 数据泵并将本地 Oracle 数据库迁移 AWS DMS 到 Amazon RDS](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/migration-oracle-database/images/oracle-migration-data-pump-with-dms.png)


有关使用 AWS DMS 迁移 Oracle 源数据库的更多信息，请参阅 AWS 文档 AWS DMS中的[使用 Oracle 数据库作为源](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)。

## 甲骨文 GoldenGate
<a name="oracle-goldengate"></a>

[Oracle GoldenGate](https://docs.oracle.com/en/middleware/goldengate/index.html) 是一种在源数据库和一个或多个目标数据库之间复制数据的工具，可最大限度地减少停机时间。您可以使用它来构建高可用性架构，并执行实时数据集成、事务性更改数据捕获、异构环境中的复制以及连续数据复制。

您可以在源环境 GoldenGate 中通过本地服务器运行 Oracle。但是，我们建议您从充当 GoldenGate 中心的 EC2 实例安装和运行此工具， AWS 以提高性能。您可以有多个 GoldenGate 集线器，尤其是在将数据从一个源数据库迁移到多个目标时。您可以 GoldenGate 搭配 Amazon RDS 进行 Active-Active 数据库复制、零停机迁移和升级、灾难恢复、数据保护以及区域内和跨区域复制。有关详细信息，请参阅 AWS 文档中的将 [Oracle GoldenGate 与 Amazon RDS 配合使用](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.OracleGoldenGate.html)。

下图显示了如何 GoldenGate 结合使用 Oracle Data Pump 和 Oracle 将本地 Oracle 数据库迁移到 Amazon RDS for Oracle。



![使用 Oracle 数据泵和 Oracle GoldenGate 将本地 Oracle 数据库迁移到 Amazon RDS](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/migration-oracle-database/images/oracle-migration-goldengate-hub.png)


甲骨文 GoldenGate 需要与甲骨文分开的许可证。

甲骨文 GoldenGate 支持在亚马逊 EC2 或 VMware Cloud 上运行的 Amazon RDS for Oracle 数据库和在 VMware Cloud 上运行 AWS的

## Oracle Data Guard
<a name="oracle-data-guard"></a>

[Oracle Data Guard](https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/introduction-to-oracle-data-guard-concepts.html) 提供了一组用于创建、维护、监控和管理 Oracle 备用数据库的服务。使用 Oracle Recovery Manager (RMAN) 和 Oracle Data Guard，您可以将整个 Oracle 数据库从本地迁移到 Amazon EC2，同时最大限度地减少停机时间。使用 RMAN，您可以使用复制数据库方法将主数据库恢复到 Amazon EC2 上的目标备用数据库。 backup/restore 然后，您可以使用 Oracle Data Guard 将目标数据库配置为物理备用数据库，从而允许将所有 transaction/redo 数据从主本地数据库更改为备用数据库。

当主本地 Oracle 数据库与 EC2 实例上的目标备用数据库同步时，您可以切换到目标数据库，目标数据库会将其转换为读写数据库。然后将应用程序连接指向新的主数据库。使用此选项，您可以最大限度地减少停机时间，并获得数据库的精确物理副本 AWS。迁移过程如下图所示。



![Oracle 主数据库正在复制到 AWS Cloud 私有子网中的 Oracle 备用数据库。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/migration-oracle-database/images/oracle-migration-data-guard.png)


Oracle Data Guard 支持在亚马逊 EC2、亚马逊 RDS Custom 和 VMware Cloud 上运行的 Oracle 数据库 AWS。

## Oracle RMAN
<a name="oracle-rman"></a>

[Oracle Recovery Manager (RMAN)](https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/getting-started-rman.html) 是 Oracle 提供的用于执行和管理 Oracle 数据库备份和恢复的工具。您可以使用 RMAN 从本地或数据中心备份您的 Oracle 数据库，然后将其恢复到 EC2 实例上的 Oracle 数据库。如果您计划将整个数据库移至 EC2 实例上的自管理 Oracle 数据库，请使用此方法。数据库可以是任意大小，您可以在备份中使用并行处理、压缩和加密。

您可以使用 Oracle 安全备份 (OSB) 云模块将本地 Oracle 数据库的 Oracle RMAN 备份直接放在 S3 存储桶中 AWS Storage Gateway，或。 AWS DataSync然后，您可以使用 AWS Identity and Access Management (IAM) 角色向 S3 存储桶授予对 EC2 实例上目标 Oracle 数据库的访问权限，并使用 RMAN 备份文件恢复数据库。您可以从本地 Oracle 数据库获取增量备份，然后将其应用于 EC2 实例上的目标 Oracle 数据库，直到本地数据库和目标数据库同步为止。然后可以在方便的时候执行切换。

Oracle RMAN 支持亚马逊 EC2、亚马逊 RDS Custom 和 VMware Cloud 进行 AWS 迁移。当您可以留出足够的停机时间将数据迁移到时，推荐使用这种方法 AWS。

## VMware HCX
<a name="vmware-hcx"></a>

[VMware 混合云扩展 (HCX](https://cloud.vmware.com/vmware-hcx)) 使您能够将本地 Oracle 数据库迁移到本地， AWS 而无需改造您的 VMware 基础架构。它包括几种迁移方法，详见博客文章《[如何将 Oracle 工作负载迁移到 VMware Cloud》 AWS和《 AWS 使用混合云](https://aws.amazon.com/blogs/apn/how-to-migrate-oracle-workloads-to-vmware-cloud-on-aws/)[扩展 (HCX) 将工作负载迁移到 VMware 云》](https://aws.amazon.com/blogs/apn/migrating-workloads-to-vmware-cloud-on-aws-with-hybrid-cloud-extension-hcx/)。其中一种方法是 HCX vMotion，它提供了单个虚拟机的实时迁移，无需停机时间且可用性高。

 AWS 客户可在 VMware Cloud 上免费使用 HCX。