Amazon RDS for Oracle でメジャーバージョンアップグレードを実行するときに知っておくべきことを教えてください。
Oracle を実行する Amazon Relational Database Service (Amazon RDS) DB インスタンスがあります。メジャーバージョンアップグレードを実行するときに予想されることを知りたいです。
簡単な説明
Amazon RDS が新しいバージョンの Oracle データベースをサポートしている場合、現在の Oracle データベースバージョンを新しいバージョンにアップグレードできます。これを実行すると、メジャーバージョンアップグレードを実行できます。メジャーバージョンには、アップデート、新機能、セキュリティ修正、オプティマイザーの強化、パフォーマンスの向上が含まれる場合があります。本番データベースをアップグレードする前に、非本番環境でアプリケーションの機能、互換性、およびパフォーマンスを新しいバージョンの Oracle データベースに対してテストするのがベストプラクティスです。
解決策
注: AWS コマンドラインインターフェイス (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 DB インスタンスクラス」を参照してください。サポートされているインスタンスクラスを確認するには、次の 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 and Oracle Database interoperability」(Oracle Database Client と Oracle Database の相互運用性) を参照してください。
アップグレード方法
次のいずれかの方法を使用して、メジャーバージョンアップグレードを実行できます。
- RDS インスタンスを変更し、新しいメジャーバージョンを適用します。
注: この方法にはある程度のダウンタイムが伴います。 - メジャーバージョンで新しい RDS インスタンスを作成し、AWS Data Migration Service (AWS DMS) を使用してデータを移行します。
注: AWS DMS は最小限のアプローチでデータを移行し、データを効率的に移行するのに必要なオブジェクトのみを作成します。AWS DMS はテーブル、プライマリキー、場合によっては一意のインデックスを作成します。ただし、ソースからデータを効率的に移行するのに必要のない他のオブジェクトは作成されません。例えば、AWS DMS はセカンダリインデックス、非プライマリキー制約、またはデータデフォルトを作成しません。詳細については、「High-level view of 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 DB インスタンスで sys.aud$ テーブルを削除するにはどうしたらいいですか?」を参照してください。 DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL プロシージャを使用して監査証跡を削除します。詳細については、Oracle のウェブサイトの「CLEAN_AUDIT_TRAIL Procedure」(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」および「Checking for accounts using case-insensitive password version」(大文字と小文字を区別しないパスワードバージョンを使用したアカウントの確認) を参照してください。
DBMS_JOB
DBMS_JOB パッケージは Oracle Database 12c リリース 2 のアップグレードにより廃止されました。バージョン 19c にアップグレードする前に、すべての DBMS_JOB ジョブを DBMS_SCHEDULER ジョブに変換することをお勧めします。アップグレード中に、Oracle は DBMS_JOB ジョブを DBMS_SCHEDULER ジョブに変換します。詳細については、Oracle のウェブサイトの「Support for DBMS_JOB」(DBMS_JOB のサポート) を参照してください。DBMS_JOB エントリが多数ある場合は、アップグレードに時間がかかる場合があります。
FreeStorageSpace
インスタンスのストレージ容量が限界に達していないことを確認します。アップグレードに使用できる十分な空きストレージスペースがあることを確認するには、CloudWatch メトリクス FreeStorageSpace を確認してください。詳細については、「CloudWatch アラームを作成して Amazon RDS の空きストレージ容量を監視し、空き容量不足を防ぐ方法を教えてください」を参照してください。
メンテナンスアクション
Amazon Aurora と RDS コンソールで、インスタンスに保留中のメンテナンスアクションがあるかどうかを確認します。これらの保留中のメンテナンスアクションは、アップグレードウィンドウ中に適用されます。マルチ AZ インスタンスの場合、オペレーティングシステムの更新が不要な場合は、プライマリアップグレードとスタンバイアップグレードが同時に行われます。オペレーティングシステムの更新が必要な場合、Amazon RDS は「マルチ AZ 配置での 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 テーブルスペース
アップグレード中のサイズ変更操作を避けるため、Undo テーブルスペースが適切なサイズに設定されていることを確認してください。
トリガー
次のコマンドを実行して、ログオン、ログオフ、および起動のトリガーを一覧表示します。
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 コンソールで以下を確認します。
- インスタンスの [ログとイベント] タブにあるアラートログ
- インスタンスの [ログとイベント] タブにある最近のイベント
アップグレード後
-
データベースに接続した後でパッチバージョンを確認するには、次のコマンドを実行します。
SQL> SELECT * FROM sys.registry$history; SQL> SELECT INSTALL_ID,PATCH_ID,ACTION,STATUS,ACTION_TIME,DESCRIPTION FROM DBA_REGISTRY_SQLPATCH; -
Amazon RDS は、パッチを適用してから 1 時間以内に lsinventory-dbv.txt ファイルを更新します。このファイルを、Aurora と RDS コンソールでインスタンスの [ログとイベント] タブからダウンロードします。適用されたパッチを確認するには、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 に設定します。
