將 Oracle PeopleSoft 遷移至 Amazon RDS Custom - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將 Oracle PeopleSoft 遷移至 Amazon RDS Custom

由 Gaurav Gupta (AWS) 建立

Summary

Oracle PeopleSoft 是適用於整個企業程序的企業資源規劃 (ERP) 解決方案。PeopleSoft 具有三層架構:用戶端、應用程式和資料庫。PeopleSoft 可以在 Amazon Relational Database Service (Amazon RDS) 上執行。現在,您也可以在 Amazon RDS Custom 上執行 PeopleSoft,這可讓您存取基礎作業系統。

Amazon RDS Custom for Oracle 是一種受管資料庫服務,適用於需要存取基礎作業系統和資料庫環境的舊版、自訂和封裝應用程式。當您將 Oracle 資料庫遷移至 Amazon RDS Custom 時,Amazon Web Services (AWS) 可以管理備份任務和高可用性,同時可以專注於維護 PeopleSoft 應用程式和功能。如需考慮遷移的關鍵因素,請參閱 AWS 規範指引中的 Oracle 資料庫遷移策略

此模式著重於使用 Oracle Recovery Manager (RMAN) 備份,將 Amazon Elastic Compute Cloud (Amazon EC2) 上的 PeopleSoft 資料庫遷移至 Amazon RDS Custom 的步驟。它在 EC2 執行個體和 Amazon RDS Custom 之間使用 Amazon Elastic File System (Amazon EFS) 共用檔案系統,但您也可以使用 Amazon FSx 或任何共用磁碟機。模式使用 RMAN 完整備份 (有時稱為層級 0 備份)。

先決條件和限制

先決條件

  • 使用 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 文件

產品版本

對於 Amazon RDS Custom 支援的 Oracle 資料庫版本和執行個體類別,請參閱 Amazon RDS Custom for Oracle 的要求和限制。

架構

目標技術堆疊

  • Application Load Balancer

  • Amazon EFS

  • Amazon RDS Custom for Oracle

  • AWS Secrets Manager

  • Amazon Simple Storage Service (Amazon S3)

目標架構

下列架構圖代表在 AWS 上單一可用區域中執行的 PeopleSoft 系統。應用程式層是透過 Application Load Balancer 存取。應用程式和資料庫都位於私有子網路中,Amazon RDS Custom 和 Amazon EC2 資料庫執行個體會使用 Amazon EFS 共用檔案系統來存放和存取 RMAN 備份檔案。Amazon S3 用於建立自訂 RDS Oracle 引擎和儲存重做日誌中繼資料。

Web 伺服器、應用程式伺服器、Amazon RDS Custom、EC2 資料庫執行個體和私有子網路中的 Amazon EFS。

工具

工具

AWS 服務

  • Amazon RDS Custom for Oracle 是一項受管資料庫服務,適用於需要存取基礎作業系統和資料庫環境的舊版、自訂和封裝應用程式。它可自動化資料庫管理任務,例如備份和高可用性。 

  • Amazon Elastic File System (Amazon EFS) 可協助您在 AWS 雲端中建立和設定共用檔案系統。此模式使用 Amazon EFS 共用檔案系統來存放和存取 RMAN 備份檔案。

  • AWS Secrets Manager 可協助您以 API 呼叫 Secrets Manager,以程式設計方式擷取秘密,取代程式碼中的硬式編碼登入資料,包括密碼。在此模式中,您會從 Secrets Manager 擷取資料庫使用者密碼,以建立 RDSADMINADMIN使用者,以及變更 syssystem密碼。

  • Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。

  • Elastic Load Balancing (ELB) 會將傳入的應用程式或網路流量分配到多個目標。例如,您可以在一或多個可用區域中跨 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體、容器和 IP 地址分配流量。此模式使用 Application Load Balancer。

其他工具

  • Oracle Recovery Manager (RMAN) 提供 Oracle 資料庫的備份和復原支援。此模式使用 RMAN 在 Amazon EC2 上執行在 Amazon RDS Custom 上還原的來源 Oracle 資料庫熱備份。

