

# Amazon RDS Custom for Oracle DB インスタンスのアップグレード
<a name="custom-upgrading"></a>

 Amazon RDS Custom DB インスタンスは、新しいカスタムエンジンバージョン (CEV) を使用するように変更してアップグレードできます。アップグレードに関する一般的な情報については、[DB インスタンスのエンジンバージョンのアップグレード](USER_UpgradeDBInstance.Upgrading.md) を参照してください。

**Topics**
+ [RDS for Oracle のアップグレードの概要](#custom-upgrading.overview)
+ [RDS Custom for Oracle のアップグレードの要件](#custom-upgrading-reqs)
+ [RDS Custom for Oracle のデータベースアップグレードに関する考慮事項](custom-upgrading-considerations.md)
+ [RDS Custom for Oracle の OS アップグレードに関する考慮事項](custom-upgrading-considerations-os.md)
+ [RDS Custom Oracle DB インスタンスの有効な CEV アップグレードターゲットの表示](custom-upgrading-target.md)
+ [RDS Custom for Oracle DB インスタンスのアップグレード](custom-upgrading-modify.md)
+ [RDS Custom DB インスタンスの保留中データベースアップグレードの表示](custom-upgrading-pending.md)
+ [RDS Custom for Oracle DB インスタンスのアップグレードエラーのトラブルシューティング](custom-upgrading-failure.md)

## RDS for Oracle のアップグレードの概要
<a name="custom-upgrading.overview"></a>

RDS Custom for Oracle では、新しい CEV を作成し、新しい CEV を使用するようにインスタンスを変更することで、Oracle データベースまたは DB インスタンスのオペレーティングシステム (OS) にパッチを適用できます。

**Topics**
+ [CEV アップグレードのオプション](#custom-upgrading.overview.cev-options)
+ [CEV を使用しないパッチ適用](#custom-upgrading.overview.no-cevs)
+ [DB インスタンスに CEV をパッチする一般的な手順](#custom-upgrading.overview.general-steps)

### CEV アップグレードのオプション
<a name="custom-upgrading.overview.cev-options"></a>

アップグレード用 CEV を作成する場合、以下の相互排他的なオプションを選択できます。

**データベースのみ**  
DB インスタンスで現在使用されている Amazon マシンイメージ (AMI) を再利用しますが、別のデータベースバイナリを指定します。RDS Custom は新しいバイナリボリュームを割り当て、それを既存の Amazon EC2 インスタンスにアタッチします。RDS カスタムは、データベースボリューム全体を、ターゲットデータベースバージョンを使用する新しいボリュームに置き換えます。

**OS のみ**  
DB インスタンスで現在使用されているデータベースバイナリを再利用しますが、別の AMI を指定します。RDS Custom は新しい Amazon EC2 インスタンスを割り当て、既存のバイナリボリュームを新しいインスタンスにアタッチします。既存のデータベースボリュームは保持されます。

OS とデータベースの両方をアップグレードする場合は、CEV を 2 回アップグレードする必要があります。OS をアップグレードしてからデータベースをアップグレードすることも、データベースをアップグレードしてから OS をアップグレードすることもできます。

**警告**  
OS にパッチを適用すると、ルートボリュームデータや既存の OS カスタマイズは失われます。したがって、インストール、または永続的なデータやファイルの保存のためにはルートボリュームを使用しないことを強くお勧めします。また、アップグレード前にデータをバックアップすることをお勧めします。

### CEV を使用しないパッチ適用
<a name="custom-upgrading.overview.no-cevs"></a>

CEV を使用して RDS Custom for Oracle DB インスタンスをアップグレードすることを強くお勧めします。RDS Custom for Oracle オートメーションは、パッチメタデータを DB インスタンスのデータベースバイナリと同期します。

特別な状況では、RDS Custom は OPatch ユーティリティを使用して、基盤となる Amazon EC2 インスタンスに直接「1 回限りの」データベースパッチを適用することをサポートしています。例えば、すぐに適用したいデータベースパッチがあるが、RDS Custom チームが CEV 機能をアップグレードしているため、遅延が発生している場合などです。手動でデータベースパッチを適用するには、次のステップを実施します。

1. RDS Custom オートメーションを一時停止します。

1. Amazon EC2 インスタンスのデータベースバイナリにパッチを適用します。

1. RDS Custom オートメーションを再開します。

前述の方法の欠点は、アップグレードするすべてのインスタンスに手動でデータベースパッチを適用する必要があることです。一方、新しい CEV を作成すると、同じ CEV を使用して複数の DB インスタンスを作成またはアップグレードできます。

### DB インスタンスに CEV をパッチする一般的な手順
<a name="custom-upgrading.overview.general-steps"></a>

OS またはデータベースのいずれにパッチを適用する場合でも、次の基本的な手順を実行します。

1. データベースまたは OS にパッチするかに応じて、次のいずれかを含む CEV を作成します。
   + DB インスタンスに適用する Oracle データベース RU
   + 別の AMI (入手可能な最新のものまたはユーザーが指定したもの) と、ソースとして使用する既存の CEV

   「[CEV の作成](custom-cev.create.md)」のステップを実行してください。

1. (データベースパッチのオプション) `describe-db-engine-versions` を実行して、利用可能なエンジンバージョンのアップグレードを確認します。

1. `modify-db-instance` を実行してパッチ適用プロセスを開始します。

   パッチが適用されているインスタンスのステータスは次のように異なります。
   + RDS がデータベースにパッチを適用している間、DB インスタンスのステータスは **アップグレード中**に変わります。
   + RDS が OS にパッチを適用している間、DB インスタンスのステータスは **変更中**に変わります。

   DB インスタンスのステータスが**利用可能** になると、パッチ適用は完了します。

1. `describe-db-instances` を実行して、DB インスタンスが新しい CEV を使用していることを確認します。

## RDS Custom for Oracle のアップグレードの要件
<a name="custom-upgrading-reqs"></a>

RDS Custom for Oracle DB インスタンスをターゲット CEV にアップグレードする際に、必ず以下の前提条件を満たすようにしてください。
+ アップグレード先のターゲット CEV が存在している必要があります。
+ OS またはデータベースを 1 回の操作でアップグレードする必要があります。1 回の API 呼び出しで OS とデータベースの両方をアップグレードする操作はサポートされていません。
+ ターゲット CEV は、現在の CEV のマニフェストにあるインストールパラメータ設定を使用する必要があります。例えば、デフォルトの Oracle ホームを使用するデータベースを、デフォルトではない Oracle ホーム を使用する CEV にアップグレードすることはできません。
+ データベースをアップグレードする場合、ターゲット CEV は、新しいメジャーバージョンではなく、新しいマイナーデータベースバージョンを使用する必要があります。例えば、Oracle Database 12c CEV を Oracle Database 19c CEV にアップグレードすることはできません。ただし、バージョン 21.0.0.0.ru-2023-04.rur-2023-04.r1 からバージョン 21.0.0.0.ru-2023-07.rur-2023-07.r1 にはアップグレードできます。
+ OS をアップグレードする場合、ターゲット CEV は異なる AMI を使用する必要がありますが、メジャーバージョンは同じです。

# RDS Custom for Oracle のデータベースアップグレードに関する考慮事項
<a name="custom-upgrading-considerations"></a>

データベースをアップグレードする場合は、以下を考慮してください。
+ 現在サポートされているオペレーティングシステム (OS) のバージョンは Oracle Linux 8 です。RDS Custom for Oracle から最新のセキュリティアップデートとパッチを引き続き受信するには、この OS に基づいて CEV を指定して DB インスタンスを Oracle Linux 8 にアップグレードします。Oracle Linux 8 をサポートするリリースは、Oracle Database 12c Release 1 (12.1)、Oracle Database Release 2 (12.2)、Oracle Database 19c のみです。最新の Oracle Linux 8 AMI に移行するには、OS を最新の AMI にアップグレードします。詳細については、「[RDS Custom for Oracle DB インスタンスのアップグレード](custom-upgrading-modify.md)」を参照してください。

  Oracle Linux 7.9 は 2024 年 12 月 31 日にサポートを終了しました。サポート終了後も Oracle Linux 7 を引き続き実行するには、Oracle 延長サポートライセンスを購入してください。セキュリティ更新にはユーザー自身が責任を持ち、RDS Custom for Oracle インスタンスに手動でパッチを適用する必要があります。詳細については、「[Lifetime Support Policy: Coverage for Oracle Open Source Service Offerings](https://www.oracle.com/a/ocom/docs/elsp-lifetime-069338.pdf)」を参照してください。
+ プライマリ DB インスタンスでデータベースバイナリをアップグレードすると、RDS Custom for Oracle がリードレプリカを自動的にアップグレードします。ただし、OS をアップグレードする場合は、リードレプリカを手動でアップグレードする必要があります。
+ コンテナデータベース (CDB) を新しいデータベースバージョンにアップグレードすると、RDS Custom for Oracle では、すべての PDB が開いているか、または開くことができるかを確認します。これらの条件が満たされない場合、RDS Custom はチェックを中止し、アップグレードを試行せずにデータベースを元の状態に戻します。条件が満たされると、RDS Custom は最初に CDB ルートにパッチを適用し、次に他のすべての PDB (`PDB$SEED` を含む) に並行してパッチを適用します。

  パッチ適用が完了すると、RDS Custom はすべての PDB を開こうとします。PDB を開くことができない場合は、`The following PDBs failed to open: list-of-PDBs` のイベントが表示されます。RDS Custom が CDB ルートまたは PDB にパッチを適用できなかった場合、インスタンスは `PATCH_DB_FAILED` の状態になります。
+ メジャーデータベースバージョンのアップグレードと非 CDB から CDB への変換を同時に行う場合があります。この場合は、以下の前提条件を満たしていることを確認します。

  1. Oracle マルチテナントアーキテクチャを使用する新しい RDS Custom for Oracle DB インスタンスを作成します。

  1. 非 CDB を CDB ルートに接続し、PDB として作成します。非 CDB が CDB と同じメジャーバージョンであることを確認してください。

  1. `noncdb_to_pdb.sql` Oracle SQL スクリプトを実行して、PDB を変換します。

  1. CDB インスタンスを検証します。

  1. インスタンスタイプをアップグレードします。

# RDS Custom for Oracle の OS アップグレードに関する考慮事項
<a name="custom-upgrading-considerations-os"></a>

OS アップグレードを計画する際は、以下を考慮してください。
+ RDS Custom for Oracle CEV で使用する独自の AMI を提供することはできません。指定できるのは、Oracle Linux 8 を使用するデフォルトの AMI、または RDS Custom for Oracle CEV で以前に使用したことのある AMI だけです。
**注記**  
共通脆弱性とエクスポージャーが検出されると、RDS Custom for Oracle は新しいデフォルト AMI をリリースします。一定のスケジュールや保証はありません。RDS Custom for Oracle は、30 日ごとに新しいデフォルト AMI を公開する傾向があります。
+ プライマリ DB インスタンスの OS をアップグレードするときは、関連するリードレプリカを手動でアップグレードする必要があります。
+ OS にパッチ適用を開始する前に、AZ のインスタンスタイプに十分な Amazon EC2 コンピューティング容量を確保してください。

  キャパシティ予約を作成するときは、AZ、インスタンス数、インスタンス属性 (インスタンスタイプを含む) を指定します。例えば、DB インスタンスが基盤となる EC2 インスタンスタイプ r5.large を使用している場合は、AZ 内の r5.large の EC2 容量を予約することをお勧めします。OS のパッチ適用中、RDS Custom は db.r5.large タイプの新しいホストを 1 つ作成しますが、AZ にこのインスタンスタイプの EC2 キャパシティが不足していると、そのホストが停止する可能性があります。EC2 キャパシティを予約すれば、キャパシティの制約によってパッチ適用がブロックされるリスクが低くなります。詳細については、「*Amazon EC2 ユーザーガイド*」の「[オンデマンドキャパシティーの予約](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html)」を参照してください。
+ OS をアップグレードする前に、DB インスタンスをバックアップします。アップグレードすると、ルートボリュームデータと既存の OS カスタマイズがすべて削除されます。
+ 責任共有モデルでは、OS を最新の状態に保つ責任はユーザーにあります。RDS Custom for Oracle では、OS にどのパッチを適用するかは義務付けていません。RDS Custom for Oracle が機能している場合は、この CEV に関連付けられた AMI を無期限に使用できます。

# RDS Custom Oracle DB インスタンスの有効な CEV アップグレードターゲットの表示
<a name="custom-upgrading-target"></a>

既存の CEV は、AWS マネジメントコンソールの**カスタムエンジンバージョン**のページで見ることができます。

また、以下の例のように、[describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) AWS CLI コマンドを使用して、DB インスタンスをアップグレードする際に使用する有効な CEV を見つけることができます (例を参照)。この例では、エンジンバージョン `19.my_cev1` を使用して DB インスタンスを作成し、アップグレードバージョン `19.my_cev2` と `19.my_cev` が存在することを前提としています。

```
aws rds describe-db-engine-versions --engine custom-oracle-ee --engine-version 19.my_cev1
```

出力は以下のようになります。`ImageId` フィールドには AMI ID が表示されます。

```
{
    "DBEngineVersions": [
        {
            "Engine": "custom-oracle-ee",
            "EngineVersion": "19.my_cev1",
            ...
            "Image": {
                "ImageId": "ami-2345",
                "Status": "active"
            },
            "DBEngineVersionArn": "arn:aws:rds:us-west-2:123456789012:cev:custom-oracle-ee/19.my_cev1/12a34b5c-67d8-90e1-2f34-gh56ijk78lm9"
            "ValidUpgradeTarget": [
                {
                    "Engine": "custom-oracle-ee",
                    "EngineVersion": "19.my_cev2",
                    "Description": "19.my_cev2 description",
                    "AutoUpgrade": false,
                    "IsMajorVersionUpgrade": false
                },
                {
                    "Engine": "custom-oracle-ee",
                    "EngineVersion": "19.my_cev3",
                    "Description": "19.my_cev3 description",
                    "AutoUpgrade": false,
                    "IsMajorVersionUpgrade": false
                }
            ]
            ...
```

# RDS Custom for Oracle DB インスタンスのアップグレード
<a name="custom-upgrading-modify"></a>

RDS Custom for Oracle DB インスタンスをアップグレードするには、新しい CEV を使用するように変更します。この CEV には、新しいデータベースバイナリまたは新しい AMI を含めることができます。例えば、Oracle Linux 7.9 DB インスタンスを Oracle Linux 8 にアップグレードするには、Oracle Linux 8 を使用する最新の AMI を指定します。データベースと OS をアップグレードする場合は、2 つのアップグレードを別々に実行する必要があります。

**注記**  
データベースをアップグレードする場合、RDS Custom はプライマリ DB インスタンスをアップグレードした後にリードレプリカを自動的にアップグレードします。OS をアップグレードする際は、レプリカを手動でアップグレードする必要があります。

始める前に、[RDS Custom for Oracle のアップグレードの要件](custom-upgrading.md#custom-upgrading-reqs) と [RDS Custom for Oracle のデータベースアップグレードに関する考慮事項](custom-upgrading-considerations.md) を確認してください。

## コンソール
<a name="custom-upgrading-modify.CON"></a>

**RDS Custom Oracle DB インスタンスをアップグレードするには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) を開きます。

1. ナビゲーションペインで、**[データベース]** を選択し、アップグレードする RDS Custom for SQL Server DB インスタンスを選択します。

1. **Modify** を選択します。**Modify DB instance** ページが表示されます。

1. **DB エンジンバージョン**の場合は、新しい CEV を選択してください。以下の操作を実行します。
   + データベースにパッチを適用する場合は、CEV が DB インスタンスで使用されているものとは異なるデータベースバイナリを指定し、指定した AMI が DB インスタンスが現在使用している AMI と違っていないことを確認してください。
   + OS にパッチを適用する場合は、CEV が DB インスタンスで使用されている AMI とは異なる AMI を指定し、異なるデータベースバイナリを指定していないことを確認してください。
**警告**  
OS にパッチを適用すると、ルートボリュームデータや既存の OS カスタマイズは失われます。

1. **継続する** を選択して、変更の概要をチェックします。

   変更をすぐに反映させるには、**すぐに申し込む** を選択します。

1. 変更が正しい場合は、**[Modify DB Instance]** (DB インスタンスを変更) を選択します。または、[**戻る**] を選択して変更を編集するか、**キャンセル**を選択して変更をキャンセルします。

## AWS CLI
<a name="custom-upgrading-modify.CLI"></a>

以下の例は、考えられるアップグレードシナリオを示しています。この例では、RDS Custom for Oracle DB インスタンスを次の特性で作成したという前提です。
+ `my-custom-instance` という DB インスタンス名
+ `19.my_cev1` という名前の CEV
+ CDB 以外のアーキテクチャを使用した Oracle Database 19c
+ AMI `ami-1234` を使用する Oracle Linux 8

サービスが提供している最新の AMI は `ami-2345` です。CLI コマンド `describe-db-engine-versions` を実行して、エンドポイントを見つけることができます。

**Topics**
+ [OS のアップグレード](#custom-upgrading-modify.CLI.os)
+ [データベースのアップグレード](#custom-upgrading-modify.CLI.db)

### OS のアップグレード
<a name="custom-upgrading-modify.CLI.os"></a>

この例では、`ami-1234` を、サービスが提供している最新の AMIである `ami-2345` にアップグレードしたいと考えています。OS をアップグレードするため、データベースバイナリ `ami-1234` および `ami-2345` は同じである必要があります。`19.my_cev1` に基づいて `19.my_cev2` という名前の CEV を新規作成します。

**Example**  
Linux、macOS、Unix の場合:  

```
aws rds create-custom-db-engine-version \
    --engine custom-oracle-ee \
    --engine-version 19.my_cev2 \
    --description "Non-CDB CEV based on ami-2345" \
    --kms-key-id key-name \
    --source-custom-db-engine-version-identifer arn:aws:rds:us-west-2:123456789012:cev:custom-oracle-ee/19.my_cev1/12345678-ab12-1234-cde1-abcde123456789 \
    --image-id ami-2345
```
Windows の場合:  

```
aws rds create-custom-db-engine-version ^
    --engine custom-oracle-ee ^
    --engine-version 19.my_cev2 ^
    --description "Non-CDB CEV based on ami-2345" ^
    --kms-key-id key-name ^
    --source-custom-db-engine-version-identifer arn:aws:rds:us-west-2:123456789012:cev:custom-oracle-ee/19.my_cev1/12345678-ab12-1234-cde1-abcde123456789 ^
    --image-id ami-2345
```

RDS Custom DB インスタンスをアップグレードするには、[modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) AWS CLIコマンドを次のパラメータを指定します。
+ `--db-instance-identifier` — アップグレードする RDS Custom for Oracle DB インスタンスを指定します。
+ `--engine-version` — 新しい AMI が搭載されている CEV を指定します。
+ `--no-apply-immediately`\$1`--apply-immediately` - アップグレードをすぐに実行するか、あるいはスケジュールされたメンテナンスウィンドウまで待つかを指定します。

次の例では、`my-custom-instance`バージョンを`19.my_cev2`にアップグレードします。OS のみがアップグレードされます。

**Example**  
Linux、macOS、Unix の場合:  

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --engine-version 19.my_cev2 \
    --apply-immediately
```
Windows の場合:  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --engine-version 19.my_cev2 ^
    --apply-immediately
```

### データベースのアップグレード
<a name="custom-upgrading-modify.CLI.db"></a>

この例では、RDS for Oracle DB インスタンスに Oracle パッチ p35042068 を適用します。[OS のアップグレード](#custom-upgrading-modify.CLI.os) で OS をアップグレードしたため、DB インスタンスでは現在 `19.my_cev2` を使用していますが、これは `ami-2345` に基づいています。また `ami-2345` も使用する `19.my_cev3` という名前の新しい CEV を作成しますが、`$MANIFEST` 環境変数には新しい JSON マニフェストを指定します。そのため、新しい CEV とインスタンスが現在使用している CEV で異なるのは、データベースバイナリのみです。

**Example**  
Linux、macOS、Unix の場合:  

```
aws rds create-custom-db-engine-version \
    --engine custom-oracle-ee \
    --engine-version 19.my_cev3 \
    --description "Non-CDB CEV with p35042068 based on ami-2345" \
    --kms-key-id key-name \
    --image-id ami-2345 \
    --manifest $MANIFEST
```
Windows の場合:  

```
aws rds create-custom-db-engine-version ^
    --engine custom-oracle-ee ^
    --engine-version 19.my_cev3 ^
    --description "Non-CDB CEV with p35042068 based on ami-2345" ^
    --kms-key-id key-name ^
    --image-id ami-2345 ^
    --manifest $MANIFEST
```

次の例では、`my-custom-instance` をエンジンバージョン`19.my_cev3` にアップグレードします。データベースのみがアップグレードされます。

**Example**  
Linux、macOS、Unix の場合:  

```
aws rds modify-db-instance \
    --db-instance-identifier my-custom-instance \
    --engine-version 19.my_cev3 \
    --apply-immediately
```
Windows の場合:  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-custom-instance ^
    --engine-version 19.my_cev3 ^
    --apply-immediately
```

# RDS Custom DB インスタンスの保留中データベースアップグレードの表示
<a name="custom-upgrading-pending"></a>

Amazon RDS Custom DB インスタンスの保留中のデータベースアップグレードは、[describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) または [describe-pending-maintenance-actions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-pending-maintenance-actions.html) AWS CLI コマンドを使用して見ることができます。

ただし、`--apply-immediately` オプションを使用したり、またはアップグレードが進行中である場合はこのアプローチは機能しません。

以下の `describe-db-instances` コマンドは、`my-custom-instance` の保留中のデータベースアップグレードを表示します。

```
aws rds describe-db-instances --db-instance-identifier my-custom-instance
```

出力は以下のようになります。

```
{
    "DBInstances": [
        {
           "DBInstanceIdentifier": "my-custom-instance",
            "EngineVersion": "19.my_cev1",
            ...
            "PendingModifiedValues": {
                "EngineVersion": "19.my_cev3"
            ...
            }
        }
    ]
}
```

# RDS Custom for Oracle DB インスタンスのアップグレードエラーのトラブルシューティング
<a name="custom-upgrading-failure"></a>

RDS Custom DB インスタンスのアップグレードに障害が発生すると、RDS イベントが生成され、DB インスタンスのステータスは `upgrade-failed` になります。

このステータスは、以下の例のように、[describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) AWS CLIコマンドを使用して見ることができます。

```
aws rds describe-db-instances --db-instance-identifier my-custom-instance
```

出力は以下のようになります。

```
{
    "DBInstances": [
        {
           "DBInstanceIdentifier": "my-custom-instance",
            "EngineVersion": "19.my_cev1",
            ...
            "PendingModifiedValues": {
                "EngineVersion": "19.my_cev3"
            ...
            }
            "DBInstanceStatus": "upgrade-failed"
        }
    ]
}
```

アップグレードに障害が発生すると、次のタスクを実行するために DB インスタンスを変更する場合を除き、すべてのデータベースアクションがブロックされます。
+ 同じアップグレードを再試行する
+ RDS Custom オートメーションの一時停止と再開
+ ポイントインタイムリカバリ (PITR)
+ DB インスタンスを削除する

**注記**  
RDS Custom DB インスタンスのオートメーションが一時停止されている場合、オートメーションを再開するまでアップグレードを再試行することはできません。  
RDS マネージドリードレプリカのアップグレードエラーには、プライマリと同じアクションが適用されます。

詳細については、「[RDS Custom for Oracle のアップグレードに関するトラブルシューティング](custom-troubleshooting.md#custom-troubleshooting-upgrade)」を参照してください。