选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

使用实体化视图和 AWS DMS 从 Oracle 8i 或 9i 迁移至 Amazon RDS for PostgreSQL - AWS Prescriptive Guidance

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

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

使用实体化视图和 AWS DMS 从 Oracle 8i 或 9i 迁移至 Amazon RDS for PostgreSQL

由 Kumar Babu PG (AWS) 和 Pragnesh Patel (AWS) 编写

摘要

此模式介绍如何将本地旧版 Oracle 8i 或 9i 数据库迁移到 Amazon Relational Database Service(Amazon RDS)for PostgreSQL 或 Amazon Aurora PostgreSQL 兼容版。 

AWS Database Migration Service (AWS DMS) 不支持 Oracle 8i 或 9i 作为源,因此此模式使用与 AWS DMS 兼容的中间 Oracle 数据库实例,例如 Oracle 10g 或 11g。它还使用实例化视图功能将数据从源 Oracle 8i/9i 实例迁移至中间 Oracle 10g/11g 实例。

AWS Schema Conversion Tool (AWS SCT) 转换数据库架构,AWS DMS 会将数据迁移至目标 PostgreSQL 数据库。 

此模式可以帮助希望以最短的数据库停机时间从旧版 Oracle 数据库迁移的用户。实施此示例时,停机时间将限于创建或验证目标数据库上的所有外键、触发器和序列所需时间长度。 

该模式使用安装了 Oracle 10g/11g 数据库的亚马逊弹性计算云 (Amazon EC2) 实例来帮助 AWS DMS 流式传输数据。您可以暂时暂停从本地 Oracle 数据库到中间 Oracle 实例的流式复制,以使 AWS DMS 能够赶上数据验证或使用其他数据验证工具。当 AWS DMS 完成迁移当前更改后,PostgreSQL 数据库实例和中间 Oracle 数据库将具有相同的数据。

先决条件和限制

先决条件

限制

  • 数据库大小限制为 64 TB

产品版本

  • 作为源数据库的 Oracle 8i 或 9i

  • 作为中间数据库的 Oracle 10g 或 11g

  • PostgreSQL 10.17 或更高版本

架构

源技术堆栈

  • Oracle 8i 或 9i 数据库 

目标技术堆栈

  • Amazon RDS for PostgreSQL 或 Aurora PostgreSQL-Compatible

目标架构

用于从传统 Oracle 数据库迁移至 Amazon RDS 或 Aurora 的架构

工具

  • AWS DMS 可帮助您快速安全地迁移数据库。源数据库可在迁移过程中保持全面运行,从而最大程度地为依赖该数据库的应用程序减少停机时间。AWS DMS 可以在最广泛使用的商用和开源数据库之间迁移数据。

  • AWS SCT 通过自动将源数据库架构和大部分数据库代码对象转换为与目标数据库兼容的格式,帮助您预测异构数据库迁移。任何无法自动转换的对象都会被明确标记,以便可以手动转换它们以完成迁移。AWS SCT 还可以扫描您的应用程序源代码中的嵌入式 SQL 语句,并将其作为数据库架构转换项目的一部分进行转换。在此过程中,AWS SCT 通过将旧的 Oracle 和 SQL Server 功能转换为其 AWS 等效功能来执行云原生代码优化,以帮助您在迁移数据库的同时实现应用程序现代化。架构转换完成后,AWS SCT 可以使用内置的数据迁移代理帮助将数据从一系列数据仓库迁移至 Amazon Redshift。 

最佳实践

有关刷新实例化视图的最佳实践,请参见以下 Oracle 文档:

操作说明

Task描述所需技能

为 EC2 实例设置网络。

创建新虚拟私有云(VPC)、子网、互联网网关、路由表和安全组。

AWS SysAdmin

创建实 EC2 例。

为 EC2 实例选择亚马逊系统映像 (AMI)。选择实例大小并配置实例详细信息:实例数量(1)、您在上一个任务中创建的 VPC 和子网、自动分配公有 IP 地址以及其他选项。添加存储、配置安全组并启动实例。出现提示时,创建并保存密钥对,以供下一步使用。

AWS SysAdmin

在 EC2 实例上安装 Oracle。