最佳實務

  • 對於資料庫初始化參數,自訂 Amazon RDS Custom 資料庫執行個體為 PeopleSoft 提供的標準 pfile,而不是使用 Oracle 來源資料庫的 spfile。這是因為在 Amazon RDS Custom 中建立僅供讀取複本時,空格和註解會導致問題。如需資料庫初始化參數的詳細資訊,請參閱 Oracle Support Note 1100831.1 (需要 Oracle Support 帳戶)。

  • 根據預設,Amazon RDS Custom 會使用 Oracle 自動記憶體管理。如果您想要使用 Hugemem 核心,您可以將 Amazon RDS Custom 設定為改用自動共用記憶體管理。

  • 依預設保持 memory_max_target 參數啟用。框架會在背景使用此項目來建立僅供讀取複本。

  • 啟用 Oracle Flashback 資料庫。此功能在容錯移轉 (非切換) 測試案例中恢復待命時非常有用。

史詩

任務描述所需的技能

建立資料庫執行個體。

在 Amazon RDS 主控台中,使用稱為 FSDMO92 (或您的來源資料庫名稱) 的資料庫名稱建立 Amazon RDS Custom for Oracle 資料庫執行個體。

如需說明,請參閱 AWS 文件中的使用 Amazon RDS Custom資料庫環境部落格文章中的 Amazon RDS Custom for Oracle – 新控制功能。這可確保資料庫名稱設定為與來源資料庫相同的名稱。(如果保持空白,EC2 執行個體和資料庫名稱將設定為 ORCL。)

DBA
任務描述所需的技能

建立備份指令碼。

建立 RMAN 備份指令碼,將資料庫備份到您掛載的 Amazon EFS 檔案系統 (/efs在下列範例中)。您可以使用範例程式碼或執行其中一個現有的 RMAN 指令碼。

#!/bin/bash Dt=`date +'%Y%m%d-%H%M'` BACKUP_LOG="rman-${ORACLE_SID}-$Dt" export TAGDATE=`date +%Y%m%d%H%M`; LOGPATH=/u01/scripts/logs rman target / >> $LOGPATH/rman-${ORACLE_SID}-$Dt << EOF SQL "ALTER SYSTEM SWITCH LOGFILE"; SQL "ALTER SESSION SET NLS_DATE_FORMAT="DD.MM.YYYY HH24:MI:SS""; RUN { ALLOCATE CHANNEL ch11 TYPE DISK MAXPIECESIZE 5G; ALLOCATE CHANNEL ch12 TYPE DISK MAXPIECESIZE 5G; BACKUP AS COMPRESSED BACKUPSET FULL DATABASE FORMAT '/efs/rman_backup/FSCM/%d_%T_%s_%p_FULL' ; SQL "ALTER SYSTEM ARCHIVE LOG CURRENT"; BACKUP FORMAT '/efs/rman_backup/FSCM/%d_%T_%s_%p_ARCHIVE' ARCHIVELOG ALL DELETE ALL INPUT ; BACKUP CURRENT CONTROLFILE FORMAT '/efs/rman_backup/FSCM/%d_%T_%s_%p_CONTROL'; } EXIT; EOF
DBA

執行備份指令碼。

若要執行 RMAN 備份指令碼,請以 Oracle Home User 身分登入,然後執行指令碼。

$ chmod a+x rman_backup.sh $ ./rman_backup.sh &
DBA

檢查是否有錯誤,並記下備份檔案的名稱。

檢查 RMAN 日誌檔案是否有錯誤。如果一切正常,請執行下列命令列出控制檔案的備份。

RMAN> list backup of controlfile; using target database control file instead of recovery catalog

請記下輸出檔案的名稱。

List of Backup Sets =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 12 Full 21.58M DISK 00:00:01 13-JUL-22 BP Key: 12 Status: AVAILABLE Compressed: NO Tag: TAG20220713T150155 Piece Name: /efs/rman_backup/FSCM/FSDMO92_20220713_12_1_CONTROL Control File Included: Ckp SCN: 16559159985898 Ckp time: 13-JUL-22

當您在 Amazon RDS Custom 上還原資料庫/efs/rman_backup/FSCM/FSDMO92_20220713_12_1_CONTROL時,將使用備份控制檔案。

DBA
任務描述所需的技能

關閉應用程式。

若要關閉來源應用程式層,請使用 psadmin公用程式或psadmin命令列公用程式。

  1. 若要關閉 Web 伺服器,請執行下列命令。

    psadmin -w shutdown -d "webserver domain name"
  2. 若要關閉應用程式伺服器,請執行下列命令。

    psadmin -c shutdown -d "application server domain name"
  3. 若要關閉程序排程器,請執行下列命令。

    psadmin -p stop -d "process scheduler domain name"
