使用 AWS DMS 将 Oracle PeopleSoft 数据库迁移到 AWS - AWS Prescriptive Guidance

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

使用 AWS DMS 将 Oracle PeopleSoft 数据库迁移到 AWS

创建者:sampath kathirvel (AWS)

环境:生产

来源:甲骨文 PeopleSoft

目标:Amazon RDS for Oracle

R 类型:更换平台

工作负载:Oracle

技术:迁移;数据库

Amazon Web Services:AWS DMS;Amazon RDS

Summary

Oracle PeopleSoft 是一款适用于企业级流程的企业资源规划 (ERP) 解决方案。 PeopleSoft 具有三层架构:客户端、应用程序和数据库。 PeopleSoft 可以在亚马逊关系数据库服务 (Amazon RDS) 上运行。

如果您将 Oracle 数据库迁移到 Amazon RDS,Amazon Web Services (AWS) 可以处理备份任务和高可用性,让您可以自由地专注于维护 PeopleSoft 应用程序及其功能。有关迁移过程中需要考虑的关键因素完整列表,请参阅 AWS Prescriptive Guidance 中的 Oracle 数据库迁移策略

此模式提供了一种解决方案,用于使用 Oracle Data Pump 与 AWS Database Migration Service (AWS DMS) 及其更改数据捕获 (CDC) 功能将本地 Oracle 数据库迁移到 Amazon RDS for Oracle。

在迁移 Oracle 等关键 ERP 应用程序时 PeopleSoft,最大限度地减少停机时间是关键。AWS DMS 支持从源数据库到目标数据库的满负荷和连续复制,可最大限度地减少停机时间。AWS DMS 还为迁移提供实时监控和日志记录,这可帮助您识别和解决任何可能导致停机的问题。

使用 AWS DMS 复制更改时,必须指定时间或系统更改号 (SCN),作为供 AWS DMS 从数据库日志中读取更改的起点。为了确保 AWS DMS 可以访问这些更改,请务必在指定的时间内保持这些日志在服务器上的可访问性。

先决条件和限制

先决条件

  • 已在您的 Amazon Web Services Cloud 环境中预调配 Amazon RDS for Oracle 数据库作为目标数据库。

  • 在本地运行或在 AWS 云中的亚马逊弹性计算云 (Amazon EC2) 上运行的 Oracle PeopleSoft 数据库。

    注意:此模式专为从本地迁移到 AWS 而设计,但已在 Amazon EC2 实例上使用 Oracle 数据库进行了测试。要从本地迁移,您需要配置适当的网络连接。

  • 架构详细信息。将 Oracle PeopleSoft 应用程序迁移到 Amazon RDS for Oracle 时,必须确定要迁移哪个 Oracle 数据库架构(例如SYSADM)。在开始迁移进程之前,请收集有关架构的以下详细信息:

    • 大小

    • 每种对象类型的对象数量

    • 无效对象数量。

    此信息将有助于迁移进程。

限制

  • 此场景仅在 PeopleSoft DEMO 数据库中进行了测试。它尚未使用大型数据集进行测试。

架构

下图显示了一个实例,该实例将 Oracle 数据库作为源数据库,将 Amazon RDS for Oracle 数据库作为目标数据库进行运行。该数据通过使用 Oracle Data Pump 从源 Oracle 数据库导出,并导入至目标 Amazon RDS for Oracle 数据库,并使用 AWS DMS 复制 CDC 更改。

从本地数据库实例到 Amazon RDS 的五步流程。
  1. 初始步骤涉及使用 Oracle Data Pump 从源数据库提取数据,然后将其发送到 Amazon RDS for Oracle 数据库目标。

  2. 数据将从 AWS DMS 中的源数据库发送至源端点。

  3. 数据从源端点发送至 AWS DMS 复制实例,在此执行复制任务。

  4. 复制任务完成后,数据将发送至 AWS DMS 中的目标端点。

  5. 数据将从目标端点发送至 Amazon RDS for Oracle 数据库实例。