获取许可证和所需的 Oracle 二进制文件,然后在实例上安装 Oracle 10g 或 11g。 EC2

数据库管理员

配置 Oracle 联网。

在中修改或添加 listener.ora 条目,以连接到本地源 Oracle 8i/9i 数据库,然后创建数据库链接。

数据库管理员

创建实体化视图。

确定要在源 Oracle 8i/9i 数据库中复制的数据库对象,然后使用数据库链接为所有对象创建实体化视图。

数据库管理员

部署脚本,以按所需间隔刷新实例化视图。

开发和部署脚本,以便在 Amazon EC2 Oracle 10g/11g 实例上按所需间隔刷新实体化视图。使用增量刷新选项来刷新实体化视图。

数据库管理员

在 EC2 实例上安装 Oracle 并创建物化视图

Task描述所需技能

为 EC2 实例设置网络。

创建新虚拟私有云(VPC)、子网、互联网网关、路由表和安全组。

AWS SysAdmin

创建实 EC2 例。

为 EC2 实例选择亚马逊系统映像 (AMI)。选择实例大小并配置实例详细信息:实例数量(1)、您在上一个任务中创建的 VPC 和子网、自动分配公有 IP 地址以及其他选项。添加存储、配置安全组并启动实例。出现提示时,创建并保存密钥对,以供下一步使用。

AWS SysAdmin

在 EC2 实例上安装 Oracle。

获取许可证和所需的 Oracle 二进制文件,然后在实例上安装 Oracle 10g 或 11g。 EC2

数据库管理员

配置 Oracle 联网。

在中修改或添加 listener.ora 条目,以连接到本地源 Oracle 8i/9i 数据库,然后创建数据库链接。

数据库管理员

创建实体化视图。

确定要在源 Oracle 8i/9i 数据库中复制的数据库对象,然后使用数据库链接为所有对象创建实体化视图。

数据库管理员

部署脚本,以按所需间隔刷新实例化视图。

开发和部署脚本,以便在 Amazon EC2 Oracle 10g/11g 实例上按所需间隔刷新实体化视图。使用增量刷新选项来刷新实体化视图。

数据库管理员
Task描述所需技能

设置 AWS SCT。

创建新报告,然后连接到 Oracle 作为源,将 PostgreSQL 作为目标。在项目设置中,打开 SQL 脚本选项卡。将目标 SQL 脚本更改为多个文件。(AWS SCT 不支持 Oracle 8i/9i 数据库,因此您必须在中间 Oracle 10g/11g 实例上恢复仅限架构的转储,并将其用作 AWS SCT 的来源。)

数据库管理员

转换 Oracle 数据库架构。

操作选项卡上,选择生成报告转换架构,然后选择另存为 SQL

数据库管理员

修改 SQL 脚本。

根据最佳实践标准进行修改。例如,切换到合适的数据类型,为特定 Oracle 函数开发 PostgreSQL 等效函数。

数据库管理员、Dev数据库管理员

将 Oracle 数据库架构转换为 PostgreSQL

Task描述所需技能

设置 AWS SCT。

创建新报告,然后连接到 Oracle 作为源,将 PostgreSQL 作为目标。在项目设置中,打开 SQL 脚本选项卡。将目标 SQL 脚本更改为多个文件。(AWS SCT 不支持 Oracle 8i/9i 数据库,因此您必须在中间 Oracle 10g/11g 实例上恢复仅限架构的转储,并将其用作 AWS SCT 的来源。)

数据库管理员

转换 Oracle 数据库架构。

操作选项卡上,选择生成报告转换架构,然后选择另存为 SQL

数据库管理员

修改 SQL 脚本。

根据最佳实践标准进行修改。例如,切换到合适的数据类型,为特定 Oracle 函数开发 PostgreSQL 等效函数。

数据库管理员、Dev数据库管理员
Task描述所需技能

创建 Amazon RDS 数据库实例。

在 Amazon RDS 控制台,创建新的 PostgreSQL 数据库实例。

AWS SysAdmin、DBA

配置数据库实例。

指定数据库引擎版本、数据库实例类、多可用区部署、存储类型和分配的存储空间。输入数据库实例标识符、主用户名和主密码。

AWS SysAdmin、DBA

配置网络和安全。