DBA,PeopleSoft 管理員
任務描述所需的技能

安裝 nfs-utils rpm 套件。

若要安裝nfs-utils rpm套件,請執行下列命令。

$ yum install -y nfs-utils
DBA

掛載 EFS 儲存體。

從 Amazon EFS 主控台頁面取得 Amazon EFS 掛載命令。使用網路檔案系統 (NFS) 用戶端在 Amazon RDS 執行個體上掛載 EFS 檔案系統。

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 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
DBA
任務描述所需的技能

暫停自動化模式。

您必須先暫停 Amazon RDS Custom 資料庫執行個體上的自動化模式,才能繼續後續步驟,以確保自動化不會干擾 RMAN 還原活動。

您可以使用 AWS 主控台或 AWS 命令列界面 (AWS CLI) 命令 (確認您已先設定 AWS CLI) 來暫停自動化。

aws rds modify-db-instance \ --db-instance-identifier peoplesoft-fscm-92 \ --automation-mode all-paused \ --resume-full-automation-mode-minute 360 \ --region eu-west-1

當您指定暫停的持續時間時,請確定您有足夠的時間進行 RMAN 還原。這取決於來源資料庫的大小,因此請相應地修改 360 值。

此外,請確定暫停自動化的總時間不會與資料庫的備份或維護時段重疊。

DBA

建立和修改 PeopleSoft 的參數檔案

若要建立和修改 PeopleSoft 的 pfile,請使用使用 Amazon RDS Custom 資料庫執行個體建立的標準 pfile。新增 PeopleSoft 所需的參數。

  1. 執行下列命令rds user rdsdb以切換到 。

    $ sudo su - rdsdb
  2. 登入入門資料庫上的 SQL*Plus,並執行下列命令來建立 pfile。

    SQL> create pfile from spfile;

    這會在 中建立 pfile$ORACLE_HOME/dbs

  3. 建立此 pfile 的備份。

  4. 編輯 pfile 以新增或更新 PeopleSoftparameters。

    *._gby_hash_aggregation_enabled=false *._unnest_subquery=false *.nls_language='AMERICAN' *.nls_length_semantics='CHAR' *.nls_territory='AMERICA' *.open_cursors=1000 *.db_files=1200 *.undo_tablespace='UNDOTBS1'

    您可以在 Oracle Support Note 1100831.1 中找到 PeopleSoft 相關參數。 https://support.oracle.com/

  5. 從 pfile 移除 spfile 參考。

    *.spfile='/rdsdbbin/oracle/dbs/spfileFSDMO92.ora'
DBA

捨棄入門資料庫。

若要捨棄現有的 Amazon RDS Custom 資料庫,請使用下列程式碼。

$ sqlplus / as sysdba SQL> shutdown immediate; SQL> startup mount exclusive restrict; SQL> drop database; SQL> exit

從備份還原 Amazon RDS Custom 資料庫。

使用下列指令碼還原資料庫。指令碼會先還原控制檔案,然後從存放在 EFS 掛載上的備份片段還原整個資料庫。

#!/bin/bash Dt=`date +'%Y%m%d-%H%M'` BACKUP_LOG="rman-${ORACLE_SID}-$Dt" export TAGDATE=`date +%Y%m%d%H%M`; LOGPATH=/rdsdbdata/scripts/logs rman target / >> $LOGPATH/rman-${ORACLE_SID}-$Dt << EOF restore controlfile from "/efs/rman_backup/FSCM/FSDMO92_20220713_12_1_CONTROL"; alter database mount; run { set newname for database to '/rdsdbdata/db/FSDMO92_A/datafile/%f_%b'; SET NEWNAME FOR TEMPFILE 1 TO '/rdsdbdata/db/FSDMO92_A/datafile/%f_%b'; RESTORE DATABASE; SWITCH DATAFILE ALL; SWITCH TEMPFILE ALL; RECOVER DATABASE; } EOF sqlplus / as sysdba >> $LOGPATH/rman-${ORACLE_SID}-$Dt<<-EOF ALTER DATABASE RENAME FILE '/u01/psoft/db/oradata/FSDMO92/redo01.log' TO '/rdsdbdata/db/FSDMO92_A/onlinelog/redo01.log'; ALTER DATABASE RENAME FILE '/u01/psoft/db/oradata/FSDMO92/redo02.log' TO '/rdsdbdata/db/FSDMO92_A/onlinelog/redo02.log'; ALTER DATABASE RENAME FILE '/u01/psoft/db/oradata/FSDMO92/redo03.log' TO '/rdsdbdata/db/FSDMO92_A/onlinelog/redo03.log'; alter database clear unarchived logfile group 1; alter database clear unarchived logfile group 2; alter database clear unarchived logfile group 3; alter database open resetlogs; EXIT EOF
DBA
任務描述所需的技能

