本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 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 引擎和儲存重做日誌中繼資料。
工具
AWS 服務
其他工具
最佳實務
對於資料庫初始化參數,自訂 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 資料庫。此功能在容錯移轉 (非切換) 測試案例中恢復待命時非常有用。
史詩
任務 | 描述 | 所需的技能 |
---|
建立備份指令碼。 | 建立 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 命令列公用程式。 若要關閉 Web 伺服器,請執行下列命令。 psadmin -w shutdown -d "webserver domain name"
若要關閉應用程式伺服器,請執行下列命令。 psadmin -c shutdown -d "application server domain name"
若要關閉程序排程器,請執行下列命令。 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 所需的參數。 執行下列命令rds user rdsdb 以切換到 。 $ sudo su - rdsdb
登入入門資料庫上的 SQL*Plus,並執行下列命令來建立 pfile。 SQL> create pfile from spfile;
這會在 中建立 pfile$ORACLE_HOME/dbs 。 建立此 pfile 的備份。 編輯 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/ 從 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 來執行此步驟。下列步驟顯示 主控台的指示。 登入 AWS 管理主控台並開啟 Amazon RDS 主控台。 在導覽窗格中,選擇資料庫,然後選取 Amazon RDS 資料庫。 選擇組態索引標籤,並記下執行個體的資源 ID。其格式為 db-<ID> (例如 db-73GJNHLGDNZNDOXNWXSECUW6LE )。 開啟 Secrets Manager 主控台。 選擇與 同名的秘密do-not-delete-custom-<resource_id> ,其中 resource-id 是指您在步驟 3 中記下的資源 ID。 選擇 Retrieve secret value (擷取秘密值)。 sys 、、 system rdsadmin 和 admin 使用者的此密碼將相同。
| DBA |
建立 RDSADMIN 使用者。 | RDSADMIN 是用於監控和協調 Amazon RDS Custom 資料庫執行個體的資料庫使用者。由於啟動者資料庫已捨棄,且目標資料庫已使用 RMAN 從來源還原,因此您必須在還原操作後重新建立此使用者,以確保 Amazon RDS Custom 監控如預期般運作。您也必須為RDSADMIN 使用者建立單獨的設定檔和資料表空間。
在 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;
建立設定檔 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;
建立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;
建立RDSADMIN 使用者。將RDSADMIN 密碼取代為您先前從 Secrets Manager 取得的密碼。 SQL> CREATE USER rdsadmin IDENTIFIED BY xxxxxxxxxx
DEFAULT TABLESPACE rdsadmin
TEMPORARY TABLESPACE TEMP
profile rdsadmin ;
將權限授予 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;
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
建立 tsnames.ora 項目。由於 Amazon RDS 自動化剖析檔案的方式,您必須確保項目不包含任何空格、註解或額外的行。否則,您可能會在使用一些 APIs時遇到問題,例如 create-db-instance-read-replica。 根據您的 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)))
若要確認可以到達 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。 | 若要在位置 中建立 spfile/rdsdbdata/admin/FSDMO92/pfile ,請執行下列命令。 SQL> create spfile='/rdsdbdata/admin/FSDMO92/pfile/spfileFSDMO92.ora' from pfile;
導覽至 $ORACLE_HOME/dbs ,並建立 spfile 的軟連結。 ln -s '/rdsdbdata/admin/FSDMO92/pfile/spfileFSDMO92.ora' spfileFSDMO92.ora
建立此檔案之後,您可以使用 spfile 關閉並啟動資料庫。
| DBA |
任務 | 描述 | 所需的技能 |
---|
驗證結構描述、連線和維護任務。 | 若要完成遷移,請執行下列任務。 | DBA |
相關資源