指定 VPC、子网组、公共可访问性、可用区首选项和安全组。

数据库管理员, SysAdmin

配置数据库选项。

指定数据库名称、端口、参数组、加密和主密钥。

DBA、AWS SysAdmin

配置备份。

指定备份保留期、备份窗口、开始时间、持续时间以及是否将标签复制到快照。

AWS SysAdmin、DBA

配置监控选项。

启用或禁用增强的监控和性能洞察。

AWS SysAdmin、DBA

配置维护选项。

指定次要版本自动升级、维护窗口以及开始日期、时间和持续时间。

AWS SysAdmin、DBA

运行 AWS SCT 中的预迁移脚本。

在目标 Amazon RDS for PostgreSQL 实例,使用来自 AWS SCT 的 SQL 脚本,并进行其他修改来创建数据库架构。这些可能包括运行多个脚本,并包括用户创建、数据库创建、模式创建、表、视图、函数和其他代码对象。

AWS SysAdmin、DBA

创建并配置 Amazon RDS 数据库实例,以托管转换后的数据库

Task描述所需技能

创建 Amazon RDS 数据库实例。

在 Amazon RDS 控制台,创建新的 PostgreSQL 数据库实例。

AWS SysAdmin、DBA

配置数据库实例。

指定数据库引擎版本、数据库实例类、多可用区部署、存储类型和分配的存储空间。输入数据库实例标识符、主用户名和主密码。

AWS SysAdmin、DBA

配置网络和安全。

指定 VPC、子网组、公共可访问性、可用区首选项和安全组。

数据库管理员, SysAdmin

配置数据库选项。

指定数据库名称、端口、参数组、加密和主密钥。

DBA、AWS SysAdmin

配置备份。

指定备份保留期、备份窗口、开始时间、持续时间以及是否将标签复制到快照。

AWS SysAdmin、DBA

配置监控选项。

启用或禁用增强的监控和性能洞察。

AWS SysAdmin、DBA

配置维护选项。

指定次要版本自动升级、维护窗口以及开始日期、时间和持续时间。

AWS SysAdmin、DBA

运行 AWS SCT 中的预迁移脚本。

在目标 Amazon RDS for PostgreSQL 实例,使用来自 AWS SCT 的 SQL 脚本,并进行其他修改来创建数据库架构。这些可能包括运行多个脚本,并包括用户创建、数据库创建、模式创建、表、视图、函数和其他代码对象。

AWS SysAdmin、DBA
Task描述所需技能

在 AWS DMS 中创建 AWS DMS 复制实例。

填写名称、实例类别、VPC(与 EC2 实例相同)、多可用区和公共可访问性字段。在高级配置选项下,指定分配的存储、子网组、可用区、VPC 安全组和 AWS Key Management Service(AWS KMS)密钥。

AWS SysAdmin、DBA

创建源数据库端点。

指定终端节点名称、类型、源引擎 (Oracle)、服务器名称( EC2 实例的私有 DNS 名称)、端口、SSL 模式、用户名、密码、SID、VPC(指定具有复制实例的 VPC)和复制实例。要测试连接,请选择运行测试,然后创建端点。您还可以配置以下高级设置:maxFileSize和 Sc numberDataTypeal e。

AWS SysAdmin、DBA

将 AWS DMS 连接到 Amazon RDS for PostgreSQL。

如果您的 PostgreSQL 数据库位于其他 VPC 中 VPCs,请为跨连接创建迁移安全组。

AWS SysAdmin、DBA

创建目标数据库端点。

指定端点名称、类型、源引擎 (PostgreSQL)、服务器名称(Amazon RDS 端点)、端口、SSL 模式、用户名、密码、数据库名称、VPC(指定具有复制实例的 VPC)和复制实例。要测试连接,请选择运行测试,然后创建端点。您还可以配置以下高级设置:maxFileSize和 Sc numberDataTypeal e。

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.sqlcreate_constraint.sql(如果最初没有创建完整架构)。

数据库管理员

重新启动任务以继续更改数据捕获(CDC)。

在 Amazon RDS for PostgreSQL 数据库实例上运行 VACUUM,然后重启 AWS DMS 任务以应用缓存的 CDC 更改。

数据库管理员

使用 AWS DMS 迁移数据