從 Secrets Manager 擷取密碼。

您可以使用 AWS 主控台或 AWS CLI 來執行此步驟。下列步驟顯示 主控台的指示。

  1. 登入 AWS 管理主控台並開啟 Amazon RDS 主控台。

  2. 在導覽窗格中,選擇資料庫,然後選取 Amazon RDS 資料庫。

  3. 選擇組態索引標籤,並記下執行個體的資源 ID。其格式為 db-<ID>(例如 db-73GJNHLGDNZNDOXNWXSECUW6LE)。

  4. 開啟 Secrets Manager 主控台。

  5. 選擇與 同名的秘密do-not-delete-custom-<resource_id>,其中 resource-id是指您在步驟 3 中記下的資源 ID。

  6. 選擇 Retrieve secret value (擷取秘密值)

    sys、、 systemrdsadminadmin使用者的此密碼將相同。

DBA

建立 RDSADMIN 使用者。

RDSADMIN 是用於監控和協調 Amazon RDS Custom 資料庫執行個體的資料庫使用者。由於啟動者資料庫已捨棄,且目標資料庫已使用 RMAN 從來源還原,因此您必須在還原操作後重新建立此使用者,以確保 Amazon RDS Custom 監控如預期般運作。您也必須為RDSADMIN使用者建立單獨的設定檔和資料表空間。

  1. 在 SQL 提示中輸入下列命令。

    SQL> set echo on feedback on serverout on SQL> @?/rdbms/admin/utlpwdmg.sql SQL> ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED PASSWORD_VERIFY_FUNCTION NULL;
  2. 建立設定檔 RDSADMIN

    SQL> set echo on feedback on serverout on SQL> alter session set "_oracle_script"=true; SQL> CREATE PROFILE RDSADMIN LIMIT COMPOSITE_LIMIT UNLIMITED SESSIONS_PER_USER UNLIMITED CPU_PER_SESSION UNLIMITED CPU_PER_CALL UNLIMITED LOGICAL_READS_PER_SESSION UNLIMITED LOGICAL_READS_PER_CALL UNLIMITED IDLE_TIME UNLIMITED CONNECT_TIME UNLIMITED PRIVATE_SGA UNLIMITED FAILED_LOGIN_ATTEMPTS 10 PASSWORD_LIFE_TIME UNLIMITED PASSWORD_REUSE_TIME UNLIMITED PASSWORD_REUSE_MAX UNLIMITED PASSWORD_VERIFY_FUNCTION NULL PASSWORD_LOCK_TIME 86400/86400 PASSWORD_GRACE_TIME 604800/86400;
  3. 建立RDSADMIN資料表空間。

    SQL> CREATE BIGFILE TABLESPACE rdsadmin '/rdsdbdata/db/FSDMO92_A/datafile/rdsadmin.dbf' DATAFILE SIZE 7M AUTOEXTEND ON NEXT 1m LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO;
  4. 建立RDSADMIN使用者。將RDSADMIN密碼取代為您先前從 Secrets Manager 取得的密碼。

    SQL> CREATE USER rdsadmin IDENTIFIED BY xxxxxxxxxx DEFAULT TABLESPACE rdsadmin TEMPORARY TABLESPACE TEMP profile rdsadmin ;
  5. 將權限授予 RDSADMIN。

    SQL> GRANT "CONNECT" TO RDSADMIN WITH ADMIN OPTION; SQL> GRANT "RESOURCE" TO RDSADMIN WITH ADMIN OPTION; SQL> GRANT "DBA" TO RDSADMIN; SQL> GRANT "SELECT_CATALOG_ROLE" TO RDSADMIN WITH ADMIN OPTION; SQL> GRANT ALTER SYSTEM TO RDSADMIN; SQL> GRANT UNLIMITED TABLESPACE TO RDSADMIN; SQL> GRANT SELECT ANY TABLE TO RDSADMIN; SQL> GRANT ALTER DATABASE TO RDSADMIN; SQL> GRANT ADMINISTER DATABASE TRIGGER TO RDSADMIN; SQL> GRANT ANY OBJECT PRIVILEGE TO RDSADMIN WITH ADMIN OPTION; SQL> GRANT INHERIT ANY PRIVILEGES TO RDSADMIN; SQL> ALTER USER RDSADMIN DEFAULT ROLE ALL;
  6. Set the SYS, SYSTEM, and DBSNMP user profiles to RDSADMIN.

    SQL> set echo on feedback on serverout on SQL> alter user SYS profile RDSADMIN; SQL> alter user SYSTEM profile RDSADMIN; SQL> alter user DBSNMP profile RDSADMIN;