工具

Amazon Web Services

其他服务

  • Oracle 数据泵 可帮助您将数据和元数据从一个数据库高速移动至另一个数据库。

最佳实践

迁移 LOB

如果您的源数据库包含需要迁移至目标数据库的大型二进制对象 (LOB),AWS DMS 会提供以下选项:

  • 完整 LOB 模式 – AWS DMS 可将所有 LOB 从源数据库迁移到目标数据库,而不管大小如何。尽管迁移速度比较慢,但其优点是数据不会被截断。为了提高性能,您可以在新的复制实例上创建单独的任务,以迁移 LOB 大于几兆字节的表。

  • 受限 LOB 模式 – 您可以指定 LOB 列数据的最大大小,这允许 AWS DMS 预先分配资源和批量应用 LOB。如果 LOB 列的大小超过任务中指定的大小,AWS DMS 会截断数据,并向 AWS DMS 日志文件发送警告。如果您的 LOB 数据大小在有限的 LOB 大小之内,则可通过使用受限 LOB 模式提高性能。

  • 内联 LOB 模式 – 您可以通过复制小型和大型 LOB,在不截断数据或降低任务性能的情况下迁移 LOB。首先,为 InlineLobMaxSize 参数指定一个值,该值仅在完整 LOB 模式设置为 true 时可用。AWS DMS 任务以内联方式传输小型 LOB,如此效率更高。然后,AWS DMS 通过从源表中执行查找迁移大型 LOB。但是,内联 LOB 模式仅适用于完全加载阶段。

生成序列值

请记住,在使用 AWS DMS 进行更改数据捕获过程中,不会从源数据库复制增量序列号。为避免序列值存在差异,您必须从数据来源中为所有序列生成最新的序列值,并将其应用至目标 Amazon RDS for Oracle 数据库。

凭证管理

为了帮助保护您的 AWS 资源,我们建议遵循 AWS Identity and Access Management (IAM) 的最佳实践

操作说明

任务描述所需技能

下载 模板。

下载 dms_instance.yaml AWS CloudFormation 模板以配置 AWS DMS 复制实例及其源和目标终端节点。

云管理员、数据库管理员

开始创建堆栈。

  1. 在 AWS 管理控制台上,选择CloudFormation

  2. 选择创建堆栈

  3. 对于指定模板,请选择上传模板文件

  4. 选择选择文件

  5. 选择 DMS_instance.yaml 文件。

  6. 选择下一步

云管理员、数据库管理员

指定参数。

  1. 堆栈名称中,输入堆栈名称。

  2. AWS DMS 实例参数下方,输入以下参数:

    • DMS InstanceType — 根据您的业务需求为 AWS DMS 复制实例选择所需的实例。

    • DMS StorageSize — 根据您的迁移大小输入 AWS DMS 实例的存储大小。

  3. 源 Oracle 数据库配置下方,输入以下参数:

    • SourceOracleEndpointID-源 Oracle 数据库服务器的名称

    • SourceOracleDatabaseName— 源数据库服务名称或会话 ID (SID)(如果适用)

    • SourceOracleUserName— 源数据库用户名(默认为 system)

    • SourceOracledbPassword-源数据库用户名的密码

    • SourceOracledbPort-源数据库端口

  4. Oracle 数据库配置的目标 RDS 下方,输入以下参数:

    • targetRDS OracleEndpoint ID — 目标 RDS 数据库终端节点

    • targetRDS OracleDatabaseName — 目标 RDS 数据库名称

    • targetRS OracleUserName — 目标 RDS 用户名

    • TargetRDSOracleDBPassword – 目标 RDS 密码

    • TargetOracledbPort-目标 RDS 数据库端口

  5. VPC、子网和安全组配置下方,请输入以下参数:

    • VPCID – 适用于复制实例的 VPC

    • VPC SecurityGroupId — 复制实例的 VPC 安全组

    • DMSSubnet1 – 可用区 1 的子网

    • DMSSubnet2 – 可用区 2 的子网

  6. 选择 Next(下一步)。

