

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

# 将数据从本地 Oracle 数据库迁移到 Aurora PostgreSQL
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql"></a>

*Michelle Deng 和 Shunan Xiang，Amazon Web Services*

## Summary
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-summary"></a>

此模式为数据从本地 Oracle 数据库迁移到 Amazon Aurora PostgreSQL-Compatible Edition 提供了指导。它的目标是为包含具有大量数据操作语言 (DML) 活动的大型表的多 TB Oracle 数据库提供一种在线数据迁移策略，最大限度地减少停机时间。使用 Oracle Active Data Guard 备用数据库作为从主数据库分流数据迁移的来源。在满载期间可以暂停从 Oracle 主数据库到备用数据库的复制，以避免出现 ORA-01555 错误。 

在 Oracle 中，数据类型为 NUMBER 的主键 (PKsFKs) 或外键 () 中的表列通常用于存储整数。我们建议您在 PostgreSQL 中将它们转换为 INT 或 BIGINT，以获得更好的性能。您可使用 AWS Schema Conversion Tool (AWS SCT) 更改 PK 和 FK 列的默认数据类型映射。（有关更多信息，请参阅 AWS 博客文章 “将 N [UMBER 数据类型从 Oracle 转换为 PostgreSQL](https://aws.amazon.com/blogs/database/convert-the-number-data-type-from-oracle-to-postgresql-part-2/)”。） 这种示例中的数据迁移使用 AWS Database Migration Service (AWS DMS) 进行满载和更改数据捕获 (CDC)。

你也可以使用这种模式将本地 Oracle 数据库迁移到适用于 PostgreSQL 的亚马逊关系数据库服务 (Amazon RDS)，或者将托管在亚马逊弹性计算云 (亚马逊) 上的 Oracle 数据库迁移到适用于 PostgreSQL 的亚马逊 RDS 或 Aurora PostgreSQL 兼容 EC2 Aurora PostgreSQL。

## 先决条件和限制
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-prereqs"></a>

**先决条件**
+ 一个有效的 Amazon Web Services account
+ 本地数据中心中的 Oracle 源数据库，配置了 Active Data Guard 备用数据库 
+ AWS Direct Connect 配置至 本地数据中心和 Amazon Web Services Cloud 之间
+ 熟悉[使用 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)

**限制**
+ Amazon Aurora 数据库集群最多可创建 128 TiB 存储空间。Amazon RDS for PostgreSQL 数据库实例可使用高达 64 TiB 的存储空间创建。有关最新存储信息，请参阅 [AWS 文档中的 Amazon Aurora 存储和可靠性](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.StorageReliability.html)以及 [Amazon RDS 数据库实例存储](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)。

**产品版本**
+ AWS DMS 支持版本为 10.2 及更高版本（对于版本 10.x）、11g 直至 12.2、18c 以及 19c 的所有 Oracle 数据库版本。有关支持的版本的最新列表，请参阅 AWS 文档中的[使用 Oracle 数据库作为 AWS DMS 的源数据库](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)。

## 架构
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-architecture"></a>

**源技术堆栈**
+ 配置了 Oracle Active Data Guard 备用数据库的本地 Oracle 数据库 

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

**数据迁移架构**

![\[将 Oracle 数据库迁移至 Aurora PostgreSQL-Compatible\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/49f9b03e-6d33-4ac0-94ad-d3e6d02e6d63/images/0038a36b-fb7d-4f2d-8376-8d38290b0736.png)


## 工具
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-tools"></a>
+ **AWS DMS** - [AWS Database Migration Service](https://docs.aws.amazon.com/dms/index.html) (AWS DMS) 支持多种源数据库和目标数据库。有关支持的 Oracle 源数据库和目标数据库版本的列表，请参阅 AWS DMS 文档中的[使用 Oracle 数据库作为 AWS DMS 的源数据库](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)。如果 AWS DMS 不支持源数据库，则必须选择另一种方法来迁移第 6 阶段的数据（在 *Epic* s 部分）。 **重要说明：**由于这是异构迁移，因此必须先检查数据库是否支持商用 off-the-shelf (COTS) 应用程序。如果应用程序是 COTS，请咨询供应商以确认支持 Aurora PostgreSQL-Compatible，然后再继续。有关更多信息，请参阅 [AWS 文档中的 AWS DMS Step-by-Step 迁移演练](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html)。
+ **AWS SCT** - [AWS Schema Conversion Tool](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/Welcome.htm) (AWS SCT) 通过自动将源数据库架构和大部分自定义代码转换为与目标数据库兼容的格式，以促进异构数据库迁移。该工具转换的自定义代码包括视图、存储进程和函数。该工具无法自动转换的任意代码会被清楚地标记，以便您自己进行转换。 

## 操作说明
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-epics"></a>

### 计划迁移
<a name="plan-the-migration"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 验证源数据库和目标数据库版本。 |  | 数据库管理员 | 
| 安装 AWS SCT 和驱动程序。 |  | 数据库管理员 | 
| 添加并验证 AWS SCT 必备用户和授权源数据库。 |  | 数据库管理员 | 
| 为工作负载创建 AWS SCT 项目，然后连接至源数据库。 |  | 数据库管理员 | 
| 生成评测报告并评测可行性。 |  | 数据库管理员、应用程序所有者 | 

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


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建 Aurora PostgreSQL-Compatible 目标数据库。 |  | 数据库管理员 | 
| 从源数据库中提取用户、角色和权限列表。 |  | 数据库管理员 | 
| 将现有数据库用户映射到新的数据库用户。 |  | 应用程序所有者 | 
| 在目标数据库中创建用户。 |  | 数据库管理员 | 
| 将上一步的角色应用至目标 Aurora PostgreSQL-Compatible 数据库。 |  | 数据库管理员 | 
| 查看源数据库中的数据库选项、参数、网络文件和数据库链接，然后评估其对目标数据库的适用性。 |  | 数据库管理员、应用程序所有者 | 
| 将所有相关设置应用至目标数据库。 |  | 数据库管理员 | 

### 准备数据库对象代码转换
<a name="prepare-for-database-object-code-conversion"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 为目标数据库配置 AWS SCT 连接。 |  | 数据库管理员 | 
| 在 AWS SCT 中转换架构，并将转换后的代码保存为 .sql 文件。 |  | 数据库管理员、应用程序所有者 | 
| 手动转换无法自动转换的任何数据库对象。 |  | 数据库管理员、应用程序所有者 | 
| 优化数据库代码转换。 |  | 数据库管理员、应用程序所有者 | 
| 根据对象类型将该 .sql 文件分成多个 .sql 文件。 |  | 数据库管理员、应用程序所有者 | 
| 验证目标数据库中的 SQL 脚本。 |  | 数据库管理员、应用程序所有者 | 

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


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建 AWS DMS 复制实例。 |  | 数据库管理员 | 
| 创建源端点和目标端点。 | 如果 PKs 和的数据类型从 Oracle 中的 NUMBER 转换 FKs 为 PostgreSQL 中的 BIGINT，请考虑在创建源端点时指定连接`numberDataTypeScale=-2`属性。 | 数据库管理员 | 

### 迁移数据 - 满载
<a name="migrate-data-ndash-full-load"></a>


| 任务 | 说明 | 所需技能 | 
| --- | --- | --- | 
| 在目标数据库中创建架构与表。 |  | 数据库管理员 | 
|  通过对表进行分组或根据表大小拆分大表来创建 AWS DMS 满负荷任务。 |  | 数据库管理员 | 
| 在短时间内停止源 Oracle 数据库的应用程序。 |  | 应用程序所有者 | 
| 验证 Oracle 备库与主库是否同步，并停止从主库到备库的复制。 |  | 数据库管理员、应用程序所有者 | 
| 在源 Oracle 数据库上启动应用程序。 |  | 应用程序所有者 | 
| 从 Oracle 备用数据库到 Aurora PostgreSQL-Compatible 的数据库，并行启动 AWS DMS 满负荷任务。 |  | 数据库管理员 | 
| 在完全加载完成后创建 PKs 和二级索引。 |  | 数据库管理员 | 
| 验证数据。 |  | 数据库管理员 | 

### 迁移数据 – CDC
<a name="migrate-data-ndash-cdc"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 在 Oracle 备用数据库与主数据库同步时，以及在上一个作业中应用程序重新启动之前，通过指定自定义 CDC 开始时间或系统更改编号 (SCN) 来创建 AWS DMS 持续复制任务。 |  | 数据库管理员 | 
| 并行启动 AWS DMS 任务，将正在进行的更改从 Oracle 备用数据库复制到 Aurora PostgreSQL-Compatible 数据库。 |  | 数据库管理员 | 
| 重新建立从 Oracle 主数据库到备用数据库复制。 |  | 数据库管理员 | 
| 当 Aurora PostgreSQL-Compatible 目标数据库与源 Oracle 数据库几乎同步时，监控日志并停止 Oracle 数据库上的应用程序。 |  | 数据库管理员、应用程序所有者 | 
| 当目标与源 Oracle 数据库完全同步时，停止 AWS DMS 任务。 |  | 数据库管理员 | 
| 在目标数据库中创建 FKs 和校验数据。 |  | 数据库管理员 | 
| 在目标数据库中创建函数、视图、触发器、序列以及其他对象类型。 |  | 数据库管理员 | 
| 在目标数据库应用角色授权。 |  | 数据库管理员 | 

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


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 使用 AWS SCT 分析并转换应用程序代码中的 SQL 语句。 |  | 应用程序所有者 | 
| 在 AWS 上创建新应用程序服务器。 |  | 应用程序所有者 | 
| 将应用程序代码迁移至新服务器。 |  | 应用程序所有者 | 
| 为目标数据库和驱动程序配置应用程序服务器。 |  | 应用程序所有者 | 
| 修复应用程序中特定于源数据库引擎的任何代码。 |  | 应用程序所有者 | 
| 针对目标数据库优化应用程序代码。 |  | 应用程序所有者 | 

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


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 将新应用程序服务器指向目标数据库。 |  | 数据库管理员、应用程序所有者 | 
| 执行健全性检查。 |  | 数据库管理员、应用程序所有者 | 
| 上线。 |  | 数据库管理员、应用程序所有者 | 

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


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 关闭临时 AWS 资源。 |  | 数据库管理员、系统管理员 | 
| 查看和验证项目文档。 |  | 数据库管理员、应用程序所有者 | 
| 收集有关迁移时间、手动与工具使用的百分比、成本节约和类似数据的指标。 |  | 数据库管理员、应用程序所有者 | 
| 关闭项目并提供反馈。 |  | 数据库管理员、应用程序所有者 | 

## 相关资源
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-resources"></a>

**参考**
+ [Oracle 数据库至 Aurora PostgreSQL-Compatible：迁移行动手册](https://d1.awsstatic.com/whitepapers/Migration/oracle-database-amazon-aurora-postgresql-migration-playbook.pdf) 
+ [将 Amazon RDS for Oracle 数据库迁移到 Amazon Aurora MySQL](https://docs.aws.amazon.com/dms/latest/sbs/chap-rdsoracle2aurora.html)
+ [AWS DMS 网站](https://aws.amazon.com/dms/)
+ [AWS DMS 文档](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [AWS SCT 网站](https://aws.amazon.com/dms/schema-conversion-tool/)
+ [AWS SCT 文档](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/)

**教程**
+ [AWS DMS 入门](https://aws.amazon.com/dms/getting-started/) 
+ [Amazon RDS 入门](https://aws.amazon.com/rds/getting-started/)
+ [AWS Database Migration Service Step-by-Step 演练](https://docs.aws.amazon.com/dms/latest/sbs/dms-sbs-welcome.html)