DBA

建立主要使用者。

由於啟動者資料庫已捨棄,且目標資料庫已使用 RMAN 從來源還原,因此您必須重新建立主要使用者。在此範例中,主要使用者名稱為 admin

SQL> create user admin identified by <password>; SQL> grant dba to admin
DBA

變更系統密碼。

使用您從 Secrets Manager 擷取的密碼來變更系統密碼。

SQL> alter user sys identified by xxxxxxxxxxx; SQL> alter user system identified by xxxxxxxxxx;

如果您不變更這些密碼,Amazon RDS Custom 會顯示錯誤訊息:「資料庫監控使用者或使用者登入資料已變更。」

DBA
任務描述所需的技能

設定 tnsnames 檔案。

若要從應用程式層連線至資料庫,請設定 tnsnames.ora 檔案,以便從應用程式層連線至資料庫。在下列範例中,您可以看到 tnsnames.ora 檔案有軟連結,但檔案預設為空白。 

$ cd /rdsdbbin/oracle/network/admin $ ls -ltr -rw-r--r-- 1 rdsdb database 1536 Feb 14 2018 shrept.lst lrwxrwxrwx 1 rdsdb database 30 Apr 5 13:19 listener.ora -> /rdsdbdata/config/listener.ora lrwxrwxrwx 1 rdsdb database 28 Apr 5 13:19 sqlnet.ora -> /rdsdbdata/config/sqlnet.ora lrwxrwxrwx 1 rdsdb database 30 Apr 5 13:19 tnsnames.ora -> /rdsdbdata/config/tnsnames.ora
  1. 建立 tsnames.ora項目。由於 Amazon RDS 自動化剖析檔案的方式,您必須確保項目不包含任何空格、註解或額外的行。否則,您可能會在使用一些 APIs時遇到問題,例如 create-db-instance-read-replica

  2. 根據您的 PeopleSoft 資料庫需求取代連接埠、主機和 SID。使用下列程式碼做為範例。

    $ vi tnsnames.ora FSDMO92=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = x.x.x.x)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SID = FSDMO92)))
  3. 若要確認可以到達 PeopleSoft 資料庫,請執行下列命令。

    $ tnsping FSDMO92 TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 14-JUL-2022 10:16:45 Copyright (c) 1997, 2021, Oracle. All rights reserved. Used parameter files: /rdsdbbin/oracle/network/admin/sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = x.x.x.x)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SID = FSDMO92))) OK (0 msec)
DBA
任務描述所需的技能

建立 spfile softlink。

  1. 若要在位置 中建立 spfile/rdsdbdata/admin/FSDMO92/pfile,請執行下列命令。

    SQL> create spfile='/rdsdbdata/admin/FSDMO92/pfile/spfileFSDMO92.ora' from pfile;
  2. 導覽至 $ORACLE_HOME/dbs,並建立 spfile 的軟連結。

    ln -s '/rdsdbdata/admin/FSDMO92/pfile/spfileFSDMO92.ora' spfileFSDMO92.ora
  3. 建立此檔案之後,您可以使用 spfile 關閉並啟動資料庫。

DBA
任務描述所需的技能

驗證結構描述、連線和維護任務。

若要完成遷移,請執行下列任務。

  • 收集結構描述統計資料。 

  • 確保 PeopleSoft 應用程式層可以連接到新的 Amazon RDS Custom 資料庫。

  • 設定備份和維護排程。

DBA

相關資源