

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

# 将 Oracle 迁移 PeopleSoft 到亚马逊 RDS 定制版
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom"></a>

*Gaurav Gupta，Amazon Web Services*

## Summary
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-summary"></a>

[Oracle PeopleSoft](https://www.oracle.com/applications/peoplesoft/) 是一款适用于企业级流程的企业资源规划 (ERP) 解决方案。 PeopleSoft 具有三层架构：客户端、应用程序和数据库。 PeopleSoft 可以在[亚马逊关系数据库服务 (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) 上运行。现在，您还可以 PeopleSoft 在 [Amazon RDS Custom](https://aws.amazon.com/rds/custom/) 上运行，它提供对底层操作系统的访问权限。

[适用于 Oracle 的 Amazon RDS Custom](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/working-with-custom-oracle.html) 是一项托管式数据库服务，适用于需要访问底层操作系统和数据库环境的旧版、自定义和打包应用程序。当您将 Oracle 数据库迁移到 Amazon RDS Custom 时，Amazon Web Services (AWS) 可以管理备份任务和高可用性，而您可以专注于维护 PeopleSoft 应用程序和功能。有关迁移时需要考虑的关键因素，请参阅 AWS Prescriptive Guidance 中的 [Oracle 数据库迁移策略](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/strategies.html)。

此模式侧重于使用 Oracle Recovery Manager (RMAN) 备份将亚马逊弹性计算云 (Amazon EC2) 上的 PeopleSoft 数据库迁移到亚马逊 RDS Custom 的步骤。它在 EC2 实例和 [Amazon RDS Custom 之间使用亚马逊弹性文件系统 (Amazon EFS)](https://aws.amazon.com/efs/) 共享文件系统，尽管您也可以使用亚马逊 FSx 或任何共享云端硬盘。该模式使用 RMAN 完整备份（有时也称为 0 级备份）。

## 先决条件和限制
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-prereqs"></a>

**先决条件**
+ 在搭载 Oracle Linux 7、Oracle Linux 8、Red Hat Enterprise Linux （RHEL） 7 或 RHEL 8 的 Amazon EC2 上运行的 Oracle 版本 19C 源数据库。在此模式的示例中，源数据库名称为 `FSDMO92`，但这不是必需的。
**注意**  
您还可以将此模式用于本地 Oracle 源数据库。您必须在本地网络和虚拟私有云（VPC）之间建立适当的网络连接。
+ 一个 PeopleSoft 9.2 的演示实例。
+ 单个 PeopleSoft 应用程序层。但是，您可以调整此模式以使用多个应用程序层。
+ Amazon RDS Custom 配置了至少 8 GB 的交换空间。

**限制**

此模式不支持以下配置：
+ 将数据库 `ARCHIVE_LAG_TARGET` 参数设置为 60–7200 范围之外的值
+ 禁用数据库实例日志模式 (`NOARCHIVELOG`)
+ 关闭 EC2 实例的 Amazon Elastic Block Store (Amazon EBS) 优化属性
+ 修改附加到 EC2 实例的原始 EBS 卷
+ 添加新的 EBS 卷或将卷类型从 gp2 更改为 gp3
+ 更改 `LOG_ARCHIVE_FORMAT` 参数的扩展名格式（需要 `*.arc`）
+ 多路复用或更改控制文件位置和名称（必须为 `/rdsdbdata/db/*DBNAME*/controlfile/control-01.ctl`）

有关这些配置和其他不支持的配置的更多信息，请参阅 [Amazon RDS 文档](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-troubleshooting.html#custom-troubleshooting.fix-unsupported)。

**产品版本**

有关 Amazon RDS Custom 支持的 Oracle Database 版本和实例类型，请参阅 [Amazon RDS Custom for Oracle 的要求和限制](https://docs.amazonaws.cn/en_us/AmazonRDS/latest/UserGuide/custom-reqs-limits.html)

## 架构
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-architecture"></a>

**目标技术堆栈**
+ 应用程序负载均衡器
+ Amazon EFS
+ 适用于 Oracle 的 Amazon RDS Custom
+ AWS Secrets Manager
+ Amazon Simple Storage Service（Amazon S3）

**目标架构**

以下架构图表示在 AWS 的单个[可用区](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html)中运行的 PeopleSoft 系统。应用程序层可通过[应用程序负载均衡器](https://aws.amazon.com/elasticloadbalancing/application-load-balancer/)进行访问。应用程序和数据库都位于私有子网中，Amazon RDS Custom 和 Amazon EC2 数据库实例使用 Amazon EFS 共享文件系统来存储和访问 RMAN 备份文件。Amazon S3 用于创建自定义 RDS Oracle 引擎和存储重做日志元数据。

![Web 服务器、应用程序服务器、Amazon RDS Custom、EC2 数据库实例和私有子网中的 Amazon EFS。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/bd423dfe-f3c8-42d9-ac84-bf3d093c52bc/images/0e9a6431-e6c7-4047-ae6c-85311938041f.jpeg)


## 工具
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-tools"></a>

**工具**

*Amazon Web Services*
+ [适用于 Oracle 的 Amazon RDS Custom](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/working-with-custom-oracle.html) 是一项托管式数据库服务，适用于需要访问底层操作系统和数据库环境的旧版、自定义和打包应用程序。它能自动执行数据库管理任务，如备份和高可用性。 
+ [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) 可帮助您在 Amazon Web Services Cloud 中创建和配置共享文件系统。此模式使用 Amazon EFS 共享文件系统来存储和访问 RMAN 备份文件。
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) 帮助您将代码中的硬编码凭证（包括密码）替换为对 Secrets Manager 的 API 调用，以便以编程方式检索密钥。在这种模式中，您可以从 Secrets Manager 检索数据库用户密码来创建 `RDSADMIN` 和 `ADMIN` 用户以及更改 `sys` 和 `system` 密码。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 是一项基于云的对象存储服务，可帮助您存储、保护和检索任意数量的数据。
+ [弹性负载均衡（ELB）](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)将传入的应用程序或网络流量分配到多个目标。例如，您可以在一个或多个可用区中的 Amazon Elastic Compute Cloud (Amazon EC2) 实例、容器和 IP 地址之间分配流量。此模式使用应用程序负载均衡器。

*其他工具*
+ Oracle Recovery Manager (RMAN) 为 Oracle 数据库提供备份和恢复支持。此模式使用 RMAN 对在 Amazon RDS Custom 上还原的 Amazon EC2 上的源 Oracle 数据库执行热备份。

## 最佳实践
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-best-practices"></a>
+ 对于数据库初始化参数，请自定义 Amazon RDS 自定义数据库实例为其提供的标准 pfile， PeopleSoft 而不是使用 Oracle 源数据库中的 spfile。这是因为在 Amazon RDS Custom 中创建只读副本时，空格和评论会导致问题。有关数据库初始化参数的更多信息，请参阅 Oracle Support Note 1100831.1（需要 [Oracle 支持](https://support.oracle.com/portal/)账户）。
+ 默认情况下，Amazon RDS Custom 使用 Oracle 自动内存管理。如果您想使用 Hugemem 内核，可以将 Amazon RDS Custom 配置为改用自动共享内存管理。
+ 默认情况下启用 `memory_max_target` 参数。框架会在后台使用它来创建只读副本。
+ 启用 Oracle 闪回数据库。此功能在故障转移（而非切换）测试场景中恢复备用数据库时非常有用。

## 操作说明
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-epics"></a>

### 设置数据库实例和文件系统
<a name="set-up-the-db-instance-and-file-system"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建数据库实例。 | 在 Amazon RDS 控制台中，使用名为 FSDMO92 （或您的源数据库名称）的数据库名称创建适用于 Oracle 的 Amazon RDS 自定义数据库实例。<br />有关说明，请参阅 AWS 文档中的[使用 Amazon RDS Custom](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-custom.html) 和博客文章[Amazon RDS Custom for Oracle – 数据库环境中的新控制功能](https://aws.amazon.com/blogs/aws/amazon-rds-custom-for-oracle-new-control-capabilities-in-database-environment/)。这样可以确保将数据库名称设置为与源数据库相同的名称。（如果留空，则 EC2 实例和数据库名称将设置为 `ORCL`。） | 数据库管理员 | 

### 对源 Amazon EC2 数据库执行 RMAN 完整备份
<a name="perform-an-rman-full-backup-of-the-source-amazon-ec2-database"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建备份脚本。 | 创建 RMAN 备份脚本以将数据库备份到您安装的 Amazon EFS 文件系统（以下示例中为 `/efs`）。您可以使用示例代码或运行一个现有的 RMAN 脚本。<pre>#!/bin/bash<br />Dt=`date +'%Y%m%d-%H%M'`<br />BACKUP_LOG="rman-${ORACLE_SID}-$Dt"<br />export TAGDATE=`date +%Y%m%d%H%M`;<br />LOGPATH=/u01/scripts/logs<br />rman target / >> $LOGPATH/rman-${ORACLE_SID}-$Dt << EOF<br />SQL "ALTER SYSTEM SWITCH LOGFILE";<br />SQL "ALTER SESSION SET NLS_DATE_FORMAT="DD.MM.YYYY HH24:MI:SS"";<br />RUN<br />{<br />  ALLOCATE CHANNEL ch11 TYPE DISK MAXPIECESIZE 5G;<br />  ALLOCATE CHANNEL ch12 TYPE DISK MAXPIECESIZE 5G;<br />  BACKUP AS COMPRESSED BACKUPSET FULL DATABASE FORMAT '/efs/rman_backup/FSCM/%d_%T_%s_%p_FULL' ;<br />  SQL "ALTER SYSTEM ARCHIVE LOG CURRENT";<br />  BACKUP FORMAT '/efs/rman_backup/FSCM/%d_%T_%s_%p_ARCHIVE' ARCHIVELOG ALL DELETE ALL INPUT ;<br />  BACKUP CURRENT CONTROLFILE FORMAT '/efs/rman_backup/FSCM/%d_%T_%s_%p_CONTROL';<br />}<br />EXIT;<br />EOF<br />  </pre> | 数据库管理员 | 
| 运行备份脚本。 | 要运行 RMAN 备份脚本，请以 Oracle 主用户身份登录，然后运行该脚本。<pre>$  chmod a+x rman_backup.sh<br />$ ./rman_backup.sh &</pre> | 数据库管理员 | 
| 检查是否存在错误，并记下备份文件的名称。 | 检查 RMAN 日志文件中的错误。如果一切正常，请运行以下命令列出控制文件的备份。<pre>RMAN> list backup of controlfile;<br /><br />using target database control file instead of recovery catalog<br /></pre><br />记下输出文件的名称。<pre>List of Backup Sets<br />===================<br /><br />BS Key  Type LV Size       Device Type Elapsed Time Completion Time<br />------- ---- -- ---------- ----------- ------------ ---------------<br />12      Full    21.58M     DISK        00:00:01     13-JUL-22<br />        BP Key: 12   Status: AVAILABLE  Compressed: NO  Tag: TAG20220713T150155<br />        Piece Name: /efs/rman_backup/FSCM/FSDMO92_20220713_12_1_CONTROL<br /> Control File Included: Ckp SCN: 16559159985898   Ckp time: 13-JUL-22<br /></pre><br />当您在 Amazon RDS Custom 上还原数据库时，您将使用备份控制文件 `/efs/rman_backup/FSCM/FSDMO92_20220713_12_1_CONTROL`。 | 数据库管理员 | 

### 关闭源应用程序层
<a name="shut-down-the-source-application-tier"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 关闭应用程序。 | 若要关闭源应用程序层，请使用 `psadmin` 实用程序或 `psadmin` 命令行实用程序。[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | 数据库管理员、管理员 PeopleSoft  | 

### 配置目标 Amazon RDS Custom 数据库
<a name="configure-the-target-amazon-rds-custom-database"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 安装 nfs-utils rpm 包。 | 要安装 `nfs-utils rpm` 程序包，请运行以下命令。<pre>$ yum install -y nfs-utils<br /></pre> | 数据库管理员 | 
| 附加 EFS 存储。 | 从 Amazon EFS 控制台页面获取 Amazon EFS 附加命令。使用网络文件系统 (NFS) 客户端在 Amazon RDS 实例上附加 EFS 文件系统。<pre>sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-xxxxxxxxxx.efs.eu-west-1.amazonaws.com:/ /efs<br />sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-xxxxxxxxxx.efs.eu-west-1.amazonaws.com:/ /efs</pre> | 数据库管理员 | 

### 删除起始数据库并创建用于存储数据库文件的目录
<a name="drop-the-starter-database-and-create-the-directories-to-store-the-database-files"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 暂停自动化模式。 | 在继续执行后续步骤之前，您必须暂停 Amazon RDS Custom 数据库实例的[自动化模式](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-managing.html#custom-managing.pausing)，以确保自动化不会干扰 RMAN 恢复活动。<br />您可以使用 AWS 管理控制台或 AWS 命令行界面（AWS CLI）命令暂停自动化（请确保您已先[配置 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)）。<pre>aws rds modify-db-instance \<br />--db-instance-identifier peoplesoft-fscm-92 \<br />--automation-mode all-paused \<br />--resume-full-automation-mode-minute 360 \<br />--region eu-west-1<br /></pre><br />当您指定暂停的持续时间时，请确保为 RMAN 恢复留出足够的时间。这取决于源数据库的大小，因此请相应地修改 360 值。<br />另外，请确保暂停自动化的总时间不与数据库的备份或维护时段重叠。 | 数据库管理员 | 
| 创建和修改的参数文件 PeopleSoft | 要创建和修改的 pfile PeopleSoft，请使用使用 Amazon RDS 自定义数据库实例创建的标准 pfile。添加你需要的参数 PeopleSoft。[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | 数据库管理员 | 
| 删除起始数据库。 | 若要删除现有的 Amazon RDS Custom 数据库，请使用以下代码。<pre>$ sqlplus / as sysdba<br />SQL> shutdown immediate;<br />SQL> startup mount exclusive restrict;<br />SQL> drop database;<br />SQL> exit</pre> |  | 
| 从备份中恢复 Amazon RDS Custom 数据库。 | 使用以下脚本恢复数据库。该脚本将首先恢复控制文件，然后从存储在 EFS 附加上的备份片段恢复整个数据库。<pre>#!/bin/bash<br />Dt=`date +'%Y%m%d-%H%M'`<br />BACKUP_LOG="rman-${ORACLE_SID}-$Dt"<br />export TAGDATE=`date +%Y%m%d%H%M`;<br />LOGPATH=/rdsdbdata/scripts/logs<br />rman target / >> $LOGPATH/rman-${ORACLE_SID}-$Dt << EOF<br />restore controlfile from "/efs/rman_backup/FSCM/FSDMO92_20220713_12_1_CONTROL";<br />alter database mount;<br />run<br />{<br />set newname for database to '/rdsdbdata/db/FSDMO92_A/datafile/%f_%b';<br />SET NEWNAME FOR TEMPFILE 1 TO '/rdsdbdata/db/FSDMO92_A/datafile/%f_%b';<br />RESTORE DATABASE;<br />SWITCH DATAFILE ALL;<br />SWITCH TEMPFILE ALL;<br />RECOVER DATABASE;<br />}<br />EOF<br />sqlplus / as sysdba >> $LOGPATH/rman-${ORACLE_SID}-$Dt<<-EOF<br />ALTER DATABASE RENAME FILE '/u01/psoft/db/oradata/FSDMO92/redo01.log' TO '/rdsdbdata/db/FSDMO92_A/onlinelog/redo01.log';<br />ALTER DATABASE RENAME FILE '/u01/psoft/db/oradata/FSDMO92/redo02.log' TO '/rdsdbdata/db/FSDMO92_A/onlinelog/redo02.log';<br />ALTER DATABASE RENAME FILE '/u01/psoft/db/oradata/FSDMO92/redo03.log' TO '/rdsdbdata/db/FSDMO92_A/onlinelog/redo03.log';<br />alter database clear unarchived logfile group 1;<br />alter database clear unarchived logfile group 2;<br />alter database clear unarchived logfile group 3;<br />alter database open resetlogs;<br />EXIT<br />EOF<br /></pre> | 数据库管理员 | 

### 从 Secrets Manager 中检索密码，创建用户和更改密码
<a name="retrieve-passwords-from-secrets-manager-create-users-and-change-passwords"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 从 Secrets Manager 中检索密码。 | 您可以使用 AWS 管理控制台或 AWS CLI 执行此步骤。以下步骤显示了控制台的说明。[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | 数据库管理员 | 
| 创建 RDSADMIN 用户。 | `RDSADMIN` 是用于监控和编排 Amazon RDS Custom 数据库实例的数据库用户。由于起始数据库已被删除，并且目标数据库已使用 RMAN 从源恢复，因此您必须在恢复操作后重新创建此用户，以确保 Amazon RDS Custom 监控能按预期运行。您还必须为 `RDSADMIN` 用户创建单独的配置文件和表空间。[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | 数据库管理员 | 
| 创建主用户。 | 由于起始数据库已被删除，并且目标数据库已使用 RMAN 从源中恢复，因此您必须重新创建主用户。在此示例中，主用户名为 `admin`。<pre>SQL> create user admin identified by <password>;<br />SQL> grant dba to admin</pre> | 数据库管理员 | 
| 更改系统密码。 | 使用您从 Secrets Manager 中检索到的密码更改系统密码。<pre>SQL> alter user sys identified by xxxxxxxxxxx;<br />SQL> alter user system identified by xxxxxxxxxx;</pre><br />如果您不更改这些密码，Amazon RDS Custom 会显示错误消息：“数据库监控用户或用户凭证已更改。” | 数据库管理员 | 

### 配置 Amazon RDS 自定义的 TNS 条目和 PeopleSoft
<a name="configure-the-tns-entries-for-amazon-rds-custom-and-peoplesoft"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 配置 tnsnames 文件。 | 若要从应用程序层连接到数据库，请配置 `tnsnames.ora` 文件，以便您可以从应用程序层连接到数据库。在以下示例中，您可以看到有一个指向 `tnsnames.ora` 文件的软链接，但该文件默认为空。 <pre>$ cd /rdsdbbin/oracle/network/admin<br />$ ls -ltr<br />-rw-r--r-- 1 rdsdb database 1536 Feb 14  2018 shrept.lst<br />lrwxrwxrwx 1 rdsdb database   30 Apr  5 13:19 listener.ora -> /rdsdbdata/config/listener.ora<br />lrwxrwxrwx 1 rdsdb database   28 Apr  5 13:19 sqlnet.ora -> /rdsdbdata/config/sqlnet.ora<br />lrwxrwxrwx 1 rdsdb database   30 Apr  5 13:19 tnsnames.ora -> /rdsdbdata/config/tnsnames.ora</pre>[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | 数据库管理员 | 

### 创建 spfile 软链接
<a name="create-the-spfile-softlink"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建 spfile 软链接。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | 数据库管理员 | 

### 执行迁移后步骤
<a name="perform-post-migration-steps"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 验证架构、连接和维护任务。 | 若要完成迁移，请执行以下任务。[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/migrate-oracle-peoplesoft-to-amazon-rds-custom.html) | 数据库管理员 | 

## 相关的资源
<a name="migrate-oracle-peoplesoft-to-amazon-rds-custom-resources"></a>
+ [使用 Amazon RDS Custom](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-custom.html)
+ [适用于 Oracle 的 Amazon RDS Custom — 数据库环境中的新控制功能](https://aws.amazon.com/blogs/aws/amazon-rds-custom-for-oracle-new-control-capabilities-in-database-environment/)（博客文章）
+ [将适用于 Oracle 的 Amazon RDS Custom 与 Amazon EFS 集成](https://aws.amazon.com/blogs/database/integrate-amazon-rds-custom-for-oracle-with-amazon-efs/)（博客文章）
+ [将 Amazon RDS 配置为 Oracle PeopleSoft 数据库](https://d1.awsstatic.com/whitepapers/configuring-amazon-rds-as-peoplesoft-database.pdf)（AWS 白皮书）