

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

# 使用 AWS DMS 和 AWS SCT 将 Oracle 数据库迁移至 Aurora PostgreSQL
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct"></a>

*Senthil Ramasamy，Amazon Web Services*

## Summary
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-summary"></a>

此模式描述了如何使用 AWS Data Migration Service (AWS DMS) 和 AWS Schema Conversion Tool (AWS SCT) 将 Oracle 数据库迁移至 Amazon Aurora PostgreSQL-Compatible Edition。 

该模式涵盖本地的 Oracle 源数据库、安装在亚马逊弹性计算云 (Amazon EC2) 实例上的 Oracle 数据库以及适用于 Oracle 数据库的亚马逊关系数据库服务 (Amazon RDS)。此模式将这些数据库转换为 Aurora PostgreSQL-Compatible。

## 先决条件和限制
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-prereqs"></a>

**先决条件**
+ 一个有效的 Amazon Web Services account。
+ 在本地数据中心或 Amazon Web Services Cloud 中的 Oracle 数据库。
+ 安装在本地计算机或 EC2 实例上的 SQL 客户端。
+ AWS SCT 连接器的 Java 数据库连接 (JDBC) 驱动程序，安装在本地计算机或安装了 AWS SCT EC2 的实例上。

**限制**
+ 数据库大小限制：128 TB 
+ 如果源数据库支持商用 off-the-shelf (COTS) 应用程序或特定于供应商，则可能无法将其转换为其他数据库引擎。在使用此模式前，请确认该应用程序支持 Aurora PostgreSQL-Compatible。 

**产品版本**
+ 对于自管理 Oracle 数据库，AWS DMS 支持 10.2 及更高版本（版本 10.x）、11g 直至 12.2、18c 以及 19c 版本的所有 Oracle 数据库版本。有关支持的 Oracle 数据库版本（包括自行管理版本和 Amazon RDS for Oracle）的最新列表，请参阅[使用 Oracle 数据库作为 AWS DMS 的源](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)和[使用 PostgreSQL 数据库作为 AWS DMS 的目标](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)。
+ 建议使用最新版本的 AWS DMS，以获得最全面的版本和功能支持。关于 AWS SCT 支持的 Oracle 数据库版本的信息，请参阅 [AWS SCT 文档](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)。 
+ Aurora 支持 [Amazon Aurora PostgreSQL 发行版本和引擎版本](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Updates.20180305.html) 中列出的 PostgreSQL 版本。

## 架构
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-architecture"></a>

**源技术堆栈**

下列情况之一：
+ 本地 Oracle 数据库
+  EC2 实例上的 Oracle 数据库  
+ Amazon RDS for Oracle 数据库实例

**目标技术堆栈**
+ Aurora PostgreSQL-Compatible 

**目标架构**

