

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

# 升級 Amazon RDS Custom for Oracle 的資料庫執行個體
<a name="custom-upgrading"></a>

您可以藉由將 Amazon RDS Custom 資料庫執行個體修改為新的自訂引擎版本 (CEV) 來進行升級。如需升級的一般資訊，請參閱 [升級資料庫執行個體 引擎版本](USER_UpgradeDBInstance.Upgrading.md)。

**Topics**
+ [RDS Custom for Oracle 中的升級概觀](#custom-upgrading.overview)
+ [RDS Custom for Oracle 升級的需求](#custom-upgrading-reqs)
+ [RDS Custom for Oracle 資料庫升級的考量](custom-upgrading-considerations.md)
+ [RDS Custom for Oracle 作業系統升級的考量](custom-upgrading-considerations-os.md)
+ [檢視 RDS Custom for Oracle 資料庫執行個體的有效 CEV 升級目標](custom-upgrading-target.md)
+ [升級 RDS Custom for Oracle 資料庫執行個體](custom-upgrading-modify.md)
+ [檢視 RDS Custom 資料庫執行個體的待定資料庫升級](custom-upgrading-pending.md)
+ [RDS Custom for Oracle 資料庫執行個體升級失敗的疑難排解](custom-upgrading-failure.md)

## RDS Custom for Oracle 中的升級概觀
<a name="custom-upgrading.overview"></a>

使用 RDS Custom for Oracle，您可以建立新的 CEV，然後修改執行個體以使用新 CEV，來修補 Oracle 資料庫或資料庫執行個體作業系統 (OS)。

**Topics**
+ [CEV 升級選項](#custom-upgrading.overview.cev-options)
+ [在沒有 CEV 的情況下進行修補](#custom-upgrading.overview.no-cevs)
+ [使用 CEV 修補資料庫執行個體的一般步驟](#custom-upgrading.overview.general-steps)

### CEV 升級選項
<a name="custom-upgrading.overview.cev-options"></a>

建立 CEV 進行升級時，您有下列互斥選項：

**僅限資料庫**  
重複使用資料庫執行個體目前使用中的 Amazon Machine Image (AMI)，但指定不同的資料庫二進位檔案。RDS Custom 會配置新的二進位磁碟區，然後將其附加到現有的 Amazon EC2 執行個體。RDS Custom 會將整個資料庫磁碟區取代為使用目標資料庫版本的新磁碟區。

**僅限作業系統**  
重複使用資料庫執行個體目前使用中的資料庫二進位檔案，但指定不同的 AMI。RDS Custom 會配置新的 Amazon EC2 執行個體，然後將現有的二進位磁碟區附加到新的執行個體。現有的資料庫磁碟區會加以保留。

如果您想要同時升級作業系統和資料庫，則必須升級 CEV 兩次。您可以先升級作業系統，然後再升級資料庫，或先升級資料庫，然後再升級作業系統。

**警告**  
當您修補作業系統時，您會遺失根磁碟區資料和任何現有的作業系統自訂。因此，我們強烈建議您不要使用安裝或儲存永久資料或檔案的根磁碟區。我們也建議您在升級前，先備份資料。

### 在沒有 CEV 的情況下進行修補
<a name="custom-upgrading.overview.no-cevs"></a>

強烈建議您使用 CEV 升級 RDS Custom for Oracle 資料庫執行個體。RDS Custom for Oracle 會自動將修補程式中繼資料與資料庫執行個體上的資料庫二進位同步。

在特殊情況下，RDS Custom 支援使用 OPatch 公用程式直接將「一次性」資料庫修補程式套用至基礎 Amazon EC2 執行個體。有效的使用情況可能是您要立即套用的資料庫修補程式，但 RDS Custom 群組正在升級 CEV 功能，進而造成延遲。若要手動套用資料庫修補程式，請執行下列步驟：

1. 暫停 RDS Custom 自動化。

1. 將修補程式套用至 Amazon EC2 執行個體上的資料庫二進位。

1. 繼續 RDS Custom 自動化。

執行上述技巧的缺點是，您必須手動將資料庫修補程式套用至每個要升級的執行個體。相反，當您建立新的 CEV 時，您可以使用相同的 CEV 建立或升級多個資料庫執行個體。

### 使用 CEV 修補資料庫執行個體的一般步驟
<a name="custom-upgrading.overview.general-steps"></a>

無論您修補作業系統還是資料庫，都要執行下列基本步驟：

1. 根據您要修補資料庫還是作業系統，建立包含下列任一項目的 CEV：
   + 您要套用到資料庫執行個體的 Oracle Database RU
   + 不同的 AMI (最新的可用 AMI 或您指定的 AMI) 以及用作來源的現有 CEV

   請遵循 [建立 CEV](custom-cev.create.md) 中的步驟。

1. (可供資料庫修補選擇) 執行 `describe-db-engine-versions` 以檢查可用的引擎版本升級。

1. 執行 `modify-db-instance` 以啟動修補程序。

   要修補的執行個體狀態會有所不同，如下所示：
   + RDS 修補資料庫時，資料庫執行個體的狀態將變更為**升級中**。
   + RDS 修補作業系統時，資料庫執行個體的狀態將變更為**修改中**。

   資料庫執行個體的狀態為**可用**時，表示修補已完成。

1. 執行 `describe-db-instances` 以確認您的資料庫執行個體使用新的 CEV。

## RDS Custom for Oracle 升級的需求
<a name="custom-upgrading-reqs"></a>

若要將 RDS Custom for Oracle 資料庫執行個體升級為目標 CEV，請確定符合下列需求：
+ 您要升級的目標 CEV 必須存在。
+ 您必須在單一操作中升級作業系統或資料庫。不支援在單一 API 呼叫中同時升級作業系統和資料庫。
+ 目標 CEV 必須使用目前 CEV 清單檔案中的安裝參數設定。例如，您無法將使用預設 Oracle 主目錄的資料庫升級至使用非預設 Oracle 主目錄的 CEV。
+ 對於資料庫升級，目標 CEV 必須使用新的次要資料庫版本，而不是新的主要版本。例如，您無法從 Oracle 資料庫 12c CEV 升級至 Oracle 資料庫 19c CEV。但您可以從版本 21.0.0.0.ru-2023-04.rur-2023-04.r1 升級至版本 21.0.0.0.ru-2023-07.rur-2023-07.r1。
+ 對於作業系統升級，目標 CEV 必須使用不同的 AMI，但具有相同的主要版本。

# RDS Custom for Oracle 資料庫升級的考量
<a name="custom-upgrading-considerations"></a>

如果您打算升級資料庫，請考慮下列事項：
+ 目前支援的作業系統 (OS) 版本為 Oracle Linux 8。若要繼續從 RDS Custom for Oracle 接收最新的安全性更新和修補程式，請根據此作業系統指定 CEV，將您的資料庫執行個體升級至 Oracle Linux 8。Oracle 資料庫 12c 版本 1 (12.1)、Oracle 資料庫版本 2 (12.2) 和 Oracle 資料庫 19c 是唯一支援 Oracle Linux 8 的版本。若要遷移至最新的 Oracle Linux 8 AMI，請將您的作業系統升級至最新的 AMI。如需詳細資訊，請參閱[升級 RDS Custom for Oracle 資料庫執行個體](custom-upgrading-modify.md)。

  Oracle Linux 7.9 已於 2024 年 12 月 31 日結束支援。若要在支援結束後繼續執行 Oracle Linux 7，請購買 Oracle 延伸支援授權。您必須負責安全性更新，且必須手動修補 RDS Custom for Oracle 執行個體。如需詳細資訊，請參閱[生命週期支援政策：Oracle 開放原始碼服務方案的涵蓋範圍](https://www.oracle.com/a/ocom/docs/elsp-lifetime-069338.pdf)。
+ 當您升級主要資料庫執行個體中的資料庫二進位檔案時，RDS Custom for Oracle 會自動升級您的僅供讀取複本。不過，當您升級作業系統時，必須手動升級僅供讀取複本。
+ 當您將容器資料庫 (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. 建立新的 RDS Custom for Oracle 資料庫執行個體，其會使用 Oracle 多租戶架構。

  1. 將非 CDB 插入您的 CDB 根中，將其建立為 PDB。確定非 CDB 的主要版本與您的 CDB 相同。

  1. 透過執行 `noncdb_to_pdb.sql` Oracle SQL 指令碼來轉換您的 PDB。

  1. 驗證您的 CDB 執行個體。

  1. 升級您的 CDB 執行個體。

# RDS Custom for Oracle 作業系統升級的考量
<a name="custom-upgrading-considerations-os"></a>

規劃作業系統升級時，請確定以下各項：
+ 您無法提供自己的 AMI 以在 RDS Custom for Oracle CEV 中使用。您可以指定使用 Oracle Linux 8 的預設 AMI，或 RDS Custom for Oracle CEV 先前使用的 AMI。
**注意**  
發現常見漏洞和暴露時，RDS Custom for Oracle 會發行新的預設 AMI。無固定排程可用或保證。RDS Custom for Oracle 傾向於每 30 天發布新的預設 AMI。
+ 當您升級主要資料庫執行個體中的作業系統時，必須手動升級其相關聯的僅供讀取複本。
+ 請在開始修補業系統之前，為 AZ 中的執行個體類型保留足夠的 Amazon EC2 運算容量。

  建立容量保留時，您必須指定 AZ、執行個體數目和執行個體屬性 (包括執行個體類型)。例如，如果您的資料庫執行個體使用基礎 EC2 執行個體類型 r5.large，建議您在 AZ 中為 r5.large 保留 EC2 容量。在作業系統修補期間，RDS Custom 會建立類型為 db.r5.large 的新主機，如果 AZ 缺少此執行個體類型的 EC2 容量，則該主機可能會停滯。如果您保留 EC2 容量，則可以降低因容量限制而導致修補遭到封鎖的風險。如需詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[隨需容量保留](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html)。
+ 升級其作業系統之前，請備份資料庫執行個體。升級會移除您的根磁碟區資料和任何現有的作業系統自訂。
+ 在共同責任模型中，您有責任將作業系統保持在最新狀態。RDS Custom for Oracle 不會強制您套用哪些修補程式到您的作業系統。如果您的 RDS Custom for Oracle 正常運作，您可以無限期地使用與此 CEV 相關聯的 AMI。

# 檢視 RDS Custom for Oracle 資料庫執行個體的有效 CEV 升級目標
<a name="custom-upgrading-target"></a>

您可以在 AWS 管理主控台中的 **Custom engine versions** (自訂引擎版本) 頁面中看到現有的 CEV。

您也可以使用 [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) AWS CLI 命令來尋找升級資料庫執行個體時要使用的有效 CEVs，如下列範例所示。此範例假設您已使用引擎版本 `19.my_cev1` 建立資料庫執行個體，並假設升級版本 `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 資料庫執行個體
<a name="custom-upgrading-modify"></a>

若要升級 RDS Custom for Oracle 資料庫執行個體，請將其修改為使用新的 CEV。此 CEV 可以包含新的資料庫二進位檔案或新的 AMI。例如，若要將 Oracle Linux 7.9 資料庫執行個體升級至 Oracle Linux 8，請指定使用 Oracle Linux 8 的最新 AMI。若要升級資料庫和作業系統，則必須執行兩個不同的升級。

**注意**  
如果您升級資料庫，RDS Custom 會在升級主要資料庫執行個體之後自動升級僅供讀取複本。如果升級作業系統，您必須手動升級這些複本。

開始之前，請先檢閱 [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 for Oracle 資料庫執行個體**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇**資料庫**，然後選擇您要升級的 RDS Custom for Oracle 資料庫執行個體。

1. 選擇 **Modify (修改)**。**Modify DB instance (修改資料庫執行個體)** 頁面隨即出現。

1. 對於**資料庫引擎版本**，選擇新的 CEV。請執行下列操作：
   + 如果您要修補資料庫，請確定 CEV 指定的資料庫二進位檔與資料庫執行個體所使用的資料庫二進位檔案不同，而且未指定與資料庫執行個體目前所用 AMI 不同的 AMI。
   + 如果您要修補作業系統，請確定 CEV 指定的 AMI 與資料庫執行個體所使用的 AMI 不同，而且未指定不同的資料庫二進位檔案。
**警告**  
當您修補作業系統時，您會遺失根磁碟區資料和任何現有的作業系統自訂。

1. 選擇 **Continue (繼續)** 以檢查修改的摘要。

   若要立即套用變更，請選擇 **Apply immediately (立即套用)**。

1. 如果您的變更正確，請選擇 **Modify DB instance (修改資料庫執行個體)**。或者，選擇 **Back (上一步)** 以編輯變更，或是選擇 **Cancel (取消)** 以取消變更。

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

下列範例顯示可能的升級案例。這些範例假設您已建立 RDS Custom for Oracle 資料庫執行個體，其具有下列特性：
+ 名為 `my-custom-instance` 的資料庫執行個體
+ 名為 `19.my_cev1` 的 CEV
+ Oracle Database 19c 使用非 CDB 架構
+ 使用 AMI `ami-1234` 的 Oracle Linux 8

最新服務提供的 AMI 為 `ami-2345`。您可以執行 CLI 命令 `describe-db-engine-versions` 來尋找您的 AMI：

**Topics**
+ [升級作業系統](#custom-upgrading-modify.CLI.os)
+ [升級資料庫](#custom-upgrading-modify.CLI.db)

### 升級作業系統
<a name="custom-upgrading-modify.CLI.os"></a>

在此範例中，您想要將 `ami-1234` 升級至 `ami-2345`，這是最新服務提供的 AMI。因為您要升級作業系統，所以 `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 資料庫執行個體，請使用 [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 資料庫執行個體。
+ `--engine-version` - 指定具有新 AMI 的 CEV。
+ `--no-apply-immediately` \$1 `--apply-immediately` – 指定要立即執行升級，還是等到排定的維護時段。

下列範例會將 `my-custom-instance` 升級到版本 `19.my_cev2`。僅升級作業系統。

**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>

在此範例中，您想要將 Oracle 修補程式 p35042068 套用至 RDS for Oracle 資料庫執行個體。因為您已在 [升級作業系統](#custom-upgrading-modify.CLI.os) 中升級作業系統，所以您的資料庫執行個體目前正在使用 `19.my_cev2`，其是以 `ami-2345` 為基礎。您建立名為 `19.my_cev3` 的新 CEV，其也會使用`ami-2345`，但您可以在 `$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 資料庫執行個體的待定資料庫升級
<a name="custom-upgrading-pending"></a>

您可以使用 [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 命令，查看 Amazon RDS Custom 資料庫執行個體的待處理資料庫升級。

不過，如果您使用 `--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 資料庫執行個體升級失敗的疑難排解
<a name="custom-upgrading-failure"></a>

如果 RDS Custom 資料庫執行個體升級失敗，則會產生 RDS 事件且資料庫執行個體狀態會變成 `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"
        }
    ]
}
```

升級失敗之後，除了修改資料庫執行個體以執行下列工作之外，所有資料庫動作都會遭到封鎖：
+ 重試相同的升級
+ 暫停和繼續 RDS Custom 自動化
+ 時間點復原 (PITR)
+ 刪除資料庫執行個體

**注意**  
如果已暫停 RDS Custom 資料庫執行個體的自動化，則在繼續自動化之前，您無法重試升級。  
相同的動作適用於 RDS 受管僅供讀取複本的升級失敗，與主要複本的升級失敗相同。

如需更多詳細資訊，請參閱 [針對 RDS Custom for Oracle 升級進行故障診斷](custom-troubleshooting.md#custom-troubleshooting-upgrade)。