云管理员、数据库管理员

创建堆栈。

  1. 配置堆栈选项页面上,对于标签,输入任何可选值。

  2. 选择 Next(下一步)。

  3. 查看页面上,验证详细信息,然后选择提交

预置应在 5-10 分钟左右完成。当 AWS CloudFormation Stacks 页面显示 CREAT E_COMPLETE 时,它就完成了。

云管理员、数据库管理员

设置端点。

  1. 从 AWS 管理控制台上,选择数据库迁移服务

  2. 在资源管理下方,选择复制实例

  3. 在资源管理下方,选择端点

云管理员、数据库管理员

测试连接。

在源端点和目标端点显示为“活动”状态后,测试连接。为每个端点(源端点和目标端点)选择运行测试,以确保状态显示为成功。

云管理员、数据库管理员
任务描述所需技能

生成 SCN。

当源数据库处于活动状态并用于应用程序,请使用 Oracle Data Pump 启动数据导出。您必须首先从源数据库生成系统更改号 (SCN),以便在使用 Oracle Data Pump 导出期间保持数据一致性,并作为 AWS DMS 中更改数据捕获的起点。

要从您的源数据库生成当前 SCN,请输入以下 SQL 语句。

SQL> select name from v$database; SQL> select name from v$database; NAME --------- PSFTDMO SQL> SELECT current_scn FROM v$database; CURRENT_SCN ----------- 23792008

保存生成的 SCN,以便在导出数据时使用,并用于创建 AWS DMS 复制任务。

数据库管理员

创建参数文件。

要创建用于导出架构的参数文件,您可使用以下代码。