![\[将 Oracle 数据库迁移至 Aurora PostgreSQL-Compatible 的目标架构。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/6de157c4-dcc9-4186-ae32-17efbbbee709/images/68beb634-926e-4908-97b1-edcd23e06a2b.png)


**数据迁移架构**
+ 从 Amazon Web Services Cloud 内运行的 Oracle 数据库   
![\[AWS 上 Oracle 数据库的数据迁移架构。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/6de157c4-dcc9-4186-ae32-17efbbbee709/images/7fc32019-3db1-485b-93e5-6d5539be048c.png)

   
+ 从本地数据中心内运行的 Oracle 数据库  
![\[本地数据中心 上 Oracle 数据库的数据迁移架构。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/6de157c4-dcc9-4186-ae32-17efbbbee709/images/c70d8774-aef7-4414-9766-ce8f25757c4b.png)

## 工具
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-tools"></a>
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) 可帮助您将数据存储迁移到 Amazon Web Services Cloud，或者在云和本地设置的组合之间迁移。
+ [AWS Schema Conversion Tool（AWS SCT）](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)通过以下方法来简化异构数据库的迁移工作：将源数据库架构和大部分的自定义代码自动转换成与目标数据库兼容的格式。

## 操作说明
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-epics"></a>

### 准备迁移
<a name="prepare-for-the-migration"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 准备源数据库。 | 若要准备源数据库，请参阅 AWS SCT 文档中的[使用 Oracle 数据库作为 AWS SCT 的源](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html)。 | 数据库管理员 | 
| 为 AWS SCT 创建一个 EC2 实例。 | 如果需要，为 AWS SCT 创建和配置 EC2 实例。 | 数据库管理员 | 
| 下载 AWS SCT。 | 下载最新版本的 AWS SCT 和相关驱动程序。有关更多信息，请参阅 AWS SCT 文档中的[安装、验证和更新 AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html)。 | 数据库管理员 | 
| 添加用户和权限。 | 在源数据库中添加并验证必备用户和权限。 | 数据库管理员 | 
| 创建 AWS SCT 项目。 | 为工作负载创建 AWS SCT 项目，然后连接至源数据库。有关说明，请参阅 AWS SCT 文档中的[创建 AWS SCT 项目](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.Project)和[添加数据库服务器](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.AddServers)。 | 数据库管理员 | 
| 评估可行性。 | 生成评测报告，其中汇总了无法自动转换架构的操作项目，并提供了手动转换的估算值。有关更多信息，请参阅 AWS SCT 文档中的[创建和查看数据库迁移评测报告](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_UserInterface.html#CHAP_UserInterface.AssessmentReport)。 | 数据库管理员 | 

### 准备目标数据库
<a name="prepare-the-target-database"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建目标 Amazon RDS 数据库实例。 | 使用 Amazon Aurora 作为数据库引擎创建目标 Amazon RDS 数据库实例。有关说明，请参阅 Amazon RDS 文档中的[创建 Amazon RDS 数据库实例](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html)。 | 数据库管理员 | 
| 提取用户、角色与权限。 | 从源数据库中提取用户、角色和权限列表。 | 数据库管理员 | 
| 映射用户。 | 将现有数据库用户映射到新的数据库用户。 | 应用程序所有者 | 
| 创建用户。 | 在目标数据库中创建用户。 | 数据库管理员、应用程序所有者 | 
| 应用角色。 | 将上一步的角色应用至目标数据库。 | 数据库管理员 | 
| 检查选项、参数、网络文件和数据库链接。 | 查看源数据库选项、参数、网络文件和数据库链接，然后评估其对目标数据库的适用性。 | 数据库管理员 | 
| 应用设置。 | 将所有相关设置应用至目标数据库。 | 数据库管理员 | 

### 传输对象
<a name="transfer-objects"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 配置 AWS SCT 连接。 | 为目标数据库配置 AWS SCT 连接。 | 数据库管理员 | 
| 使用 AWS SCT 转换架构。 | AWS SCT 会自动将源数据库架构和大多数自定义代码转换为与目标数据库兼容的格式。该工具无法自动转换的任意代码会被清楚地标记，以便您进行手动转换。 | 数据库管理员 | 
| 查看报告。 | 查看生成的 SQL 报告并保存所有错误和警告。 | 数据库管理员 | 
| 应用自动架构更改。 | 将自动架构更改应用至目标数据库或将其另存为 .sql 文件。 | 数据库管理员 | 
| 验证对象。 | 验证 AWS SCT 是否在目标创建了对象。 | 数据库管理员 | 
| 处理未转换的对象。 | 手动重写、拒绝或重新设计任何无法自动转换的项目。 | 数据库管理员、应用程序所有者 | 
| 应用角色与用户权限。 | 应用生成的角色和用户权限，并查看所有例外情况。 | 数据库管理员 | 

### 迁移数据
<a name="migrate-the-data"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 确定方法。 | 确定数据迁移方法。 | 数据库管理员 | 
| 创建复制实例。 | 从 AWS DMS 控制台创建复制实例。有关更多信息，请参阅 AWS DMS 文档中的[使用 AWS DMS 复制实例](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html)。 | 数据库管理员 | 
| 创建源端点和目标端点。 | 若要创建端点，请按照[在 AWS DMS 中创建源端点和目标端点](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.Creating.html)中的说明操作。 | 数据库管理员 | 
| 创建复制任务。 | 若要创建任务，请参阅 AWS DMS 文档中的[处理 AWS DMS 任务](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.html)。 | 数据库管理员 | 
| 启动复制任务并监控日志。 | 有关此步骤的更多信息，请参阅 AWS DMS 文档中的[监控 AWS DMS 任务](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Monitoring.html)。 | 数据库管理员 | 

### 迁移应用程序
<a name="migrate-the-application"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 分析并转换应用程序代码中的 SQL 项目。 | 使用 AWS SCT 分析和转换应用程序代码中的 SQL 项。当您将数据库架构从一个引擎转换到另一个引擎时，还需要更新应用程序中的 SQL 代码，以便与新数据库引擎 (而非旧引擎) 进行交互。您可以查看、分析、编辑和保存转换后的 SQL 代码。 | 应用程序所有者 | 
| 创建应用程序服务器。 | 在 AWS 上创建新应用程序服务器。 | 应用程序所有者 | 
| 迁移应用程序代码。 | 将应用程序代码迁移至新服务器。 | 应用程序所有者 | 
| 配置应用程序服务器。 | 为目标数据库和驱动程序配置应用程序服务器。 | 应用程序所有者 | 
| 修复代码。 | 修复应用程序中所有特定的源数据库引擎代码。 | 应用程序所有者 | 
| 优化代码。 | 针对目标数据库引擎优化应用程序代码。 | 应用程序所有者 | 

### 割接
<a name="cut-over"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 割接至目标数据库。 | 执行至新数据库的割接。 | 数据库管理员 | 
| 锁定应用程序。 | 锁定应用程序，避免任何进一步的更改。 | 应用程序所有者 | 
| 验证更改。 | 验证所有更改是否都已传播到目标数据库。 | 数据库管理员 | 
| 重定向至目标数据库。 | 将新的应用程序服务器指向目标数据库。 | 应用程序所有者 | 
| 检查所有内容。 | 执行最终全面系统检查。 | 应用程序所有者 | 
| 上线。 | 完成最终割接任务。 | 应用程序所有者 | 

### 关闭项目
<a name="close-the-project"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 关闭临时资源。 | 关闭临时的 AWS 资源，例如 AWS DMS 复制实例和用于 AWS SCT 的 EC2 实例。 | 数据库管理员、应用程序所有者 | 
| 更新反馈。 | 更新内部团队对于 AWS DMS 流程的反馈。 | 数据库管理员、应用程序所有者 | 
| 修改过程与模板。 | 如有必要，请修改 AWS DMS 流程并改进模板。 | 数据库管理员、应用程序所有者 | 
| 验证文档。 | 查看和验证项目文档。 | 数据库管理员、应用程序所有者 | 
| 收集指标。 | 收集指标以评估迁移时间、手动与工具成本节约比等。 | 数据库管理员、应用程序所有者 | 
| 关闭项目。 | 关闭迁移项目并向利益相关者提供反馈。 | 数据库管理员、应用程序所有者 | 

## 相关资源
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-resources"></a>

**参考**
+ [将 Oracle 数据库作为 AWS DMS 的源](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)
+ [将 PostgreSQL 数据库用作 AWS Database Migration Service 的目标](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)
+ [参照 PostgreSQL Compatibility (9.6.x) 迁移手册将 Oracle Database 11g/12c 迁移至 Amazon Aurora](https://d1.awsstatic.com/whitepapers/Migration/oracle-database-amazon-aurora-postgresql-migration-playbook.pdf) 
+ [参照 PostgreSQL Compatibility (12.4) 迁移手册将 Oracle Database 19c 迁移至 Amazon Aurora](https://d1.awsstatic.com/whitepapers/Migration/oracle-database-amazon-aurora-postgresql-migration-playbook-12.4.pdf)
+ [将 Amazon RDS for Oracle 数据库迁移至 Amazon Aurora PostgreSQL-Compatible Edition](https://docs.aws.amazon.com/dms/latest/sbs/chap-oracle-postgresql.html)
+ [AWS Data Migration Service](https://aws.amazon.com/dms/)
+ [AWS Schema Conversion Tool](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) 
+ [从 Oracle 迁移到 Amazon Aurora](https://aws.amazon.com/getting-started/projects/migrate-oracle-to-amazon-aurora/)
+ [Amazon RDS 定价](https://aws.amazon.com/rds/pricing/)

**教程和视频**
+ [数据库迁移 Step-by-Step演练](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html)
+ [AWS DMS 入门](https://aws.amazon.com/dms/getting-started/)
+ [Amazon RDS 入门](https://aws.amazon.com/rds/getting-started/)
+ [AWS Data Migration Service](https://www.youtube.com/watch?v=zb4GcjEdl8U)（视频）
+ [将 Oracle 数据库迁移至 PostgreSQL](https://www.youtube.com/watch?v=ibtNkChGFkw)（视频）

## 附加信息
<a name="migrate-an-oracle-database-to-aurora-postgresql-using-aws-dms-and-aws-sct-additional"></a>

.