

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

# 使用和 AWS DMS 从 Oracle 8i 或 9i 迁移到适用于 SharePlex PostgreSQL 的亚马逊 RDS
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms"></a>

*Kumar Babu P G，Amazon Web Services*

## Summary
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-summary"></a>

此模式描述了如何将本地的 Oracle 8i 或 9i 数据库迁移到适用于 PostgreSQL 的Amazon Relational Database Service (Amazon RDS) 或 Amazon Aurora PostgreSQL。AWS Database Migration Service (AWS DMS) 不支持 Oracle 8i 或 9i 作为来源，因此 Quest SharePlex 会将数据从本地 8i 或 9i 数据库复制到与 AWS DMS 兼容的中间 Oracle 数据库（Oracle 10g 或 11g）。

使用 AWS Schema Conversion Tool (AWS SCT) 和 AWS DMS 将架构和数据从中间 Oracle 实例迁移到 AWS 上的 PostgreSQL 数据库。此方法有助于以最小的复制延迟实现从源 Oracle 数据库到目标 PostgreSQL 数据库实例的数据连续流式传输。实施此示例时，停机时间将限于创建或验证目标 PostgreSQL 数据库上的所有外键、触发器和序列所需时间长度。

迁移使用安装了 Oracle 10g 或 11g 的亚马逊弹性计算云 (Amazon EC2) 实例来托管来自源 Oracle 数据库的更改。AWS DMS 使用此中间 Oracle 实例作为源将数据流式传输到 Amazon RDS for PostgreSQL 或 Aurora PostgreSQL。可以暂停和恢复从本地 Oracle 数据库到中间 Oracle 实例的数据复制。它还可以从中间 Oracle 实例到目标 PostgreSQL 数据库暂停和恢复，以便您可以使用 AWS DMS 数据验证或自定义数据验证工具来验证数据。

## 先决条件和限制
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-prereqs"></a>

**先决条件**
+ 一个有效的 Amazon Web Services account
+ 本地数据中心中的源 Oracle 8i 或 9i 数据库 
+ AWS Direct Connect 配置至本地数据中心和 AWS 之间 
+ 安装在本地计算机或安装了 AWS SCT 的实例上的 AWS SCT 连接器的 Java 数据库连接 (JDBC) 驱动程序 EC2 
+ 熟悉[使用 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)
+ 熟悉 Quest SharePlex 数据复制

 

**限制**
+ 数据库大小限制为 64 TB
+ 本地 Oracle 数据库必须为 Enterprise Edition

 

**产品版本**
+ 作为源数据库的 Oracle 8i 或 9i
+ 作为中间数据库的 Oracle 10g 或 11g 
+ PostgreSQL 9.6 或更高版本

## 架构
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-architecture"></a>

**源技术堆栈**
+ Oracle 8i 或 9i 数据库 
+ 任务 SharePlex 

 

**目标技术堆栈**
+ MySQL 到 Amazon RDS for PostgreSQL 或 Amazon Aurora (PostgreSQL)。

** **

**源架构和目标架构**

![](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/b6c30668-fc2e-4293-a59a-e01fd151f4bb/images/25082670-0bf3-4b20-8c80-99c6633b046f.png)


