AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
在 Amazon RDS for Oracle 中執行主要版本升級時,我必須了解什麼?
我有一個執行 Oracle 的 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體。我想知道執行主要版本升級時會發生什麼情況。
簡短說明
當 Amazon RDS 開始支援新版 Oracle 資料庫後,您可以把現行 Oracle 資料庫版本升級到較新的版本。完成這項升級後,即可接著進行主要版本升級。主要版本可能納入更新項目、新功能、安全修補、最佳化程式增強功能,以及效能提升。在您升級實際執行資料庫前,最佳實務是先在非實際執行環境中,以新版 Oracle 資料庫驗證應用程式的功能、相容性與效能。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請參閱 AWS CLI 錯誤疑難排解。此外,請確認您使用最新的 AWS CLI 版本。
升級前
執行主要版本升級前,請先留意以下事項:
升級路徑
確認從目前 Oracle 資料庫版本升級到較新 Oracle 資料庫主要版本時,是否具有受支援的升級路徑。若要檢視可用的升級路徑,請執行以下 AWS CLI 命令。
Windows:
aws rds describe-db-engine-versions --engine engine-edition --engine-version current- engine-version --query "DBEngineVersions[*].ValidUpgradeTarget[? IsMajorVersionUpgrade==`true`].EngineVersion"
Linux、macOS 或 Unix:
aws rds describe-db-engine-versions --engine engine-edition --engine-version current- engine-version --query 'DBEngineVersions[*].ValidUpgradeTarget[? IsMajorVersionUpgrade==`true`].EngineVersion'
**注意:**請務必在前述命令中替換以下值:將 engine-edition 替換為資料庫引擎版本,並將 current-engine-version 替換為資料庫引擎目前版本。
舉例來說,假設您有 Amazon RDS for Oracle 19.0.0.0.ru-2024-04.rur-2024-04.r1 執行個體。若要取得可供 RDS for Oracle 執行個體升級的所有有效主要版本,請執行以下命令。
Windows:
aws rds describe-db-engine-versions --engine oracle-ee-cdb --engine-version 19.0.0.0.ru-2024-04.rur-2024-04.r1 --query "DBEngineVersions[*].ValidUpgradeTarget[? IsMajorVersionUpgrade==`true`].EngineVersion"
Linux、macOS 或 Unix:
aws rds describe-db-engine-versions --engine oracle-ee-cdb --engine-version 19.0.0.0.ru-2024-04.rur-2024-04.r1 --query 'DBEngineVersions[*].ValidUpgradeTarget[? IsMajorVersionUpgrade==`true`].EngineVersion'
注意: Amazon RDS for Oracle 支援從 19c CDB 主要版本升級至 21c。Amazon RDS for Oracle 不支援從非 CDB (12.1、12.2、19c) 主要版本升級至 21c。若要因應此限制,請先將 Oracle Database 19c 非 CDB 轉換為 Oracle Database 19c CDB。接著,將 Oracle Database 19c CDB 升級為 Oracle Database 21c CDB。如需更多資訊,請參閱 Oracle 資料庫升級考量事項及將 RDS for Oracle 非 CDB 轉換為 CDB。
執行個體類別
確認您目前的執行個體類別支援您打算升級到的主要版本。如需 RDS for Oracle 支援之執行個體類別的資訊,請參閱支援的 RDS for Oracle 資料庫執行個體類別。若要檢查支援的執行個體類別,請執行以下 AWS CLI 命令。
Windows:
aws rds describe-orderable-db-instance-options --engine engine-edition --engine-version new-engine-version --region example-region --query "OrderableDBInstanceOptions[*].DBInstanceClass"
Linux、macOS 或 Unix:
aws rds describe-orderable-db-instance-options --engine engine-edition --engine-version new-engine-version --region example-region --query 'OrderableDBInstanceOptions[*].DBInstanceClass'
請務必在先前命令中替換以下值:
- 將 engine-edition 替換為資料庫引擎版本。
- 將 new-engine-version 替換為您計劃升級到的新版本。
- 將 example-region 替換為您使用的區域。
舉例來說,假設您要升級到 RDS for Oracle 19.0.0.0.ru-2024-04.rur-2024-04.r1 執行個體。若要了解特定區域中支援該主要版本的執行個體類別,請執行以下命令:
aws rds describe-orderable-db-instance-options --engine oracle-ee-cdb --engine-version 19.0.0.0.ru-2024-04.rur-2024-04.r1 --region us-east-1 --query "OrderableDBInstanceOptions[*].DBInstanceClass"
請務必在命令中將 us-east-1 替換為您選擇的區域。
用戶端相容性
確認 Oracle 用戶端或驅動程式版本與新的主要版本相容。確認是否需要在主要版本升級時一併升級驅動程式。如需互通性的資訊,請參閱 Oracle 網站上的 Oracle Database Client 和 Oracle Database 互通性。
升級方式
您可以使用下列任一方式執行主要版本升級:
- 修改 RDS 執行個體並套用新的主要版本。
**注意:**這個方式會產生部分停機時間。 - 使用主要版本建立新的 RDS 執行個體,然後透過 AWS Data Migration Service (AWS DMS) 遷移資料。
**注意:**AWS DMS 會以精簡方式遷移資料,只建立有效遷移資料所需的物件。AWS DMS 會建立資料表、主索引鍵,且在某些情況下會建立唯一索引。不過,AWS DMS 不會建立任何有效從來源遷移資料時,非必要的其他物件。例如,AWS DMS 不會建立次要索引、非主索引鍵限制條件或資料預設值。如需更多資訊,請參閱 AWS DMS 高階概觀。
自訂參數群組
如果您的執行個體使用自訂參數群組,請先為新的主要版本建立新參數群組。接著,依需要設定自訂參數。若要識別您目前使用的自訂參數,請將目前的自訂參數群組與目前版本的預設參數群組進行比較。
自訂選項群組
如果您的執行個體使用自訂選項群組,請為主要版本建立新的自訂選項群組。如果您的選項群組中有持久性或永久選項,新的自訂選項群組也必須包含相同選項。若要將時區檔案版本升級到最新可用版本,請將 TIMEZONE_FILE_AUTOUPGRADE 選項新增至新的自訂選項群組。
字典統計資料
字典統計資料和固定物件統計資料可縮短升級期間的執行個體停機時間。若要收集統計資料,請執行以下命令:
SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS; SQL> EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
無效物件
確認您的資料庫未包含無效物件。若要檢查無效物件,請執行以下命令:
SQL> SELECT OWNER, STATUS, COUNT (*) FROM DBA_OBJECTS GROUP BY OWNER, STATUS;
如果輸出顯示無效物件,請檢查該無效物件,然後執行以下命令:
SQL> SELECT OWNER, OBJECT_NAME, OBJECT_TYPE FROM DBA_OBJECTS WHERE STATUS != 'VALID';
若要編譯結構描述中的無效物件清單,請執行以下命令:
SQL> EXEC DBMS_UTILITY.compile_schema(schema => 'ADMIN', compile_all => false);
請務必在查詢中將 ADMIN 替換為您的結構描述名稱。
稽核軌跡
請確認稽核軌跡不會過長。當稽核軌跡過長時,升級前檢查與升級可能會花費更多時間。如需更多資訊,請參閱如何在執行 Oracle 的 Amazon RDS 資料庫執行個體上截斷 sys.aud$ 資料表?使用 DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL 程序刪除稽核軌跡。如需更多資訊,請參閱 Oracle 網站上的 CLEAN_AUDIT_TRAIL 程序。
密碼
若要確認您未使用較早版本的密碼,請執行以下命令:
SQL> SELECT USERNAME,PASSWORD_VERSIONS FROM DBA_USERS;
如果使用者採用 10g 密碼版本,請確認您是否能以較新的密碼版本重新建立該使用者。最佳實務是使用較新的密碼版本。如果您無法修正使用者的密碼版本,請依需要設定 SQLNET.ALLOWED_LOGON_VERSION_SERVER 參數,以避免連線錯誤。
sqlnetora.sqlnet.allowed_logon_version_server 參數表示您連線到資料庫伺服器時允許的驗證通訊協定最低版本。如需更多資訊,請參閱 Oracle 網站上的 SQLNET.ALLOWED_LOGON_VERSION_SERVER。設定為 8 時,系統允許大多數密碼版本,也允許 DBA_USERS.PASSWORD_VERSIONS 值 10G、11G 和 12C 的任意組合。
sqlnetora.sqlnet.allowed_logon_version_client 參數表示資料庫作為用戶端運作時使用的最低驗證通訊協定。如需更多資訊,請參閱 Oracle 網站上的 SQLNET.ALLOWED_LOGON_VERSION_CLIENT 和檢查使用不區分大小寫密碼版本的帳戶。
DBMS_JOB
Oracle Database 12c Release 2 升級後停止提供 DBMS_JOB 套件。最佳實務是在升級至 19c 版前,將所有 DBMS_JOB 作業轉換為 DBMS_SCHEDULER 作業。升級期間,Oracle 會將 DBMS_JOB 作業轉換為 DBMS_SCHEDULER 作業。如需更多資訊,請參閱 Oracle 網站上的 DBMS_JOB 支援。如果您有大量 DBMS_JOB 項目,升級可能會需要更多時間。
FreeStorageSpace
確認您的執行個體未接近儲存容量上限。若要確認升級可使用足夠的可用儲存空間,請檢查 FreeStorageSpace CloudWatch 指標。如需更多資訊,請參閱如何建立 CloudWatch 警示來監控 Amazon RDS 可用儲存空間,並避免儲存空間用盡問題?
維護動作
在 Amazon Aurora 和 RDS 主控台中,檢查您的執行個體是否有擱置中的維護動作。這些擱置中的維護動作會在升級時段內套用。對於多可用區域執行個體,如果不需要作業系統更新,主要和待命升級會同時發生。如果需要作業系統更新,Amazon RDS 會依照多可用區域部署中的 Oracle 升級所述套用升級。
手動快照
最佳實務是建立 RDS for Oracle 資料庫執行個體的手動快照:
- 只要 Amazon RDS 仍支援該版本,您就可以使用快照回復到先前版本。
- 主要版本升級通常會建立自動快照。由於 Amazon Elastic Block Store (Amazon EBS) 快照採用增量方式,新快照需要備份的變更較少。建立手動快照可縮短建立自動快照所需時間,以及完成升級所需的總時間。
目前組態
若要檢視執行個體的目前組態並儲存輸出,請執行以下命令。輸出會顯示目前 RDS for Oracle 執行個體所連接的選項群組、參數群組、安全群組和標籤資訊。若要回復並從快照還原,或執行時間點復原,請使用您從以下命令擷取的資訊:
> aws rds describe-db-instances --db-instance-identifier example-instance-name --region example-region
請務必在查詢中替換以下值:
- 將 example-instance-name 替換為 RDS for Oracle 執行個體的名稱。
- 將 example-region 替換為您選擇的區域。
復原資料表空間
請確認您的 Undo Tablespace 已設定為正確大小,以避免升級期間發生調整大小作業。
觸發程序
執行以下命令,列出您的登入、登出和啟動觸發程序:
SQL> SELECT OWNER, TRIGGER_NAME, TRIGGER_TYPE, TRIGGERING_EVENT, TABLE_OWNER, STATUS, ACTION_TYPE, TRIGGER_BODY FROM DBA_TRIGGERS WHERE TRIGGERING_EVENT LIKE '%LOGO%' or TRIGGERING_EVENT LIKE '%STARTUP%';
檢查觸發程序是否有效且能正常運作。即使觸發程序有效且可成功編譯,也可能在執行時期擲回錯誤,並干擾資料庫重新開機。檢查是否有任何登入、登出或啟動觸發程序會在執行時擲回錯誤。
若要停用這些觸發程序,請執行以下命令:
SQL> ALTER TRIGGER EXAMPLE-OWNER.EXAMPLE-TRIGGER DISABLE;
請務必在命令中替換以下值:
- 將 EXAMPLE-OWNER 替換為您建立觸發程序所在的結構描述名稱。
- 將 EXAMPLE-TRIGGER 替換為觸發程序名稱。
例如:
--To disable AUDIT_USERS trigger in MYADMIN schema SQL> ALTER TRIGGER MYADMIN.AUDIT_USERS DISABLE;
升級期間
啟動升級後,請監控升級進度,並在 Aurora 和 RDS 主控台中檢查以下項目:
- 位於執行個體 Logs & events (日誌與事件) 索引標籤下的警示日誌
- 位於執行個體 Logs & events (日誌與事件) 索引標籤下的Recent events (最近事件)
升級後
-
連線到資料庫後,若要驗證修補版本,請執行以下命令:
SQL> SELECT * FROM sys.registry$history; SQL> SELECT INSTALL_ID,PATCH_ID,ACTION,STATUS,ACTION_TIME,DESCRIPTION FROM DBA_REGISTRY_SQLPATCH; -
Amazon RDS 會在套用修補程式後一小時內更新 lsinventory-dbv.txt 檔案。從 Aurora 和 RDS 主控台中執行個體的 Logs & events tab (日誌與事件索引標籤) 下載此檔案。若要驗證已套用的修補程式,請讀取 Isinventory-dbv.txt 檔案。
-
若要收集字典與固定物件統計資料,請執行以下命令:
SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;SQL> EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS; -
若要確認有效或無效物件的數量與升級前的物件數量一致,請執行以下命令:
SQL> SELECT OWNER, STATUS, COUNT(*) from DBA_OBJECTS GROUP BY OWNER, STATUS; -
若要編譯結構描述中所有無效物件,請執行以下命令:
SQL> EXEC DBMS_UTILITY.compile_schema(schema => 'ADMIN', compile_all => false); -
如果升級後因新主要版本的最佳化程式功能而出現命令效能問題,您可能需要使用 OPTIMIZER_FEATURES_ENABLE 參數。如需更多資訊,請參閱 Oracle 網站上的 OPTIMIZER_FEATURES_ENABLE。您可以在工作階段層級和系統層級變更此參數。例如,假設您將資料庫從版本 18.1 升級至版本 19.1,但想保留版本 18.1 的最佳化程式行為。若要這麼做,請將 OPTIMIZER_FEATURES_ENABLE 參數的值設定為 18.1.0。
相關資訊
相關內容
已提問 3 年前
已提問 2 年前