$ cat exp_datapmp.par userid=system/******* directory=DATA_PUMP_DIR logfile=export_dms_sample_user.log dumpfile=export_dms_sample_data_%U.dmp schemas=SYSADM flashback_scn=23792008

注意:您也可以根据需要使用以下命令来定义自己的 DATA_PUMP_DIR

SQL> CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS '/opt/oracle/product/19c/dbhome_1/dmsdump/'; Directory created. SQL> GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO system; Grant succeeded. SQL> SQL> SELECT owner, directory_name, directory_path FROM dba_directories WHERE directory_name='DATA_PUMP_DIR'; OWNER DIRECTORY_NAME DIRECTORY_PATH ------------------------------------------------------------------------------------------------------------------ SYS DATA_PUMP_DIR /opt/oracle/product/19c/dbhome_1/dmsdump/
数据库管理员

导出架构。

要执行导出,请使用 expdp 实用程序。

$ expdp parfile=exp_datapmp.par ....................... Transferring the dump file with DBMS_FILE_TRANSFER to Target: . . exported "SYSADM"."PS_XML_TEMPLT_LNG" 6.320 KB 0 rows . . exported "SYSADM"."PS_XML_TEMPLT_LNK" 6.328 KB 0 rows . . exported "SYSADM"."PS_XML_XLATDEF_LNG" 6.320 KB 0 rows . . exported "SYSADM"."PS_XML_XLATITM_LNG" 7.171 KB 0 rows . . exported "SYSADM"."PS_XPQRYRUNCNTL" 7.601 KB 0 rows . . exported "SYSADM"."PS_XPQRYRUNPARM" 7.210 KB 0 rows . . exported "SYSADM"."PS_YE_AMOUNTS" 9.351 KB 0 rows . . exported "SYSADM"."PS_YE_DATA" 16.58 KB 0 rows . . exported "SYSADM"."PS_YE_EE" 6.75 KB 0 rows . . exported "SYSADM"."PS_YE_W2CP_AMOUNTS" 9.414 KB 0 rows . . exported "SYSADM"."PS_YE_W2CP_DATA" 20.94 KB 0 rows . . exported "SYSADM"."PS_YE_W2C_AMOUNTS" 10.27 KB 0 rows . . exported "SYSADM"."PS_YE_W2C_DATA" 20.95 KB 0 rows . . exported "SYSADM"."PS_ZBD_JOBCODE_TBL" 14.60 KB 0 rows . . exported "SYSADM"."PTGRANTTBL" 5.468 KB 0 rows Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded ** Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is: /opt/oracle/product/19c/dbhome_1/dmsdump/export_dms_sample_data_01.dmp Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at Mon Dec 19 20:13:57 2022 elapsed 0 00:38:22
数据库管理员
任务描述所需技能

将转储文件传输至目标实例。

要使用 DBMS_FILE_TRANSFER 传输文件,您需要创建从源数据库到 Amazon RDS for Oracle 实例的数据库链接。建立链接后,您可以使用该实用程序将 Data Pump 文件直接传输至 RDS 实例。

或者,您可以将 Data Pump 文件传输至 Amazon Simple Storage Service (Amazon S3),然后将其导入至 Amazon RDS for Oracle 实例。有关该选项的更多信息,请参阅“其他信息”部分。

要创建一个用于连接到位于目标数据库实例中的 Amazon RDS 主用户的数据库链接 ORARDSDB,请在源数据库上运行以下命令。

$sqlplus / as sysdba $ SQL> create database link orardsdb connect to admin identified by "*****" using '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = testpsft.*******.us-west-2.rds.amazonaws.com)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))'; Database link created.
数据库管理员

测试数据库链接。

测试数据库链接,以确保您可以使用 sqlplus 连接到 Amazon RDS for Oracle 目标数据库。

SQL> SQL> select name from v$database@orardsdb; NAME --------- ORCL SQL>
数据库管理员

将转储文件传输至目标数据库。

要将转储文件复制到 Amazon RDS for Oracle 数据库,您可以使用默认 DATA_PUMP_DIR 目录,也可以使用以下代码创建自己的目录。

exec rdsadmin.rdsadmin_util.create_directory(p_directory_name => ‘TARGET_PUMP_DIR’);

以下脚本使用名为 orardsdb 的数据库链接,将名为 export_dms_sample_data_01.dmp 的转储文件从源实例复制到目标 Amazon RDS for Oracle 数据库。

$ sqlplus / as sysdba SQL> BEGIN DBMS_FILE_TRANSFER.PUT_FILE( source_directory_object => 'DATA_PUMP_DIR', source_file_name => 'export_dms_sample_data_01.dmp', destination_directory_object => 'TARGET_PUMP_DIR’', destination_file_name => 'export_dms_sample_data_01.dmp', destination_database => 'orardsdb' ); END; / PL/SQL procedure successfully completed.
数据库管理员

在目标数据库中列出转储文件。

PL/SQL 过程完成后,您可使用以下代码在 Amazon RDS for Oracle 数据库中列出数据转储文件。

SQL> select * from table (rdsadmin.rds_file_util.listdir(p_directory => ‘TARGET_PUMP_DIR’));
数据库管理员

在目标数据库上启动导入。

在开始导入进程前,请使用数据转储文件在目标 Amazon RDS for Oracle 数据库上设置角色、架构和表空间。

要执行导入,请使用 Amazon RDS 主用户账户访问目标数据库,并使用 tnsnames.ora 文件中的连接字符串名称,其中包括 Amazon RDS for Oracle 数据库 tns-entry。如有必要,可以纳入重映射选项,将数据转储文件导入不同的表空间或使用不同架构名称。

要开始导入,请使用以下代码。

impdp admin@orardsdb directory=TARGET_PUMP_DIR logfile=import.log dumpfile=export_dms_sample_data_01.dmp

为确保成功导入,请检查导入日志文件中是否存在任何错误,并查看对象数、行数和无效对象等详细信息。如果有任何无效对象,请重新编译它们。此外,比较源数据库对象和目标数据库对象,以确认它们是否匹配。

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

创建复制任务。

通过使用以下步骤创建 AWS DMS 复制任务:

  1. 在 AWS DMS 控制台的转换和迁移,选择数据库迁移任务

  2. 任务配置下方,为任务标识符输入您的任务标识符。

  3. 对于复制实例,请选择您创建的 DMS 复制实例。

  4. 对于源数据库端点,请选择源端点。

  5. 对于目标数据库端点,请选择您的目标 Amazon RDS for Oracle 数据库。

  6. 对于迁移类型,请选择仅复制数据更改。如果您收到需要开启补充日志记录的消息,请按照其他信息部分中的说明进行操作。

  7. 任务设置下方,选择指定日志序列号

  8. 对于系统更改号,请输入从源 Oracle 数据库生成的 Oracle 数据库 SCN。

  9. 选择启用验证

  10. 选择 “启用 CloudWatch 日志”。

    通过激活此功能,您可以验证数据和 A mazon CloudWatch 日志,以查看 AWS DMS 复制实例日志。

  11. 选择规则下,完成以下操作:

    • 对于架构,请选择输入架构

    • 对于架构名称,请输入 SYSADM

    • 对于表名称,请输入 %

    • 对于操作,请选择包含

  12. 转换规则下,完成以下操作:

    • 对于目标,请选择

    • 对于架构名称,请选择输入架构

    • 对于架构名称,请输入 SYSADM。

    • 对于操作,请选择重命名为

  13. 选择创建任务

创建任务后,它会将 CDC 从在 CDC 启动模式下提供的 SCN 迁移到 Amazon RDS for Oracle 数据库实例。您也可以通过查看 CloudWatch 日志进行验证。

云管理员、数据库管理员
任务描述所需技能

验证数据传输。

AWS DMS 任务启动后,您可查看任务页面上的表统计数据选项卡,以查看对数据所做的更改。

您可以在控制台的数据库迁移任务页面监控正在进行的复制的状态。

有关更多信息,请参阅 AWS DMS 数据验证

云管理员、数据库管理员
任务描述所需技能

停止复制。

停止复制过程,并停止源应用程序服务。

云管理员、数据库管理员

启动 PeopleSoft 中间层。

在 AWS 中启动目标 PeopleSoft 中间层应用程序,并将其定向到最近迁移的 Amazon RDS for Oracle 数据库。

在访问应用程序时,您应该会注意到,现已通过 Amazon RDS for Oracle 数据库建立了所有应用程序连接。

数据库管理员、管理员 PeopleSoft

关闭源数据库。

在确认源数据库不再有其他连接后,可关闭源数据库。

数据库管理员

相关的资源

其他信息

使用 Amazon S3 传输文件

要将文件传输至 Amazon S3,您可以使用 AWS CLI 或 Amazon S3 控制台。将文件传输至 Amazon S3 后,您可以使用 Amazon RDS for Oracle 实例从 Amazon S3 导入 Data Pump 文件。

如果选择使用 Amazon S3 集成作为替代方法传输转储文件,请执行以下步骤:

  1. 创建 S3 存储桶。

  2. 使用 Oracle Data Pump 从源数据库导出数据。

  3. 将 Data Pump 文件上传至 S3 存储桶。

  4. 将 Data Pump 文件从 S3 存储桶下载至目标 Amazon RDS for Oracle 数据库。

  5. 使用 Data Pump 文件执行导入。

注意:要在 S3 和 RDS 实例之间传输大型数据文件,建议使用 Amazon S3 Transfer Acceleration 功能。

激活补充日志记录

如果您收到一条警告消息,要求在源数据库中为进行中的复制启用补充日志记录,请使用以下步骤。

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS; SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS; SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS; SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;