## 工具
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-tools"></a>
+ **AWS DMS** — [AWS Database Migration Service ](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html)(AWS DMS) 可帮助您快速安全地迁移数据库。源数据库可在迁移过程中保持全面运行，从而最大程度地为依赖该数据库的应用程序减少停机时间。AWS DMS 可以在最广泛使用的商用和开源数据库之间迁移数据。 
+ **AWS SCT** - [AWS Schema Conversion Tool](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) (AWS SCT) 通过以下方法来简化异构数据库的迁移工作：将源数据库架构和大部分的自定义代码 (包括视图、存储过程和函数等) 自动转换成与目标数据库兼容的格式。任何无法自动转换的对象都会被明确标记，以便可以手动转换它们以完成迁移。AWS SCT 还可以扫描您的应用程序源代码中的嵌入式 SQL 语句，并将其作为数据库架构转换项目的一部分进行转换。在此过程中，AWS SCT 通过将旧的 Oracle 和 SQL Server 功能转换为其 AWS 等效功能来执行云原生代码优化，以帮助您在迁移数据库的同时实现应用程序现代化。架构转换完成后，AWS SCT 可以使用内置的数据迁移代理帮助将数据从一系列数据仓库迁移至 Amazon Redshift。
+ **Ques** [t SharePlex — Quest SharePlex](https://www.quest.com/register/120420/?gclid=Cj0KCQiA6IHwBRCJARIsALNjViVSt9fHqAsf9XbWkoCwKKyQqollR_5kSxNhBagh9s3spQT4IQCaVy0aAmCnEALw_wcB) 是一款 Oracle-to-Oracle数据复制工具，用于在最短的停机时间内移动数据，并且不会丢失任何数据。

## 操作说明
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-epics"></a>

### 创建 EC2 实例并安装 Oracle
<a name="create-the-ec2-instance-and-install-oracle"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 为 Amazon 设置网络 EC2。 | 创建新虚拟私有云（VPC）、子网、互联网网关、路由表和安全组。 | AWS SysAdmin | 
| 创建新 EC2 实例。 | 为 EC2 实例选择亚马逊系统映像 (AMI)。选择实例大小并配置实例详细信息：实例数量（1）、您在上一个任务中创建的 VPC 和子网、自动分配公有 IP 地址以及其他选项。添加存储、配置安全组并启动实例。出现提示时，创建并保存密钥对，以供下一步使用。 | AWS SysAdmin | 
| 在 EC2 实例上安装 Oracle。 | 获取许可证和所需的 Oracle 二进制文件，然后在实例上安装 Oracle 10g 或 11g。 EC2  | 数据库管理员 | 

### SharePlex 在 EC2 实例上设置并配置数据复制
<a name="set-up-shareplex-on-an-ec2-instance-and-configure-data-replication"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 设置 SharePlex。 | 创建亚马逊 EC2 实例并安装与 Oracle 8i 或 9i 兼容的 SharePlex 二进制文件。 | AWS SysAdmin、DBA | 
| 配置数据复制。 | 按照 SharePlex 最佳实践配置从本地 Oracle 8i/9i 数据库到 Oracle 10g/11g 实例的数据复制。 | 数据库管理员 | 

### 将 Oracle 数据库架构转换为 PostgreSQL
<a name="convert-the-oracle-database-schema-to-postgresql"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 设置 AWS SCT。 | 创建新报告，然后连接到 Oracle 作为源，将 PostgreSQL 作为目标。在项目设置中，打开SQL 脚本选项卡，将目标 SQL 脚本更改为多个文件。 | 数据库管理员 | 
| 转换 Oracle 数据库架构。 | 在操作选项卡中，选择生成报告、转换架构，然后选择另存为 SQL。 | 数据库管理员 | 
| 修改 AWS SCT 生成的 SQL 脚本。 |  | 数据库管理员 | 

### 创建和配置 Amazon RDS 数据库实例
<a name="create-and-configure-the-amazon-rds-db-instance"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建 Amazon RDS 数据库实例。 | 在 Amazon RDS 控制台，创建新的 PostgreSQL 数据库实例。 | AWS SysAdmin、DBA | 
| 配置数据库实例。 | 指定数据库引擎版本、数据库实例类、多可用区部署、存储类型和分配的存储空间。输入数据库实例标识符、主用户名和主密码。 | AWS SysAdmin、DBA | 
| 配置网络和安全。 | 指定 VPC、子网组、公共可访问性、可用区首选项和安全组。 | AWS SysAdmin、DBA | 
| 配置数据库选项。 | 指定数据库名称、端口、参数组、加密和主密钥。 | AWS SysAdmin、DBA | 
| 配置备份。 | 指定备份保留期、备份窗口、开始时间、持续时间以及是否将标签复制到快照。 | AWS SysAdmin、DBA | 
| 配置监控选项。 | 启用或禁用增强的监控和性能洞察。 | AWS SysAdmin、DBA | 
| 配置维护选项。 | 指定次要版本自动升级、维护窗口以及开始日期、时间和持续时间。 | AWS SysAdmin、DBA | 
| 运行 AWS SCT 中的预迁移脚本。 | 在 Amazon RDS 实例，运行以下脚本：create\_database.sql、create\_sequence.sql、create\_table.sql、create\_view.sql 和 create\_function.sql。 | AWS SysAdmin、DBA | 

### 使用 AWS DMS 迁移数据
<a name="migrate-data-by-using-aws-dms"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 在 AWS DMS 中创建 AWS DMS 复制实例。 | 填写名称、实例类别、VPC（与 EC2 实例相同）、多可用区和公共可访问性字段。在高级下，指定分配的存储、子网组、可用区、VPC 安全组和 AWS Key Management Service（AWS KMS）密钥。 | AWS SysAdmin、DBA | 
| 创建源数据库端点。 | 指定终端节点名称、类型、源引擎 (Oracle)、服务器名称（Amazon EC2 私有 DNS 名称）、端口、SSL 模式、用户名、密码、SID、VPC（指定具有复制实例的 VPC）和复制实例。要测试连接，请选择运行测试，然后创建端点。您还可以配置以下高级设置： maxFileSize 和 Sc numberDataType ale。 | AWS SysAdmin、DBA | 
| 创建 AWS DMS 复制任务。 | 指定任务名称、复制实例、源端点和目标端点以及复制实例。对于迁移类型，选择迁移现有数据并复制持续更改。清除创建时启动任务复选框。 | AWS SysAdmin、DBA | 
| 配置 AWS DMS 复制任务设置。 | 对于目标表格准备模式，请选择什么都不做。完全加载完成后停止任务（创建主键）。指定受限或完整 LOB 模式，然后启用控制表。或者，您可以配置 CommitRate 高级设置。 | 数据库管理员 | 
| 配置表映射。 | 在表映射部分，为迁移中包含的所有架构中的所有表创建包含规则，然后创建排除规则。添加三个转换规则，将架构、表和列名转换为小写，并添加此特定迁移所需任何其他规则。 | 数据库管理员 | 
| 启动任务。 | 启动复制任务。确保全负载正在运行。在 Oracle 主数据库上运行 ALTER SYSTEM SWITCH LOGFILE 以启动任务。 | 数据库管理员 | 
| 运行 AWS SCT 中的迁移中脚本。 | 在 Amazon RDS for PostgreSQL 中，运行以下脚本：create\_index.sql 和 create\_constraint.sql。 | 数据库管理员 | 
| 重新启动任务以继续更改数据捕获 (CDC)。 | 在 Amazon RDS for PostgreSQL 数据库实例上运行 VACUUM，然后重启 AWS DMS 任务以应用缓存的 CDC 更改。 | 数据库管理员 | 

### 割接至 PostgreSQL 数据库
<a name="cut-over-to-the-postgresql-database"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 查看 AWS DMS 日志和验证表。 | 验证所有错误，并在需要时进行修复。 | 数据库管理员 | 
| 停止所有 Oracle 依赖项。 | 停止所有 Oracle 依赖项，关闭 Oracle 数据库上的侦听器，然后运行 ALTER SYSTEM SWITCH LOGFILE。当 AWS DMS 任务没有显示任何活动时，将其停止。 | 数据库管理员 | 
| 运行 AWS SCT 中的迁移后脚本。 | 在 Amazon RDS for PostgreSQL 中，运行以下脚本：create\_foreign\_key\_constraint.sql 和 create\_triggers.sql。 | 数据库管理员 | 
| 完成 Amazon RDS for PostgreSQL 的其他步骤。 | 如果需要，增量序列以匹配 Oracle，运行 VACUUM 和 ANALYZE，然后拍摄合规性快照。 | 数据库管理员 | 
| 打开 Amazon RDS for PostgreSQL 的连接。 | 从 Amazon RDS for PostgreSQL 中移除 AWS DMS 安全组，添加生产安全组，并将应用程序指向新数据库。 | 数据库管理员 | 
| 清除 AWS 资源。 | 移除终端节点、复制任务、复制实例和 EC2 实例。 | SysAdmin，DBA | 

## 相关资源
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-resources"></a>
+ [AWS DMS 文档](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html)
+ [AWS SCT 文档](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ [Amazon RDS for PostgreSQL 定价](https://aws.amazon.com/rds/postgresql/pricing/)
+ [将 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) 
+ [任务 SharePlex 文档](https://support.quest.com/shareplex/9.0.2/technical-documents)