Task描述所需技能

在 AWS DMS 中创建 AWS DMS 复制实例。

填写名称、实例类别、VPC(与 EC2 实例相同)、多可用区和公共可访问性字段。在高级配置选项下,指定分配的存储、子网组、可用区、VPC 安全组和 AWS Key Management Service(AWS KMS)密钥。

AWS SysAdmin、DBA

创建源数据库端点。

指定终端节点名称、类型、源引擎 (Oracle)、服务器名称( EC2 实例的私有 DNS 名称)、端口、SSL 模式、用户名、密码、SID、VPC(指定具有复制实例的 VPC)和复制实例。要测试连接,请选择运行测试,然后创建端点。您还可以配置以下高级设置:maxFileSize和 Sc numberDataTypeal e。

AWS SysAdmin、DBA

将 AWS DMS 连接到 Amazon RDS for PostgreSQL。

如果您的 PostgreSQL 数据库位于其他 VPC 中 VPCs,请为跨连接创建迁移安全组。

AWS SysAdmin、DBA

创建目标数据库端点。

指定端点名称、类型、源引擎 (PostgreSQL)、服务器名称(Amazon RDS 端点)、端口、SSL 模式、用户名、密码、数据库名称、VPC(指定具有复制实例的 VPC)和复制实例。要测试连接,请选择运行测试,然后创建端点。您还可以配置以下高级设置:maxFileSize和 Sc numberDataTypeal e。

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.sqlcreate_constraint.sql(如果最初没有创建完整架构)。

数据库管理员

重新启动任务以继续更改数据捕获(CDC)。

在 Amazon RDS for PostgreSQL 数据库实例上运行 VACUUM,然后重启 AWS DMS 任务以应用缓存的 CDC 更改。

数据库管理员
Task描述所需技能

查看 AWS DMS 日志和验证表。

检查并修复所有复制或验证错误。

数据库管理员

停止使用本地 Oracle 数据库及其依赖项。

停止所有 Oracle 依赖项,关闭 Oracle 数据库上的侦听器,然后运行 ALTER SYSTEM SWITCH LOGFILE。当 AWS DMS 任务没有显示任何活动时,将其停止。

数据库管理员

运行 AWS SCT 中的迁移后脚本。

在 Amazon RDS for PostgreSQL 中,运行以下脚本:create_foreign_key_constraint.sql and create_triggers.sql。确保序列为最新。

数据库管理员

完成 Amazon RDS for PostgreSQL 的其他步骤。

如果需要,增量序列以匹配 Oracle,运行 VACUUMANALYZE,然后拍摄合规性快照。

数据库管理员

打开 Amazon RDS for PostgreSQL 的连接。

从 Amazon RDS for PostgreSQL 中移除 AWS DMS 安全组,添加生产安全组,并将应用程序指向新数据库。

数据库管理员

清理 AWS DMS 对象。

移除终端节点、复制任务、复制实例和 EC2 实例。

SysAdmin,DBA

割接至 PostgreSQL 数据库

Task描述所需技能

查看 AWS DMS 日志和验证表。

检查并修复所有复制或验证错误。

数据库管理员

停止使用本地 Oracle 数据库及其依赖项。

停止所有 Oracle 依赖项,关闭 Oracle 数据库上的侦听器,然后运行 ALTER SYSTEM SWITCH LOGFILE。当 AWS DMS 任务没有显示任何活动时,将其停止。

数据库管理员

运行 AWS SCT 中的迁移后脚本。

在 Amazon RDS for PostgreSQL 中,运行以下脚本:create_foreign_key_constraint.sql and create_triggers.sql。确保序列为最新。

数据库管理员

完成 Amazon RDS for PostgreSQL 的其他步骤。

如果需要,增量序列以匹配 Oracle,运行 VACUUMANALYZE,然后拍摄合规性快照。

数据库管理员

打开 Amazon RDS for PostgreSQL 的连接。

从 Amazon RDS for PostgreSQL 中移除 AWS DMS 安全组,添加生产安全组,并将应用程序指向新数据库。

数据库管理员

清理 AWS DMS 对象。

移除终端节点、复制任务、复制实例和 EC2 实例。

SysAdmin,DBA

相关资源

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。