

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

# 將選項新增至 Oracle 資料庫執行個體
<a name="Appendix.Oracle.Options"></a>

在 Amazon RDS 中，選項是額外的功能。以下說明了可新增至執行 Oracle 資料庫引擎之 Amazon RDS 執行個體的選項。

**Topics**
+ [

# Oracle 資料庫選項概觀
](Appendix.Oracle.Options.overview.md)
+ [

# Amazon S3 整合
](oracle-s3-integration.md)
+ [

# Oracle Application Express (APEX)
](Appendix.Oracle.Options.APEX.md)
+ [

# Amazon EFS 整合
](oracle-efs-integration.md)
+ [

# Oracle Java 虛擬機器
](oracle-options-java.md)
+ [

# Oracle Enterprise Manager
](Oracle.Options.OEM.md)
+ [

# Oracle Label Security
](Oracle.Options.OLS.md)
+ [

# Oracle Locator
](Oracle.Options.Locator.md)
+ [

# Oracle 原生網路加密
](Appendix.Oracle.Options.NetworkEncryption.md)
+ [

# Oracle OLAP
](Oracle.Options.OLAP.md)
+ [

# Oracle Secure Sockets Layer
](Appendix.Oracle.Options.SSL.md)
+ [

# Oracle Spatial
](Oracle.Options.Spatial.md)
+ [

# Oracle SQLT
](Oracle.Options.SQLT.md)
+ [

# Oracle Statspack
](Appendix.Oracle.Options.Statspack.md)
+ [

# Oracle 時區
](Appendix.Oracle.Options.Timezone.md)
+ [

# Oracle 時區檔案自動升級
](Appendix.Oracle.Options.Timezone-file-autoupgrade.md)
+ [

# Oracle 透明資料加密
](Appendix.Oracle.Options.AdvSecurity.md)
+ [

# Oracle UTL\$1MAIL
](Oracle.Options.UTLMAIL.md)
+ [

# Oracle XML 資料庫
](Appendix.Oracle.Options.XMLDB.md)

# Oracle 資料庫選項概觀
<a name="Appendix.Oracle.Options.overview"></a>

若要啟用您 Oracle 資料庫的選項，請將其新增至選項群組，然後使選項群組與您的資料庫執行個體產生關聯。如需更多詳細資訊，請參閱 [使用選項群組](USER_WorkingWithOptionGroups.md)。

**Topics**
+ [

## Oracle 資料庫選項的摘要
](#Appendix.Oracle.Options.summary)
+ [

## 支援不同版本的選項
](#Appendix.Oracle.Options.editions)
+ [

## 特定選項的記憶體需求
](#Appendix.Oracle.Options.memory)

## Oracle 資料庫選項的摘要
<a name="Appendix.Oracle.Options.summary"></a>

對於 Oracle 資料庫執行個體，您可以新增下列選項。


****  

| 選項 | 選項 ID | 
| --- | --- | 
|  [Amazon S3 整合](oracle-s3-integration.md)  |  `S3_INTEGRATION`  | 
|  [Oracle Application Express (APEX)](Appendix.Oracle.Options.APEX.md)  |  `APEX` `APEX-DEV`  | 
|  [Oracle Enterprise Manager](Oracle.Options.OEM.md)  |  `OEM` `OEM_AGENT`  | 
|  [Oracle Java 虛擬機器](oracle-options-java.md)  |  `JVM`  | 
|  [Oracle Label Security](Oracle.Options.OLS.md)  |  `OLS`  | 
|  [Oracle Locator](Oracle.Options.Locator.md)  |  `LOCATOR`  | 
|  [Oracle 原生網路加密](Appendix.Oracle.Options.NetworkEncryption.md)  |  `NATIVE_NETWORK_ENCRYPTION`  | 
|  [Oracle OLAP](Oracle.Options.OLAP.md)  |  `OLAP`  | 
|  [Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md)  |  `SSL`  | 
|  [Oracle Spatial](Oracle.Options.Spatial.md)  |  `SPATIAL`  | 
|  [Oracle SQLT](Oracle.Options.SQLT.md)  |  `SQLT`  | 
|  [Oracle Statspack](Appendix.Oracle.Options.Statspack.md)  |  `STATSPACK`  | 
|  [Oracle 時區](Appendix.Oracle.Options.Timezone.md)  |  `Timezone`  | 
|  [Oracle 時區檔案自動升級](Appendix.Oracle.Options.Timezone-file-autoupgrade.md)  |  `TIMEZONE_FILE_AUTOUPGRADE`  | 
|  [Oracle 透明資料加密](Appendix.Oracle.Options.AdvSecurity.md)  |  `TDE`  | 
|  [Oracle UTL\$1MAIL](Oracle.Options.UTLMAIL.md)  |  `UTL_MAIL`  | 
|  [Oracle XML 資料庫](Appendix.Oracle.Options.XMLDB.md)  |  `XMLDB`  | 

## 支援不同版本的選項
<a name="Appendix.Oracle.Options.editions"></a>

RDS for Oracle 會阻止您將不受支援的選項新增至版本。若要找出不同版本的 Oracle 資料庫所支援的 RDS 選項，請使用命令 `aws rds describe-option-group-options`。下列範例列出 Oracle 資料庫 19c Enterprise Edition 的支援選項。

```
aws rds describe-option-group-options \
    --engine-name oracle-ee \
    --major-engine-version 19
```

如需詳細資訊，請參閱*《AWS CLI 命令參考》*中的 [describe-option-group-options](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-option-group-options.html)。

## 特定選項的記憶體需求
<a name="Appendix.Oracle.Options.memory"></a>

某些選項在資料庫執行個體上執行時需要額外記憶體。例如，「Oracle Enterprise Manager 資料庫控制」使用大約 300 MB 的 RAM。如果您對小型資料庫執行個體啟用此選項，則可能會因為記憶體受限而遭遇效能問題。您可以調整 Oracle 參數，使得資料庫需要較少的 RAM。或者，您也可以擴展為較大的資料庫執行個體。

# Amazon S3 整合
<a name="oracle-s3-integration"></a>

您可在 RDS for Oracle 資料庫執行個體與 Amazon S3 儲存貯體之間傳輸檔案。您可以使用 Amazon S3 與 Oracle Data Pump 等 Oracle 資料庫功能整合。例如，您可從 Amazon S3 下載 Data Pump 檔案至 RDS for Oracle 資料庫執行個體。如需更多詳細資訊，請參閱 [將資料匯入 Amazon RDS 上的 Oracle](Oracle.Procedural.Importing.md)。

**注意**  
資料庫執行個體與 Amazon S3 儲存貯體必須在相同的 AWS 區域 中。

**Topics**
+ [

# 設定 IAM 許可權限以進行 RDS for Oracle 與 Amazon S3 的整合
](oracle-s3-integration.preparing.md)
+ [

# 新增 Amazon S3 整合選項
](oracle-s3-integration.preparing.option-group.md)
+ [

# 在 Amazon RDS for Oracle 和 Amazon S3 儲存貯體之間傳輸檔案
](oracle-s3-integration.using.md)
+ [

## 針對 Amazon S3 整合進行疑難排解
](#oracle-s3-integration.troubleshooting)
+ [

# 移除 Amazon S3 整合選項
](oracle-s3-integration.removing.md)

# 設定 IAM 許可權限以進行 RDS for Oracle 與 Amazon S3 的整合
<a name="oracle-s3-integration.preparing"></a>

若要讓 RDS for Oracle 與 Amazon S3 整合，則您的資料庫執行個體必須具有 Amazon S3 儲存貯體的存取權。您的資料庫執行個體使用的 Amazon VPC 不需要提供存取給 Amazon S3 端點。

RDS for Oracle 支援在一個帳戶中的資料庫執行個體與另一個帳戶中的 Amazon S3 儲存貯體之間傳輸檔案。如需採取額外步驟，下列各節中會說明這些步驟。

**Topics**
+ [

## 步驟 1：建立 Amazon RDS 角色的 IAM 政策
](#oracle-s3-integration.preparing.policy)
+ [

## 步驟 2：(選用) 建立 Amazon S3 儲存貯體的 IAM 政策
](#oracle-s3-integration.preparing.policy-bucket)
+ [

## 步驟 3：建立您的資料庫執行個體的 IAM 角色並附加政策
](#oracle-s3-integration.preparing.role)
+ [

## 步驟 4：建立 IAM 角色與 RDS for Oracle 資料庫執行個體的關聯
](#oracle-s3-integration.preparing.instance)

## 步驟 1：建立 Amazon RDS 角色的 IAM 政策
<a name="oracle-s3-integration.preparing.policy"></a>

在此步驟中，您會建立具有在 Amazon S3 儲存貯體和 RDS 資料庫執行個體之間傳輸檔案所需許可的 AWS Identity and Access Management(IAM) 政策。此步驟假設您已建立 S3 儲存貯體。

在您建立政策之前，請記住下列資訊：
+ 儲存貯體的 Amazon Resource Name (ARN)
+ 如果您的儲存貯體使用 SSE-KMS 或 SSE-S3 加密，則為AWS KMS金鑰的 ARN
**注意**  
RDS for Oracle 資料庫執行個體無法存取使用 SSE-C 加密的 Amazon S3 儲存貯體。

如需詳細資訊，請參閱《Amazon Simple Storage Service 使用者指南》**中的[使用伺服器端加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)。

### 主控台
<a name="oracle-s3-integration.preparing.policy.console"></a>

**建立 IAM 政策以允許 Amazon RDS 存取您的 Amazon S3 儲存貯體**

1. 開啟 [IAM 管理主控台](https://console.aws.amazon.com/iam/home?#home)。

1. 在 **Access management** (存取管理) 下，請選擇 **Policies** (政策)。

1. 選擇**建立政策**。

1. 在 **Visual editor (視覺化編輯器)** 標籤中，選擇 **Choose a service (選擇服務)**，然後選擇 **S3**。

1. 在 **Actions** (動作) 中，選擇 **Expand all** (全部展開)，然後選擇從 Amazon S3 儲存貯體傳輸檔案至 Amazon RDS 所需的儲存貯體許可和物件許可。例如，請執行以下操作：
   + 展開 **List** (清單)，然後選取 **ListBucket**。
   + 展開 **Read** (讀取)，然後選取 **GetObject**。
   + 展開**寫入**，然後選取 **PutObject**、**DeleteObject**、**AbortMultipartUpload** 和 **ListMultipartUploadParts**。將大型檔案 (100 MB 或更大) 上傳至 Amazon S3 時，需要分段上傳許可。
   + 展開 **Permissions management (許可權限管理)**，然後選取 **PutObjectAcl**。若您計劃將檔案上傳至另一個帳戶所擁有的儲存貯體，而此帳戶需要儲存貯體內容的完全控制，則需要此許可權限。

   *物件許可權限*是 Amazon S3 中物件作業的許可權限。您必須授予其儲存貯體中的物件，而非儲存貯體本身。如需詳細資訊，請參閱[物件作業的許可權限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-objects)。

1. 選擇**資源**，然後執行下列動作：

   1. 選擇**特定**。

   1. 針對**儲存貯體**，請選擇**新增 ARN**。輸入您的儲存貯體 ARN。儲存貯體名稱會自動填入。接著選擇 **Add (新增)**。

   1. 如果顯示**物件**資源，請選擇**新增 ARN** 以手動新增資源，或選擇**任何**。
**注意**  
您可以將 **Amazon Resource Name (ARN)** 設為更具體的 ARN 值，以允許 Amazon RDS 只能存取 Amazon S3 儲存貯體中的特定檔案或資料夾。如需如何為 Amazon S3 定義存取原則的詳細資訊，請參閱[管理 Amazon S3 資源的存取許可](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)。

1. (選用) 選擇 **Add additional permissions** (新增其他許可)，將資源新增至政策。例如，請執行以下操作：

   1. 如果您的儲存貯體使用自訂 KMS 金鑰加密，請為服務選取 **KMS**。

   1. 針對**手動動作**，請選取下列項目：
      + **加密**
      + **ReEncrypt from** 和 **ReEncrypt to**
      + **解密**
      + **DescribeKey**
      + **GenerateDataKey**

   1. 針對**資源**，請選擇**特定**。

   1. 針對**金鑰**，請選擇**新增 ARN**。輸入自訂金鑰的 ARN 作為資源，然後選擇**新增**。

      如需詳細資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[使用存放在 AWS Key Management Service(SSE-KMS) 中的 KMS 金鑰進行伺服器端加密來保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)。

   1. 如果您想要 Amazon RDS 存取其他儲存貯體，請新增這些儲存貯體的 ARN。(選擇性) 您也可以授權存取 Amazon S3 中的所有儲存貯體和物件。

1. 選擇 **Next: Tags (下一步：標籤)**，然後選擇 **Next: Review (下一步：檢閱)**。

1. 在 **Name (名稱)** 輸入您的 IAM 政策名稱，例如 `rds-s3-integration-policy`。您可使用此項名稱，建立與資料庫叢集相關的 IAM 角色。您也可以新增選用的 **Description (描述) **值。

1. 選擇 **Create policy** (建立政策)。

### AWS CLI
<a name="oracle-s3-integration.preparing.policy.CLI"></a>

建立 AWS Identity and Access Management(IAM) 政策，授予 Amazon RDS 對 Amazon S3 儲存貯體的存取權。在您建立政策後，請記下政策的 ARN。您需要 ARN 才能進行後續步驟。

依據所需的存取類型，在政策中納入適當動作：
+ `GetObject` – 必須從 Amazon S3 儲存貯體傳輸檔案至 Amazon RDS。
+ `ListBucket` – 必須從 Amazon S3 儲存貯體傳輸檔案至 Amazon RDS。
+ `PutObject` – 必須由 Amazon RDS 傳輸檔案至 Amazon S3 儲存貯體。
+ `AbortMultipartUpload` – 從 Amazon RDS 將大型檔案 (100 MB 或更大) 傳輸至 Amazon S3 儲存貯體時，必須用於分段上傳。
+ `ListMultipartUploadParts` – 從 Amazon RDS 將大型檔案 (100 MB 或更大) 傳輸至 Amazon S3 儲存貯體時，必須用於分段上傳。

下列AWS CLI命令會使用這些選項建立名為 `rds-s3-integration-policy`的 IAM 政策。其中將授予存取至名為 `amzn-s3-demo-bucket` 的儲存貯體。

**Example**  
針對 Linux、macOS 或 Unix：  

```
aws iam create-policy \
   --policy-name rds-s3-integration-policy \
   --policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "s3integration",
         "Action": [
           "s3:GetObject",
           "s3:ListBucket",
           "s3:PutObject",
           "s3:AbortMultipartUpload",
           "s3:ListMultipartUploadParts"
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket", 
           "arn:aws:s3:::amzn-s3-demo-bucket/*"
         ]
       }
     ]
   }'
```
下列範例包含自訂 KMS 金鑰的許可。  

```
aws iam create-policy \
   --policy-name rds-s3-integration-policy \
   --policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "s3integration",
         "Action": [
           "s3:GetObject",
           "s3:ListBucket",
           "s3:PutObject",
           "kms:Decrypt",
           "kms:Encrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey",
           "kms:DescribeKey",
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket", 
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:kms:::your-kms-arn"
         ]
       }
     ]
   }'
```
在 Windows 中：  

```
aws iam create-policy ^
   --policy-name rds-s3-integration-policy ^
   --policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "s3integration",
         "Action": [
           "s3:GetObject",
           "s3:ListBucket",
           "s3:PutObject",
           "s3:AbortMultipartUpload",
           "s3:ListMultipartUploadParts"
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket", 
           "arn:aws:s3:::amzn-s3-demo-bucket/*"
         ]
       }
     ]
   }'
```
下列範例包含自訂 KMS 金鑰的許可。  

```
aws iam create-policy ^
   --policy-name rds-s3-integration-policy ^
   --policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "s3integration",
         "Action": [
           "s3:GetObject",
           "s3:ListBucket",
           "s3:PutObject",
           "kms:Decrypt",
           "kms:Encrypt",
           "kms:ReEncrypt",
           "kms:GenerateDataKey",
           "kms:DescribeKey",
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket", 
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:kms:::your-kms-arn"
         ]
       }
     ]
   }'
```

## 步驟 2：(選用) 建立 Amazon S3 儲存貯體的 IAM 政策
<a name="oracle-s3-integration.preparing.policy-bucket"></a>

只有在下列情況中才需要此步驟：
+ 您計劃從一個帳戶 (帳戶 A) 將檔案上傳至 Amazon S3 儲存貯體，然後從另一個帳戶 (帳戶 B) 進行存取。
+ 帳戶 B 擁有儲存貯體。
+ 帳戶 B 需要載入儲存貯體中物件的完整控制。

若上述條件不適用於您，請跳到 [步驟 3：建立您的資料庫執行個體的 IAM 角色並附加政策](#oracle-s3-integration.preparing.role)。

如要建立儲存貯體政策，請確定您具有下列項目：
+ 帳戶 A 的帳戶 ID
+ 帳户 A 的使用者名稱
+ 帳戶 B 中 Amazon S3 儲存貯體的 ARN 值

### 主控台
<a name="oracle-s3-integration.preparing.policy-bucket.console"></a>

**建立或編輯儲存貯體政策**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 在 **Buckets (儲存貯體)** 清單中，選擇要建立儲存貯體政策的儲存貯體名稱，或您想編輯之儲存貯體政策的儲存貯體名稱。

1. 選擇 **Permissions** (許可)。

1. 在 **Bucket policy (儲存貯體政策)** 下方，選擇 **Edit (編輯)**。這會開啟「編輯儲存貯體政策」頁面。

1. 在 **Edit bucket policy** (編輯儲存貯體政策) 頁面，瀏覽*《Amazon S3 使用者指南》*中的 **Policy examples** (政策範例)、選擇 **Policy generator** (政策產生器) 以自動產生政策，或在 **Policy** (政策) 區段編輯 JSON。

   如果您選擇**政策產生器**，AWS政策產生器會在新視窗中開啟：

   1. 在 **AWS Policy Generator** ( 政策產生器) 頁面上，在 **Select Type of Policy** (選取政策類型) 中選擇 **S3 Bucket Policy** (S3 儲存貯體政策)。

   1. 在提供的欄位中輸入資訊，以新增陳述式，然後選擇 **Add Statement** (新增陳述式)。針對您想要新增的任意數量陳述式重複此動作。如需這些欄位的詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM JSON 政策元素參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。
**注意**  
為方便起見，**Edit bucket policy** (編輯儲存貯體政策) 頁面會在 **Policy** (政策) 文字欄位上方顯示目前儲存貯體的 **Bucket ARN **(Amazon Resource Name) (儲存貯體 ARN (Amazon 資源名稱))。您可以複製此 ARN，以在 **AWS Policy Generator** ( 政策產生器) 頁面上的陳述式中使用。

   1. 完成新增陳述式後，選擇 **Generate Policy** (產生政策)。

   1. 複製產生的政策文字，選擇 **Close** (關閉)，然後退回 Amazon S3 主控台中的 **Edit bucket policy** (編輯儲存貯體政策) 頁面。

1. 在 **Policy** (政策) 方塊中，編輯現有政策，或從政策產生器貼上儲存貯體政策。請務必先處理安全性警告、錯誤、一般警告，以及建議，然後再儲存政策。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "ExamplePermissions",
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::123456789012:user/account-A-user"
         },
         "Action": [
           "s3:PutObject",
           "s3:PutObjectAcl"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-destination-bucket",
           "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
         ]
       }
     ]
   }
   ```

------

1. 選擇 **Save changes** (儲存變更)，此選項會跳至儲存貯體許可頁面。

## 步驟 3：建立您的資料庫執行個體的 IAM 角色並附加政策
<a name="oracle-s3-integration.preparing.role"></a>

此步驟會假設您已於 [步驟 1：建立 Amazon RDS 角色的 IAM 政策](#oracle-s3-integration.preparing.policy) 中建立了 IAM 政策。於此步驟中，您會建立 RDS for Oracle 資料庫執行個體的角色，然後將政策附加至角色。

### 主控台
<a name="oracle-s3-integration.preparing.role.console"></a>

**建立 IAM 角色以允許 Amazon RDS 存取 Amazon S3 儲存貯體**

1. 開啟 [IAM 管理主控台](https://console.aws.amazon.com/iam/home?#home)。

1. 在導覽窗格中，選擇 **Roles** (角色)。

1. 選擇 **Create Role** (建立角色)。

1. 選擇 **AWS 服務**。

1. 對於**其他服務的使用案例AWS：**，選擇 **RDS**，然後選擇 **RDS – 將角色新增至資料庫**。然後選擇**下一步**。

1. 請在**許可政策**之下的**搜尋**輸入您在 [步驟 1：建立 Amazon RDS 角色的 IAM 政策](#oracle-s3-integration.preparing.policy) 建立的 IAM 政策名稱，然後於政策出現在清單時加以選取。然後選擇**下一步**。

1. 在**角色名稱**中輸入 IAM 角色名稱，例如 `rds-s3-integration-role`。您也可以新增選用的 **Description (描述) **值。

1. 選擇建**立角色**。

### AWS CLI
<a name="integration.preparing.role.CLI"></a>

**如要建立角色並將政策附加至該角色**

1. 建立 IAM 角色，讓 Amazon RDS 可代表您存取您的 Amazon S3 儲存貯體。

   建議您在資源型信任關係中使用 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 和 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全域條件內容索引鍵，將服務的許可限定於特定資來源。這是防止[混淆代理人問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)最有效的方式。

   您可以同時使用全域條件內容索引鍵和包含帳號 ID 的 `aws:SourceArn` 值。在此情況下，當在相同陳述式中使用 `aws:SourceAccount` 值和 `aws:SourceArn` 裡的帳户時，兩者必須使用同樣的帳户 ID。
   + 如果您想要跨服務存取單一資源，請使用 `aws:SourceArn`。
   + 如果您想要允許該帳戶中的任何資源與跨服務使用相關聯，請使用 `aws:SourceAccount`。

   在信任關係中，請務必使用 `aws:SourceArn` 全域條件內容索引鍵，其中包含存取角色的資源之完整 Amazon 資源名稱 (ARN)。

   下列AWS CLI命令`rds-s3-integration-role`會為此目的建立名為 的角色。  
**Example**  

   針對 Linux、macOS 或 Unix：

   ```
   aws iam create-role \
      --role-name rds-s3-integration-role \
      --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "my_account_ID",
                    "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname"
                }
            }
          }
        ]
      }'
   ```

   在 Windows 中：

   ```
   aws iam create-role ^
      --role-name rds-s3-integration-role ^
      --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "my_account_ID",
                    "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname"
                }
            }
          }
        ]
      }'
   ```

   如需詳細資訊，請參閱《IAM 使用者指南》**中的[建立角色以將許可委派給 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)。

1. 角色建立後，請記下角色的 ARN。您需要 ARN 才能進行後續步驟。

1. 請將您建立的政策連接到您建立的角色。

   下列AWS CLI命令會將政策連接至名為 的角色`rds-s3-integration-role`。  
**Example**  

   針對 Linux、macOS 或 Unix：

   ```
   aws iam attach-role-policy \
      --policy-arn your-policy-arn \
      --role-name rds-s3-integration-role
   ```

   在 Windows 中：

   ```
   aws iam attach-role-policy ^
      --policy-arn your-policy-arn ^
      --role-name rds-s3-integration-role
   ```

   將 `your-policy-arn` 替換為您前個步驟記下的政策 ARN。

## 步驟 4：建立 IAM 角色與 RDS for Oracle 資料庫執行個體的關聯
<a name="oracle-s3-integration.preparing.instance"></a>

設定 Amazon S3 整合許可的最後一個步驟是將您的 IAM 角色與資料庫執行個體建立關聯。請注意以下要求：
+ 您必須能存取連接了必要 Amazon S3 許可政策的角色。
+ 您一次只能將一個 IAM 角色與 RDS for Oracle 資料庫執行個體建立關聯。
+ 您的資料庫執行個體必須處於**可用**狀態。

### 主控台
<a name="oracle-s3-integration.preparing.instance.console"></a>

**如要建立 IAM 角色與 RDS for Oracle 資料庫執行個體的關聯**

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

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇 RDS for Oracle 資料庫執行個體名稱以顯示其詳細資訊。

1. 在 **Connectivity & security (連線和安全)** 索引標籤上，向下捲動至頁面底部的 **Manage IAM roles (管理 IAM 角色)** 區段。

1. 對於**新增 IAM 角色到此執行個體**，請選擇您在 [步驟 3：建立您的資料庫執行個體的 IAM 角色並附加政策](#oracle-s3-integration.preparing.role) 中建立的角色。

1. 針對 **Feature** (功能) 選擇 **S3\$1INTEGRATION**。  
![\[新增 S3_INTEGRATION 角色\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/ora-s3-integration-role.png)

1. 選擇 **Add role (新增角色)**。

### AWS CLI
<a name="oracle-s3-integration.preparing.instance.CLI"></a>

下列AWS CLI命令會將 角色新增至名為 的 Oracle 資料庫執行個體`mydbinstance`。

**Example**  
針對 Linux、macOS 或 Unix：  

```
aws rds add-role-to-db-instance \
   --db-instance-identifier mydbinstance \
   --feature-name S3_INTEGRATION \
   --role-arn your-role-arn
```
在 Windows 中：  

```
aws rds add-role-to-db-instance ^
   --db-instance-identifier mydbinstance ^
   --feature-name S3_INTEGRATION ^
   --role-arn your-role-arn
```

將 `your-role-arn` 替換為您前個步驟記下的角色 ARN。`S3_INTEGRATION` 必須在 `--feature-name` 選項中指定。

# 新增 Amazon S3 整合選項
<a name="oracle-s3-integration.preparing.option-group"></a>

若要整合 Amazon RDS for Oracle 與 Amazon S3，您的資料庫執行個體必須與包含 `S3_INTEGRATION` 選項的選項群組建立關聯。

## 主控台
<a name="oracle-s3-integration.preparing.option-group.console"></a>

**設定選項群組進行 Amazon S3 整合**

1. 建立新的選項群組，或識別現有的選項群組，以便在其中新增 `S3_INTEGRATION` 選項。

   如需建立選項群組的相關資訊，請參閱[建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 `S3_INTEGRATION` 選項新增至選項群組。

   如需將選項新增至選項群組的相關資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

1. 建立新的 RDS for Oracle 資料庫執行個體，將其與選項群組建立關聯，或修改 RDS for Oracle 資料庫執行個體，使其與選項群組建立關聯。

   如需建立資料庫執行個體的相關資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。

   如需修改資料庫執行個體的相關資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## AWS CLI
<a name="oracle-s3-integration.preparing.option-group.cli"></a>

**設定選項群組進行 Amazon S3 整合**

1. 建立新的選項群組，或識別現有的選項群組，以便在其中新增 `S3_INTEGRATION` 選項。

   如需建立選項群組的相關資訊，請參閱[建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 `S3_INTEGRATION` 選項新增至選項群組。

   例如下列 AWS CLI 命令可將 `S3_INTEGRATION` 選項新增至名為 **myoptiongroup** 的選項群組。  
**Example**  

   針對 Linux、macOS 或 Unix：

   ```
   aws rds add-option-to-option-group \
      --option-group-name myoptiongroup \
      --options OptionName=S3_INTEGRATION,OptionVersion=1.0
   ```

   針對 Windows：

   ```
   aws rds add-option-to-option-group ^
      --option-group-name myoptiongroup ^
      --options OptionName=S3_INTEGRATION,OptionVersion=1.0
   ```

1. 建立新的 RDS for Oracle 資料庫執行個體，將其與選項群組建立關聯，或修改 RDS for Oracle 資料庫執行個體，使其與選項群組建立關聯。

   如需建立資料庫執行個體的相關資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。

   如需修改 RDS for Oracle 資料庫執行個體的相關資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

# 在 Amazon RDS for Oracle 和 Amazon S3 儲存貯體之間傳輸檔案
<a name="oracle-s3-integration.using"></a>

如要在 RDS for Oracle 資料庫執行個體和 Amazon S3 儲存貯體之間傳輸檔案，您可以使用 Amazon RDS 套件 `rdsadmin_s3_tasks`。您可在上傳檔案時裡用 GZIP 壓縮文件，並在下載時對其進行解壓縮。

**Topics**
+ [

## 檔案傳輸的需求和限制
](#oracle-s3-integration.using.reqs)
+ [

## 將檔案從 RDS for Oracle 資料庫執行個體上傳至 Amazon S3 儲存貯體
](#oracle-s3-integration.using.upload)
+ [

## 將檔案從 Amazon S3 儲存貯體下載至 Oracle 資料庫執行個體
](#oracle-s3-integration.using.download)
+ [

## 監控檔案傳輸狀態
](#oracle-s3-integration.using.task-status)

## 檔案傳輸的需求和限制
<a name="oracle-s3-integration.using.reqs"></a>

在資料庫執行個體與 Amazon S3 儲存貯體之間傳輸檔案之前，請注意下列事項：
+ `rdsadmin_s3_tasks` 套件會傳輸位於單一目錄中的檔案。您無法在傳輸中包含子目錄。
+ Amazon S3 儲存貯體中的物件大小上限為 5 TB。
+ 由 `rdsadmin_s3_tasks` 建立的任務會以非同步方式執行。
+ 您可以從 Data Pump 目錄 (例如 `DATA_PUMP_DIR`) 或任何使用者建立的目錄上傳檔案。您無法從 Oracle 背景程序使用的目錄 (例如 `adump`、`bdump` 或 `trace` 目錄) 上傳檔案。
+ 下載限制為每次 `download_from_s3` 程序呼叫 2000 個檔案。如果您需要從 Amazon S3 下載 2000 個以上的檔案，請將您的下載分割為不同的動作，每次程序呼叫不超過 2000 個檔案。
+ 如果您的下載資料夾中存在檔案，且您嘗試下載具有相同名稱的檔案，則 `download_from_s3` 會跳過下載。若要從下載目錄中移除檔案，請使用 PL/SQL 程序 [UTL\$1FILE.FREMOVE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_FILE.html#GUID-09B09C2A-2C21-4F70-BF04-D0EEA7B59CAF)。

## 將檔案從 RDS for Oracle 資料庫執行個體上傳至 Amazon S3 儲存貯體
<a name="oracle-s3-integration.using.upload"></a>

如要從資料庫執行個體上傳檔案至 Amazon S3 儲存貯體，請使用程序 `rdsadmin.rdsadmin_s3_tasks.upload_to_s3`。例如，您可上傳 Oracle Recovery Manager (RMAN) 備份檔案或 Oracle Data Pump 檔案。如需使用物件的詳細資訊，請參閱《[Amazon Simple Storage Service 使用者指南](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingObjects.html)》。如需 RMAN 備份的詳細資訊，請參閱[執行 Oracle 資料庫執行個體的一般 RMAN 任務](Appendix.Oracle.CommonDBATasks.RMAN.md)。

`rdsadmin.rdsadmin_s3_tasks.upload_to_s3` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_bucket_name`  |  VARCHAR2  |  –  |  必要  |  上傳檔案目的地的 Amazon S3 儲存貯體名稱。  | 
|  `p_directory_name`  |  VARCHAR2  |  –  |  必要  |  上傳檔案來源的 Oracle 目錄物件名稱。目錄可為 Data Pump 目錄任何由使用者定義的目錄物件，例如 `DATA_PUMP_DIR`。您無法從背景程序使用的目錄上傳檔案，例如 `adump`、`bdump` 和 `trace`。  您只能由指定目錄上傳檔案。您不能由指定目錄之中的子目錄上傳檔案。   | 
|  `p_s3_prefix`  |  VARCHAR2  |  –  |  必要  |  上傳檔案的 Amazon S3 檔案名稱字首。空白字首會將所有檔案上傳至指定 Amazon S3 儲存貯體的頂層，不會在檔案名稱新增字首。 例如若字首為 `folder_1/oradb`，檔案會上傳至 `folder_1`。在這種情況下，`oradb` 字首會新增至各個檔案。  | 
|  `p_prefix`  |  VARCHAR2  |  –  |  必要  |  檔案名稱必須與其相符才能上傳的檔案名稱字首。空白字首會將上傳指定目錄之中的檔案。  | 
|  `p_compression_level`  |  NUMBER  |  `0`   |  選擇性  |  GZIP 壓縮層級。有效值範圍從 `0` 到 `9`： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/oracle-s3-integration.using.html)  | 
|  `p_bucket_owner_full_control`  |  VARCHAR2  |  –  |  選擇性  |  儲存貯體的存取控制設定。唯一有效值為 null 或 `FULL_CONTROL`。僅當您將檔案從一個帳戶 (帳戶 A) 上傳至另一個帳戶 (帳戶 B) 所擁有的儲存貯體，且帳戶 B 需要完全控制這些檔案時，才需要此設定。  | 

`rdsadmin.rdsadmin_s3_tasks.upload_to_s3` 程序的傳回值是一個任務 ID。

下列範例會將 `DATA_PUMP_DIR` 目錄中的所有檔案上傳至名為 *amzn-s3-demo-bucket* 的 Amazon S3 儲存貯體。檔案未壓縮。

```
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
      p_bucket_name    =>  'amzn-s3-demo-bucket',
      p_prefix         =>  '', 
      p_s3_prefix      =>  '', 
      p_directory_name =>  'DATA_PUMP_DIR') 
   AS TASK_ID FROM DUAL;
```

以下範例將 `db` 目錄中所有字首為 `DATA_PUMP_DIR` 的檔案上傳至名為 `amzn-s3-demo-bucket` 的 Amazon S3 儲存貯體。Amazon RDS 對檔案套用最高層級的 GZIP 壓縮。

```
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
      p_bucket_name       =>  'amzn-s3-demo-bucket', 
      p_prefix            =>  'db', 
      p_s3_prefix         =>  '', 
      p_directory_name    =>  'DATA_PUMP_DIR',
      p_compression_level =>  9) 
   AS TASK_ID FROM DUAL;
```

下列範例將 `DATA_PUMP_DIR` 目錄的所有檔案，上傳至名為`amzn-s3-demo-bucket` 的 Amazon S3 儲存貯體。檔案上傳至 `dbfiles` 資料夾。於此範例中，GZIP 壓縮層級為 *1*，此為最快速的壓縮層級。

```
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
      p_bucket_name       =>  'amzn-s3-demo-bucket', 
      p_prefix            =>  '', 
      p_s3_prefix         =>  'dbfiles/', 
      p_directory_name    =>  'DATA_PUMP_DIR',
      p_compression_level =>  1) 
   AS TASK_ID FROM DUAL;
```

以下範例將 `DATA_PUMP_DIR` 目錄的所有檔案，上傳至名為`amzn-s3-demo-bucket` 的 Amazon S3 儲存貯體。檔案上傳至 `dbfiles` 資料夾，而 `ora` 則新增至每個檔案名稱的開頭。未套用任何壓縮。

```
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
      p_bucket_name    =>  'amzn-s3-demo-bucket', 
      p_prefix         =>  '', 
      p_s3_prefix      =>  'dbfiles/ora', 
      p_directory_name =>  'DATA_PUMP_DIR') 
   AS TASK_ID FROM DUAL;
```

下列範例假定該命令執行於帳戶 A 中，但帳戶 B 需要儲存貯體內容的完全控制。命令 `rdsadmin_s3_tasks.upload_to_s3` 會將 `DATA_PUMP_DIR` 目錄中的所有檔案傳輸至名為 `s3bucketOwnedByAccountB` 的儲存貯體。存取控制設定為 `FULL_CONTROL`，則帳戶 B 可存取儲存貯體中的檔案。GZIP 壓縮層級為 *6*，此會平衡速度和檔案大小。

```
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
      p_bucket_name               =>  's3bucketOwnedByAccountB', 
      p_prefix                    =>  '', 
      p_s3_prefix                 =>  '', 
      p_directory_name            =>  'DATA_PUMP_DIR',
      p_bucket_owner_full_control =>  'FULL_CONTROL',
      p_compression_level         =>  6) 
   AS TASK_ID FROM DUAL;
```

在各項範例中，`SELECT` 陳述式以 `VARCHAR2` 資料類型傳回任務 ID。

您可以透過顯示任務的輸出檔案來檢視結果。

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));
```

以程序傳回的任務 ID 取代 *`task-id`*。

**注意**  
任務是以非同步方式執行。

## 將檔案從 Amazon S3 儲存貯體下載至 Oracle 資料庫執行個體
<a name="oracle-s3-integration.using.download"></a>

若要從 Amazon S3 儲存貯體下載檔案至 Oracle 資料庫執行個體，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_s3_tasks.download_from_s3`。

`download_from_s3` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_bucket_name`  |  VARCHAR2  |  –  |  必要  |  下載檔案來源的 Amazon S3 儲存貯體名稱。  | 
|  `p_directory_name`  |  VARCHAR2  |  –  |  必要  |  下載檔案目的地的 Oracle 目錄物件名稱。目錄可為 Data Pump 目錄任何由使用者定義的目錄物件，例如 `DATA_PUMP_DIR`。  | 
|  `p_error_on_zero_downloads`  |  VARCHAR2  | FALSE |  選用  |  此旗標可決定當 Amazon S3 儲存貯體中沒有物件符合字首時，任務是否會引發錯誤。如果此參數未設定或設為 FALSE (預設值)，任務會列印訊息，指出找不到物件，但不會引發例外狀況或失敗。如果此參數為 TRUE，則任務會引發例外狀況並失敗。 可能無法進行比對測試的字首規格範例是字首中的空格 (如 `' import/test9.log'` 中所示) 和大小寫不符 (如 `test9.log` 和 `test9.LOG` 中所示)。  | 
|  `p_s3_prefix`  |  VARCHAR2  |  –  |  必要  |  檔案名稱必須與其相符才能下載的檔案名稱字首。空白字首會在指定的 Amazon S3 儲存貯體中下載所有第一層檔案，但不是在該儲存貯體資料夾中的檔案。 程序僅會由符合字首的第一層資料夾下載 Amazon S3 物件。符合指定字串的巢狀目錄結構不會下載。 例如假設 Amazon S3 儲存貯體具有資料夾結構 `folder_1/folder_2/folder_3`。您指定 `'folder_1/folder_2/'` 字首。在這種情況下，只會下載 `folder_2` 之中的檔案，不會下載 `folder_1` 或 `folder_3` 的檔案。 如果您反而指定 `'folder_1/folder_2'` 字首，則會下載 `folder_1` 中符合 `'folder_2'` 字首的所有檔案，且不會下載 `folder_2` 中的任何檔案。  | 
|  `p_decompression_format`  |  VARCHAR2  |  –  |  選用  |  解壓縮格式。有效值為 `NONE` 適用於未解壓縮，而 `GZIP` 適用於解壓縮。  | 

`rdsadmin.rdsadmin_s3_tasks.download_from_s3` 程序的傳回值是一個任務 ID。

以下範例將名為 `amzn-s3-demo-bucket` 的 Amazon S3 儲存貯體中所有的檔案下載至 `DATA_PUMP_DIR` 目錄。這些檔案未壓縮，因此無須套用解壓縮。

```
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
      p_bucket_name    =>  'amzn-s3-demo-bucket',
      p_directory_name =>  'DATA_PUMP_DIR') 
   AS TASK_ID FROM DUAL;
```

以下範例將名為 `db` 的 Amazon S3 儲存貯體之中字首為 `amzn-s3-demo-bucket` 的所有檔案下載至 `DATA_PUMP_DIR` 目錄。這些檔案以 GZIP 進行壓縮，因此可套用解壓縮。參數 `p_error_on_zero_downloads` 會開啟字首錯誤檢查，因此，如果字首與儲存貯體中的任何檔案不符，任務就會引發例外狀況並失敗。

```
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
      p_bucket_name               =>  'amzn-s3-demo-bucket', 
      p_s3_prefix                 =>  'db', 
      p_directory_name            =>  'DATA_PUMP_DIR',
      p_decompression_format      =>  'GZIP',
      p_error_on_zero_downloads   =>  'TRUE') 
   AS TASK_ID FROM DUAL;
```

以下範例將名為 `myfolder/` 的 Amazon S3 儲存貯體之中資料夾 `amzn-s3-demo-bucket` 的所有檔案下載至 `DATA_PUMP_DIR` 目錄。使用 `p_s3_prefix` 參數，指定 Amazon S3 資料夾。上傳的檔案使用 GZIP 進行壓縮，但於下載過程中不會解壓縮。

```
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
      p_bucket_name          =>  'amzn-s3-demo-bucket', 
      p_s3_prefix            =>  'myfolder/', 
      p_directory_name       =>  'DATA_PUMP_DIR',
      p_decompression_format =>  'NONE')
   AS TASK_ID FROM DUAL;
```

以下範例將名為 `amzn-s3-demo-bucket` 的 Amazon S3 儲存貯體中的檔案 `mydumpfile.dmp` 下載至 `DATA_PUMP_DIR` 目錄。未套用任何解壓縮。

```
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
      p_bucket_name    =>  'amzn-s3-demo-bucket', 
      p_s3_prefix      =>  'mydumpfile.dmp', 
      p_directory_name =>  'DATA_PUMP_DIR') 
   AS TASK_ID FROM DUAL;
```

在各項範例中，`SELECT` 陳述式以 `VARCHAR2` 資料類型傳回任務 ID。

您可以透過顯示任務的輸出檔案來檢視結果。

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));
```

以程序傳回的任務 ID 取代 *`task-id`*。

**注意**  
任務是以非同步方式執行。  
您可使用 `UTL_FILE.FREMOVE` Oracle 程序由目錄移除檔案。如需詳細資訊，請參閱 Oracle 文件中的 [FREMOVE 程序](https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS70924)。

## 監控檔案傳輸狀態
<a name="oracle-s3-integration.using.task-status"></a>

檔案傳輸作業會在開始及完成時發佈 Amazon RDS 事件。事件訊息包含檔案傳輸的任務 ID。如需檢視事件相關資訊，請參閱[檢視 Amazon RDS 事件](USER_ListEvents.md)。

您可在 bdump 檔案之中，檢視進行中作業的狀態。bdump 檔案位在 `/rdsdbdata/log/trace` 目錄：每個 bdump 檔案的名稱格式如下。

```
dbtask-task-id.log
```

將 `task-id` 替換為您要監控作業的 ID。

**注意**  
任務是以非同步方式執行。

您可以使用 `rdsadmin.rds_file_util.read_text_file` 預存程序檢視 bdump 檔案內容。例如以下查詢會傳回 `dbtask-1234567890123-1234.log` bdump 檔案的內容。

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1234567890123-1234.log'));
```

下列範例顯示傳輸失敗的日誌。

```
TASK_ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1234567890123-1234


TEXT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2023-04-17 18:21:33.993 UTC [INFO ] File #1: Uploading the file /rdsdbdata/datapump/A123B4CDEF567890G1234567890H1234/sample.dmp to Amazon S3 with bucket name amzn-s3-demo-bucket and key sample.dmp.
2023-04-17 18:21:34.188 UTC [ERROR] RDS doesn't have permission to write to Amazon S3 bucket name amzn-s3-demo-bucket and key sample.dmp.
2023-04-17 18:21:34.189 UTC [INFO ] The task failed.
```

## 針對 Amazon S3 整合進行疑難排解
<a name="oracle-s3-integration.troubleshooting"></a>

如需疑難排解秘訣，請參閱 AWS re:Post 文章[如何疑難排解將 Amazon RDS for Oracle 與 Amazon S3 整合時發生的問題？](https://repost.aws/en/knowledge-center/rds-oracle-s3-integration)。

# 移除 Amazon S3 整合選項
<a name="oracle-s3-integration.removing"></a>

您可由資料庫執行個體移除 Amazon S3 整合選項。

若要從資料庫執行個體中移除 Amazon S3 整合選項，請執行下列其中一個動作：
+ 若要從多個資料庫執行個體中移除 Amazon S3 整合選項，請從資料庫執行個體所屬的選項群組中移除 `S3_INTEGRATION` 選項。此變更會影響使用選項群組的所有資料庫執行個體。如需更多詳細資訊，請參閱 [從選項群組移除選項](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)。

   
+ 如要從單一資料庫執行個體移除 Amazon S3 整合，請修改執行個體，並指定不含 `S3_INTEGRATION` 選項的不同選項群組。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

# Oracle Application Express (APEX)
<a name="Appendix.Oracle.Options.APEX"></a>

Amazon RDS 會使用 `APEX` 和 `APEX-DEV` 選項，藉此支援 Oracle Application Express (APEX)。您可以將 Oracle APEX 部署成適用於 Web 應用程式的執行階段環境或完整開發環境。Oracle APEX 可讓您完全在 Web 瀏覽器內建置應用程式。如需詳細資訊，請參閱 Oracle 文件中的 [Oracle Application Express](https://apex.oracle.com/)。

**Topics**
+ [

## Oracle APEX 元件
](#Appendix.Oracle.Options.APEX.components)
+ [

# 要求與限制
](Appendix.Oracle.Options.APEX.Requirements.md)
+ [

# 設定 Oracle APEX 和 Oracle Rest Data Services (ORDS)
](Appendix.Oracle.Options.APEX.settingUp.md)
+ [

# 設定 Oracle Rest Data Services (ORDS)
](Appendix.Oracle.Options.APEX.ORDSConf.md)
+ [

# 升級和移除 Oracle APEX
](Appendix.Oracle.Options.APEX.UpgradeandRemove.md)

## Oracle APEX 元件
<a name="Appendix.Oracle.Options.APEX.components"></a>

Oracle APEX 包含下列主要元件：
+ *儲存庫*，存放 Oracle APEX 應用程式和元件的中繼資料。儲存庫包含安裝於 Amazon RDS 資料庫執行個體中的資料表、索引及其他物件。
+ *接聽程式*，管理與 Oracle APEX 用戶端之間的 HTTP 通訊。接聽程式位於個別主機上，例如 Amazon EC2 執行個體、公司的內部部署伺服器或您的桌上型電腦。接聽程式接受 web 瀏覽器傳入的連線、將連線轉送至 Amazon RDS 資料庫執行個體來處理，然後將結果從儲存庫傳回給瀏覽器。

  RDS for Oracle 支援下列接聽程式類型：
  + 若為 Oracle APEX 5.0 版和更新版本，請使用 Oracle REST Data Services (ORDS) 版本 19.1 和更新版本。我們建議您使用最新支援的 Oracle APEX 和 ORDS 版本。本文件描述舊版僅供回溯相容性之用。
  + 若為 Oracle APEX 4.1.1 版，您可使用 Oracle APEX Listener 1.1.4 版。
  + 您可以使用 Oracle HTTP Server 和 `mod_plsql` 接聽程式。
**注意**  
Amazon RDS 不支援有內嵌 PL/SQL 閘道的 Oracle XML DB HTTP 伺服器做為 Oracle APEX 的接聽程式。一般而言，對於網際網路上執行的應用程式，Oracle 不建議使用內嵌 PL/SQL 閘道。

  如需有關這些接聽程式類型的詳細資訊，請參閱 Oracle 文件中的[關於選擇 Web 接聽程式](https://docs.oracle.com/database/apex-5.1/HTMIG/choosing-web-listener.htm#HTMIG29321)。

當您將 `APEX` 和 `APEX-DEV` 選項新增至 RDS for Oracle 資料庫執行個體時，Amazon RDS 僅會安裝 Oracle APEX 儲存庫。在個別主機上安裝您的接聽程式。

# 要求與限制
<a name="Appendix.Oracle.Options.APEX.Requirements"></a>

下列主題列出 Oracle APEX 和 ORDS 的要求和限制。

## Oracle APEX 版本要求
<a name="Appendix.Oracle.Options.APEX.versions"></a>

`APEX` 選項將為您的資料庫執行個體使用資料庫執行個體類別上的儲存空間。下列為 Oracle APEX 支援的版本與約略儲存空間需求：


****  

| Oracle APEX 版本 | 儲存需求 | 支援的 Oracle Database 版本 | 備註 | 
| --- | --- | --- | --- | 
|  Oracle APEX 24.2.v1 版  |  114 MiB  |  全部  |  此版本包含修補程式 37885097：PSE BUNDLE FOR APEX 24.2 (PSES ON TOP OF 24.2.0), PATCH\$1VERSION 4。  | 
|  Oracle APEX 24.1.v1 版  |  112 MiB  |  全部  |  此版本包含修補程式 36695709：PSE BUNDLE FOR APEX 24.1 (PSES ON TOP OF 24.1.0), PATCH\$1VERSION 3。如果您需要在 EC2 執行個體上安裝完全相同的 APEX 映像版本，請下載修補程式 37544819：24.1.3 PSE BUNDLE FOR APEX 24.1 (PSES ON TOP OF 24.1.0)。  | 
|  Oracle APEX 23.2.v1 版  |  110 MiB  |  全部  |  此版本包含修補程式 35895964：PSE BUNDLE FOR APEX 23.2 (PSES ON TOP OF 23.2.0), PATCH\$1VERSION 6。如果您需要在 EC2 執行個體上安裝完全相同的 APEX 映像版本，請下載修補程式 37593125：23.2.6 PSE BUNDLE FOR APEX 23.2 (PSES ON TOP OF 23.2.0)。  | 
|  Oracle APEX 23.1.v1 版  |  106 MiB  |  全部  |  此版本包含修補程式 35283657：PSE BUNDLE FOR APEX 23.1 (PSES ON TOP OF 23.1.0), PATCH\$1VERSION 2。  | 
|  Oracle APEX 22.2.v1 版  |  106 MiB  |  全部  |  此版本包含修補程式 34628174：PSE BUNDLE FOR APEX 22.2 (PSES ON TOP OF 22.2.0), PATCH\$1VERSION 4。  | 
|  Oracle APEX 22.1.v1 版  |  124 MiB  |  全部  |  此版本包含修補程式 34020981：PSE BUNDLE FOR APEX 22.1 (PSES ON TOP OF 22.1.0), PATCH\$1VERSION 6。  | 
|  Oracle APEX 21.2.v1 版  |  125 MiB  |  全部  |  此版本包含修補程式 33420059：PSE BUNDLE FOR APEX 21.2 (PSES ON TOP OF 21.2.0), PATCH\$1VERSION 8。  | 
|  Oracle APEX 21.1.v1 版  |  125 MiB  |  全部  |  此版本包含修補程式 32598392：PSE BUNDLE FOR APEX 21.1，PATCH\$1VERSION 3。  | 
|  Oracle APEX 版本 20.2.v1  |  148 MiB  |  除了 Oracle Database 21c 之外的所有版本  |  此版本包含修補程式 32006852：PSE BUNDLE FOR APEX 20.2，PATCH\$1VERSION 2020.11.12。您可以執行下列查詢來查看修補程編號和日期： <pre>SELECT PATCH_VERSION, PATCH_NUMBER <br />FROM   APEX_PATCHES;</pre>  | 
|  Oracle APEX 20.1.v1 版  |  173 MiB  |  除了 Oracle Database 21c 之外的所有版本  |  此版本包含修補程式 30990551：PSE BUNDLE FOR APEX 20.1，PATCH\$1VERSION 2020.07.15。  | 
|  Oracle APEX 19.2.v1 版  |  149 MiB  |  除了 Oracle Database 21c 之外的所有版本  |  | 
|  Oracle APEX 19.1.v1 版  |  148 MiB  |  除了 Oracle Database 21c 之外的所有版本  |  | 

如需可下載的 Oracle APEX .zip 檔案，請參閱 Oracle 網站上的 [Oracle APEX 發行前封存](https://www.oracle.com/tools/downloads/apex-all-archives-downloads.html)。

## Oracle APEX 和 ORDS 先決條件
<a name="Appendix.Oracle.Options.APEX.PreReqs"></a>

請注意下列使用 Oracle APEX 和 ORDS 的先決條件：
+ 您的系統必須使用 Java 執行階段環境 (JRE)。
+ 您的 Oracle 用戶端安裝必須包括下列項目：
  + 適用於系統管理任務的 SQL\$1Plus 或 SQL Developer
  + 用於設定 RDS for Oracle 資料庫執行個體連線的 Oracle Net Services

## Oracle APEX 限制
<a name="Appendix.Oracle.Options.APEX.limitations"></a>

您無法修改由 Amazon RDS 管理的 `APEX_version` 使用者帳戶。因此，您無法套用資料庫設定檔或對此使用者強制執行密碼規則。的設定檔和密碼設定由 Oracle `APEX_version`預先定義 AWS ，旨在符合 Amazon RDS 的安全要求。

# 設定 Oracle APEX 和 Oracle Rest Data Services (ORDS)
<a name="Appendix.Oracle.Options.APEX.settingUp"></a>

下列主題列出設定 Oracle APEX 和 ORDS 所需的步驟

**Topics**
+ [

## 將 APEX 和 APEX-DEV 選項新增至您的資料庫執行個體
](#Appendix.Oracle.Options.APEX.Add)
+ [

## 解除鎖定資料庫執行個體上的公有使用者帳戶
](#Appendix.Oracle.Options.APEX.PublicUser)
+ [

## 設定適用於 Oracle APEX 的 RESTful 服務
](#Appendix.Oracle.Options.APEX.ConfigureRESTful)
+ [

## 準備在個別主機上安裝 ORDS
](#Appendix.Oracle.Options.APEX.ORDS.ords-setup)
+ [

## 設定 Oracle APEX Listener
](#Appendix.Oracle.Options.APEX.Listener)

## 將 APEX 和 APEX-DEV 選項新增至您的資料庫執行個體
<a name="Appendix.Oracle.Options.APEX.Add"></a>

若要將 `APEX` 和 `APEX-DEV` 選項新增至 RDS for Oracle 資料庫執行個體，請執行下列操作：

1. 建立新的選項群組，或是複製或修改現有選項群組。

1. 將 `APEX` 和 `APEX-DEV` 選項新增至選項群組。

1. 將選項群組與您的資料庫執行個體建立關聯。

當您新增 `APEX` 和 `APEX-DEV` 選項時，當資料庫執行個體自動重新啟動時會發生短暫的中斷。

**注意**  
`APEX_MAIL` 在已安裝 `APEX` 選項時可用。`APEX_MAIL` 套件的執行權限會授予 `PUBLIC`，因此您不需要有 APEX 管理帳戶就能使用它。

**將 APEX 和 APEX-DEV 選項新增至資料庫執行個體**

1. 判斷要使用的選項群組。您可以建立新的選項群組或使用現有的選項群組。如果您要使用現有的選項群組，請跳到下一個步驟。否則請使用下列設定來建立自訂資料庫選項群組：

   1. 針對 **Engine (引擎)**，選擇您想要使用的 Oracle 版本。所有版本都支援 `APEX` 和 `APEX-DEV` 選項。

   1. 針對 **Major engine version (主要引擎版本)**，請選擇您資料庫執行個體的版本。

   如需更多詳細資訊，請參閱 [建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將選項新增至選項群組。如果您只想部署 Oracle APEX 執行階段環境，則只需要新增 `APEX` 選項。若要部署完整開發環境，請同時新增 `APEX` 和 `APEX-DEV` 選項。

   對於**版本**，選擇您想要使用的 Oracle APEX 版本。
**重要**  
如果您將 `APEX` 或 `APEX-DEV` 選項新增至已連接到一個或多個資料庫執行個體的現有選項群組，則會發生短暫的停機。在此停機期間，所有資料庫執行個體都會重新啟動。

   如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

1. 將選項群組套用至新的或現有的資料庫執行個體：
   + 針對新的資料庫執行個體，您會在啟動執行個體時套用選項群組。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
   + 針對現有的資料庫執行個體，您可以透過修改執行個體並附加新的選項群組來套用選項群組。當您將 `APEX` 或 `APEX-DEV` 選項新增至現有的資料庫執行個體時，在資料庫執行個體自動重新啟動時會發生短暫的中斷。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## 解除鎖定資料庫執行個體上的公有使用者帳戶
<a name="Appendix.Oracle.Options.APEX.PublicUser"></a>

在您的資料庫執行個體上安裝 `APEX` 或 `APEX-DEV` 選項之後，請務必執行下列操作：

1. 變更 `APEX_PUBLIC_USER` 帳戶的密碼。

1. 解除鎖定帳戶。

您可以使用 Oracle SQL\$1Plus 命令列公用程式來這麼做。以主要使用者身分連線至資料庫執行個體，然後發出以下命令。將 `new_password` 改為您選擇的密碼。

```
1. ALTER USER APEX_PUBLIC_USER IDENTIFIED BY new_password;
2. ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK;
```

## 設定適用於 Oracle APEX 的 RESTful 服務
<a name="Appendix.Oracle.Options.APEX.ConfigureRESTful"></a>

若要在 Oracle APEX 中設定 RESTful 服務 (Oracle APEX 4.1.1.V1 不需要)，請使用 SQL\$1Plus 以主要使用者身分連線至資料庫執行個體。完成此作業後，請執行 `rdsadmin.rdsadmin_run_apex_rest_config` 預存程序。執行預存程序時，您需要提供下列使用者的密碼：
+ `APEX_LISTENER`
+ `APEX_REST_PUBLIC_USER`

此預存程序會執行 `apex_rest_config.sql` 指令碼，而為這些使用者建立新的資料庫帳戶。

**注意**  
若為 Oracle APEX 版本 4.1.1.v1，則不需要設定。僅針對此 Oracle APEX 版本，您不需要執行此預存程序。

下列命令會執行此預存程序。

```
1. EXEC rdsadmin.rdsadmin_run_apex_rest_config('apex_listener_password', 'apex_rest_public_user_password');
```

## 準備在個別主機上安裝 ORDS
<a name="Appendix.Oracle.Options.APEX.ORDS.ords-setup"></a>

將 ORDS 安裝在另一部主機上，例如 Amazon EC2 執行個體、公司的內部部署伺服器或您的桌上型電腦。本節中的範例假設您的主機執行 Linux 且名為 `myapexhost.example.com`。

在安裝 ORDS 之前，您必須先建立無特殊權限的作業系統使用者，然後下載並解壓縮 Oracle APEX 安裝檔案。

**準備進行 ORDS 安裝**

1. 以 `myapexhost.example.com` 身分登入 `root`。

1. 建立無特殊權限的作業系統使用者來負責接聽程式安裝。以下命令建立一個名為 *apexuser* 的新使用者。

   ```
   useradd -d /home/apexuser apexuser
   ```

   以下命令指派密碼給新使用者。

   ```
   passwd apexuser;
   ```

1. 以 `myapexhost.example.com` 身分登入 `apexuser`，然後從 Oracle 下載 Oracle APEX 安裝檔案至您的 `/home/apexuser` 目錄：
   + [http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html](http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html) 
   + [Oracle Application Express 發行前封存](http://www.oracle.com/technetwork/developer-tools/apex/downloads/all-archives-099381.html) 

1. 將檔案解壓縮在 `/home/apexuser` 目錄中。

   ```
   unzip apex_version.zip
   ```

   解壓縮檔案之後，`apex` 目錄中會有一個 `/home/apexuser` 目錄。

1. 在您仍以 `myapexhost.example.com` 身分登入 `apexuser` 時，從 Oracle 下載 Oracle REST Data Services 檔案至您的 `/home/apexuser` 目錄：[http://www.oracle.com/technetwork/developer-tools/apex-listener/downloads/index.html](http://www.oracle.com/technetwork/developer-tools/apex-listener/downloads/index.html)。

## 設定 Oracle APEX Listener
<a name="Appendix.Oracle.Options.APEX.Listener"></a>

**注意**  
Oracle APEX Listener 已淘汰。

Amazon RDS for Oracle 繼續支援 Oracle APEX 4.1.1 版和 Oracle APEX Listener 1.1.4 版。我們建議您使用最新支援的 Oracle APEX 和 ORDS 版本。

將 Oracle APEX Listener 安裝在另一部主機上，例如 Amazon EC2 執行個體、公司的現場部署伺服器或您的桌上型電腦。我們假設主機名稱為 `myapexhost.example.com`，且主機執行 Linux。

### 準備安裝 Oracle APEX Listener
<a name="Appendix.Oracle.Options.APEX.Listener.preparing"></a>

在安裝 Oracle APEX Listener 之前，您必須先建立無特殊權限的作業系統使用者，然後下載並解壓縮 Oracle APEX 安裝檔案。

**準備安裝 Oracle APEX Listener**

1. 以 `myapexhost.example.com` 身分登入 `root`。

1. 建立無特殊權限的作業系統使用者來負責接聽程式安裝。以下命令建立一個名為 *apexuser* 的新使用者。

   ```
   useradd -d /home/apexuser apexuser
   ```

   以下命令指派密碼給新使用者。

   ```
   passwd apexuser;
   ```

1. 以 `myapexhost.example.com` 身分登入 `apexuser`，然後從 Oracle 下載 Oracle APEX 安裝檔案至您的 `/home/apexuser` 目錄：
   + [http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html](http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html) 
   + [Oracle Application Express 發行前封存](http://www.oracle.com/technetwork/developer-tools/apex/downloads/all-archives-099381.html) 

1. 將檔案解壓縮在 `/home/apexuser` 目錄中。

   ```
   unzip apex_<version>.zip                
   ```

   解壓縮檔案之後，`apex` 目錄中會有一個 `/home/apexuser` 目錄。

1. 在您仍以 `myapexhost.example.com` 身分登入 `apexuser` 時，從 Oracle 下載 Oracle APEX Listener 檔案至您的 `/home/apexuser` 目錄。

#### 安裝與設定 Oracle APEX Listener
<a name="Appendix.Oracle.Options.APEX.Listener.installing"></a>

在可以使用 Oracle APEX 之前，您需先下載 `apex.war` 檔案、使用 Java 安裝 Oracle APEX Listener，然後啟動接聽程式。

**安裝與設定 Oracle APEX Listener**

1. 根據 Oracle APEX Listener 建立新目錄，並開啟接聽程式檔案。

   執行下列程式碼：

   ```
   mkdir /home/apexuser/apexlistener
   cd /home/apexuser/apexlistener 
   unzip ../apex_listener.version.zip
   ```

1. 執行下列程式碼。

   ```
   java -Dapex.home=./apex -Dapex.images=/home/apexuser/apex/images -Dapex.erase -jar ./apex.war
   ```

1. 輸入資訊讓程式提示下列：
   + APEX Listener Administrator 使用者名稱。預設值為 *adminlistener*。
   + APEX Listener Administrator 的密碼。
   + APEX Listener Manager 使用者名稱。預設值為 *managerlistener*。
   + APEX Listener Administrator 的密碼。

   程式會印出您完成組態所需的 URL，如下所示。

   ```
   INFO: Please complete configuration at: http://localhost:8080/apex/listenerConfigure
   Database is not yet configured
   ```

1. 讓 Oracle APEX Listener 保持執行，使得您可以使用 Oracle Application Express。當您完成此設定程序時，就可以換成在背景中執行接聽程式。

1. 在 web 瀏覽器中，移至 Oracle APEX Listener 程式所提供的 URL。Oracle Application Express Listener 管理視窗隨即出現。輸入下列資訊：
   + **使用者名稱** – `APEX_PUBLIC_USER`
   + **密碼** – *APEX\$1PUBLIC\$1USER* 的密碼。這是您稍早設定 Oracle APEX 儲存庫時所指定的密碼。如需詳細資訊，請參閱[解除鎖定資料庫執行個體上的公有使用者帳戶](#Appendix.Oracle.Options.APEX.PublicUser)。
   + **連線類型** – 基本 
   + **主機名稱** – Amazon RDS 資料庫執行個體的端點，例如 `mydb.f9rbfa893tft.us-east-1.rds.amazonaws.com`。
   + **連接埠** – 1521
   + **SID** – Amazon RDS 資料庫執行個體上的資料庫名稱，例如 `mydb`。

1. 選擇 **Apply** (套用)。Oracle APEX 管理視窗隨即出現。

1. 設定 Oracle APEX `admin` 使用者的密碼。若要這麼做，請使用 SQL\$1Plus 以主要使用者身分連線至資料庫執行個體，然後執行以下命令。

   ```
   1. EXEC rdsadmin.rdsadmin_util.grant_apex_admin_role;
   2. grant APEX_ADMINISTRATOR_ROLE to master;
   3. @/home/apexuser/apex/apxchpwd.sql
   ```

   將 `master` 改為您的主要使用者名稱。當 `apxchpwd.sql` 指令碼提示您時，請輸入新的 `admin` 密碼。

1. 在瀏覽器中返回 Oracle APEX 管理視窗，然後選擇**管理**。接著選擇 **Application Express Internal Administration (Application Express 內部管理)**。當提示您提供登入資料時，請輸入下列資訊：
   + **使用者名稱** – `admin` 
   + **密碼** – 使用 `apxchpwd.sql` 指令碼所設定的密碼 

   選擇 **Login (登入)**，然後設定 `admin` 使用者的新密碼。

您的接聽程式現在可供使用。

# 設定 Oracle Rest Data Services (ORDS)
<a name="Appendix.Oracle.Options.APEX.ORDSConf"></a>

下列主題列出 ORDS 21 和 22 的組態選項：

**Topics**
+ [

## 安裝並設定 ORDS 21 及更低版本
](#Appendix.Oracle.Options.APEX.ORDS)
+ [

## 安裝並設定 ORDS 22 及更新版本
](#Appendix.Oracle.Options.APEX.ORDS22)

## 安裝並設定 ORDS 21 及更低版本
<a name="Appendix.Oracle.Options.APEX.ORDS"></a>

您現在可以安裝和設定 Oracle Rest Data Services (ORDS)，以便與 Oracle APEX 搭配使用。對於 Oracle APEX 5.0 版及更新版本，請使用 ORDS 19.1 版到 21 版。若要了解如何安裝 ORDS 22 及更新版本，請參閱 [安裝並設定 ORDS 22 及更新版本](#Appendix.Oracle.Options.APEX.ORDS22)。

將接聽程式安裝在另一部主機上，例如 Amazon EC2 執行個體、公司的現場部署伺服器或您的桌上型電腦。對於本節中的範例，我們假設您的主機名稱是 `myapexhost.example.com`，而且主機執行 Linux。

**安裝並設定 ORDS 21 及更低版本以搭配 Oracle APEX 使用**

1. 前往 [Oracle REST Data Services](https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads-212.html)，並檢查讀我檔案。請確認您已安裝必要版本的 Java。

1. 為您的 ORDS 安裝建立新的目錄。

   ```
   mkdir /home/apexuser/ORDS
   cd /home/apexuser/ORDS
   ```

1. 從 [Oracle REST資料服務](https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads-212.html)下載檔案 `ords.version.number.zip`。

1. 將檔案解壓縮在 `/home/apexuser/ORDS` 目錄中。

1. 如果要在多重租用資料庫中安裝 ORDS，請將下行新增至 `/home/apexuser/ORDS/params/ords_params.properties` 檔案：

   ```
   pdb.disable.lockdown=false
   ```

1. 授與主要使用者安裝 ORDS 所需的權限。

   安裝 Oracle APEX 的選項之後，請為主要使用者提供安裝 ORDS 結構描述所需的權限。您可以連線至資料庫並執行下列命令來完成此動作。以您的主要使用者的大寫名稱取代 `MASTER_USER`。
**重要**  
輸入使用者名稱時，除非您使用區分大小寫的識別符來建立使用者，否則請使用大寫。例如，如果您執行 `CREATE USER myuser` 或 `CREATE USER MYUSER`，資料字典會存放 `MYUSER`。不過，如果您在 `CREATE USER "MyUser"` 中使用雙引號，資料字典則會存放 `MyUser`。如需更多詳細資訊，請參閱 [將 SELECT 或 EXECUTE 權限授予 SYS 物件](Appendix.Oracle.CommonDBATasks.TransferPrivileges.md)。

   ```
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_ROLE_PRIVS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TAB_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_CONS_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_CONSTRAINTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_OBJECTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_PROCEDURES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_TAB_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_TABLES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_VIEWS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('WPIUTL', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SESSION', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_UTILITY', 'MASTER_USER', 'EXECUTE', true);
   ```
**注意**  
這些命令會套用至 ORDS 19.1 版和更新版本。

1. 使用下載的 ords.war 檔案來安裝 ORDS 結構描述。

   ```
   java -jar ords.war install advanced
   ```

   程式會提示您輸入下列資訊。方括號中是預設值。如需詳細資訊，請參閱 Oracle 文件中的 [Oracle REST Data Services 簡介](https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/20.2/aelig/installing-REST-data-services.html#GUID-6F7B4E61-B730-4E73-80B8-F53299123730)。
   + 輸入要存放組態資料的位置：

     輸入 */home/apexuser/ORDS*。這是 ORDS 組態檔案的位置。
   + 指定要使用的資料庫連線類型。輸入 [1] 基本 [2] TNS [3] 自訂 URL [1] 的數字：

     選擇所需的連線類型。
   + 輸入資料庫伺服器的名稱 [localhost]：*DB\$1instance\$1endpoint*

     選擇預設值或輸入正確值。
   + 輸入資料庫接聽程式連接埠 [1521]：*DB\$1instance\$1port*

     選擇預設值或輸入正確值。
   + 輸入 1 以指定資料庫服務名稱，或輸入 2 以指定資料庫 SID [1]：

     選擇 `2` 以指定資料庫 SID。
   + 資料庫 SID [xe]

     選擇預設值或輸入正確值。
   + 若要驗證/安裝 Oracle REST Data Services 結構描述，請輸入 1，或輸入 2 以略過此步驟 [1]：

     選擇 `1`。此步驟會建立名為 ORDS\$1PUBLIC\$1USER 的 Oracle REST Data Services 代理使用者。
   + 輸入 ORDS\$1PUBLIC\$1USER 的資料庫密碼：

     輸入密碼，然後確認。
   + 需要使用管理員權限登入，以驗證 Oracle REST Data Services 結構描述。

     輸入管理員使用者名稱：*master\$1user*

     輸入 *master\$1user* 的資料庫密碼：*master\$1user\$1password*

     確認密碼：*master\$1user\$1password*
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。
   + 輸入 ORDS\$1METADATA [SYSAUX] 的預設資料表空間。

     輸入 ORDS\$1METADATA [TEMP] 的暫時資料表空間。

     輸入 ORDS\$1PUBLIC\$1USER [USERS] 的預設資料表空間。

     輸入 ORDS\$1PUBLIC\$1USER [TEMP] 的暫時資料表空間。
   + 如果要使用 PL/SQL 閘道請輸入 1，或輸入 2 來略過此步驟。如果您使用 Oracle Application Express 或從 mod\$1plsql 遷移，則必須輸入 1 [1]。

     選擇預設值。
   + 輸入 PL/SQL Gateway 資料庫使用者名稱 [APEX\$1PUBLIC\$1USER]

     選擇預設值。
   + 輸入 APEX\$1PUBLIC\$1USER 的資料庫密碼：

     輸入密碼，然後確認。
   + 輸入 1 以指定 Application Express RESTful Services 資料庫使用者 (APEX\$1LISTENER, APEX\$1REST\$1PUBLIC\$1USER) 的密碼，或輸入 2 以略過此步驟 [1]：

     若為 APEX 4.1.1.V1，請選擇 `2`；至於其他所有 APEX 版本，請選擇 `1`。
   + [APEX 4.1.1.v1 不需要此步驟] APEX\$1LISTENER 的資料庫密碼

     輸入密碼 (如需要)，然後確認。
   + [APEX 4.1.1.v1 不需要此步驟] APEX\$1REST\$1PUBLIC\$1USER 的資料庫密碼

     輸入密碼 (如需要)，然後確認。
   + 輸入數字以選取要啟用的功能：

     輸入 `1` 以啟用所有功能：SQL Developer Web、REST Enabled SQL 和 Database API。
   + 若要以獨立模式啟動，請輸入 1，或輸入 2 以結束 [1]：

     輸入 `1`。
   + 輸入 APEX 靜態資源位置：

     如果您將 APEX 安裝檔案解壓縮至 `/home/apexuser`，請輸入 `/home/apexuser/apex/images`。否則，請輸入 `unzip_path/apex/images`，其中 *unzip\$1path* 是您將檔案解壓縮的目錄所在位置。
   + 若使用 HTTP，請輸入 1；或若使用 HTTPS [1]，則請輸入 2：

     如果您輸入 `1`，請指定 HTTP 連接埠。如果您輸入 `2`，請指定 HTTPS 連接埠和 SSL 主機名稱。HTTPS 選項會提示您指定提供憑證的方式：
     + 輸入 `1` 以使用自我簽署的憑證。
     + 輸入 `2` 以提供您自己的憑證。如果您輸入 `2`，請指定 SSL 憑證的路徑，以及 SSL 憑證私密金鑰的路徑。

1. 設定 APEX `admin` 使用者的密碼。若要這麼做，請使用 SQL\$1Plus 以主要使用者身分連線至資料庫執行個體，然後執行以下命令。

   ```
   1. EXEC rdsadmin.rdsadmin_util.grant_apex_admin_role;
   2. grant APEX_ADMINISTRATOR_ROLE to master;
   3. @/home/apexuser/apex/apxchpwd.sql
   ```

   將 `master` 改為您的主要使用者名稱。當 `apxchpwd.sql` 指令碼提示您時，請輸入新的 `admin` 密碼。

1. 啟動 ORDS 接聽程式。執行下列程式碼。

   ```
   java -jar ords.war
   ```

   第一次啟動 ORDS 時會提示您提供 APEX 靜態資源的位置。此影像資料夾位於 APEX 安裝目錄的 `/apex/images` 目錄中。

1. 在瀏覽器中返回 Oracle APEX 管理視窗，然後選擇**管理**。接著選擇 **Application Express Internal Administration (Application Express 內部管理)**。當提示您提供登入資料時，請輸入下列資訊：
   + **使用者名稱** – `admin` 
   + **密碼** – 使用 `apxchpwd.sql` 指令碼所設定的密碼 

   選擇 **Login (登入)**，然後設定 `admin` 使用者的新密碼。

您的接聽程式現在可供使用。

## 安裝並設定 ORDS 22 及更新版本
<a name="Appendix.Oracle.Options.APEX.ORDS22"></a>

您現在可以安裝和設定 Oracle Rest Data Services (ORDS)，以便與 Oracle APEX 搭配使用。對於本節中的範例，我們假設您的個別主機名稱是 `myapexhost.example.com`，而且主機執行 Linux。ORDS 22 的指示與先前版本的指示不同。

**安裝並設定 ORDS 22 及更新版本以搭配 Oracle APEX 使用**

1. 前往 [Oracle REST Data Services](http://www.oracle.com/technetwork/developer-tools/rest-data-services/downloads/index.html)，並檢查您計畫下載之 ORDS 版本的讀我檔案。請確認您已安裝必要版本的 Java。

1. 為您的 ORDS 安裝建立新的目錄。

   ```
   mkdir /home/apexuser/ORDS
   cd /home/apexuser/ORDS
   ```

1. 從 [Oracle REST Data Services](http://www.oracle.com/technetwork/developer-tools/rest-data-services/downloads/index.html) 下載 `ords.version.number.zip` 或 `ords-latest.zip` 檔案。

1. 將檔案解壓縮在 `/home/apexuser/ORDS` 目錄中。

1. 授與主要使用者安裝 ORDS 所需的權限。

   安裝 `APEX` 選項之後，請為主要使用者提供安裝 ORDS 結構描述所需的權限。您可以登入資料庫並執行下列命令來完成此操作。以您的主要使用者的大寫名稱取代 `MASTER_USER`。
**重要**  
輸入使用者名稱時，除非您使用區分大小寫的識別符來建立使用者，否則請使用大寫。例如，如果您執行 `CREATE USER myuser` 或 `CREATE USER MYUSER`，資料字典會存放 `MYUSER`。不過，如果您在 `CREATE USER "MyUser"` 中使用雙引號，資料字典則會存放 `MyUser`。如需詳細資訊，請參閱[將 SELECT 或 EXECUTE 權限授予 SYS 物件](Appendix.Oracle.CommonDBATasks.TransferPrivileges.md)。

   ```
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_ROLE_PRIVS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TAB_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_CONS_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_CONSTRAINTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_OBJECTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_PROCEDURES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_TAB_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_TABLES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_VIEWS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('WPIUTL', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SESSION', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_UTILITY', 'MASTER_USER', 'EXECUTE', true);
   
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOB', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_ASSERT', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_OUTPUT', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SCHEDULER', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('HTP', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('OWA', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('WPG_DOCLOAD', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_CRYPTO', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_METADATA', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SQL', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('UTL_SMTP', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_NETWORK_ACL_ADMIN', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('SESSION_PRIVS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_USERS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_NETWORK_ACL_PRIVILEGES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_NETWORK_ACLS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY', 'MASTER_USER', 'SELECT', true);
   ```
**注意**  
上述命令適用於 ORDS 22 及更新版本。

1. 使用下載的 `ords` 指令碼來安裝 ORDS 結構描述。指定目錄以包含組態檔案和日誌檔案。Oracle Corporation 建議不要將這些目錄放置在包含 ORDS 產品軟體的目錄中。

   ```
   mkdir -p /home/apexuser/ords_config /home/apexuser/ords_logs
   
   /home/apexuser/ORDS/bin/ords \
     --config /home/apexuser/ords_config \
     install --interactive --log-folder /home/apexuser/ords_logs
   ```

   對於執行容器資料庫 (CDB) 架構的資料庫執行個體，請使用 ORDS 23.3 或更新版本，並在安裝 ORDS 時傳遞 `--pdb-skip-disable-lockdown` 引數。

   ```
   /home/apexuser/ORDS/bin/ords \
     --config /home/apexuser/ords_config \
     install --interactive --log-folder /home/apexuser/ords_logs --pdb-skip-disable-lockdown
   ```

   程式會提示您輸入下列資訊。方括號中是預設值。如需詳細資訊，請參閱 Oracle 文件中的 [Oracle REST Data Services 簡介](https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/20.2/aelig/installing-REST-data-services.html#GUID-6F7B4E61-B730-4E73-80B8-F53299123730)。
   + `Choose the type of installation:`

     選擇 **2** 以在資料庫中安裝 ORDS 結構描述，並在本機 ORDS 組態檔案中建立資料庫連線集區。
   + `Specify the database connection type to use. Enter number for [1] Basic [2] TNS [3] Custom URL:`

     選擇所需的連線類型。此範例假設您選擇 **1**。
   + `Enter the name of the database server [localhost]:` ***DB\$1instance\$1endpoint***

     選擇預設值 或輸入正確值。
   + `Enter the database listener port [1521]:` ***DB\$1instance\$1port***

     選擇預設值 **1521** 或輸入正確值。
   + `Enter the database service name [orcl]:`

     輸入 RDS for Oracle 資料庫執行個體使用的資料庫名稱。
   + `Provide database user name with administrator privileges`

      輸入 RDS for Oracle 資料庫執行個體的主要使用者名稱。
   + `Enter the database password for [username]:`

     輸入 RDS for Oracle 資料庫執行個體的主要使用者密碼。
   + `Enter the default tablespace for ORDS_METADATA and ORDS_PUBLIC_USER [SYSAUX]:`
   + `Enter the temporary tablespace for ORDS_METADATA [TEMP]. Enter the default tablespace for ORDS_PUBLIC_USER [USERS]. Enter the temporary tablespace for ORDS_PUBLIC_USER [TEMP].`
   + `Enter a number to select additional feature(s) to enable [1]:`
   + `Enter a number to configure and start ORDS in standalone mode [1]: `

      選擇 **2** 以獨立模式立即略過啟動 ORDS。
   + `Enter a number to select the protocol [1] HTTP`
   + `Enter the HTTP port [8080]:`
   + `Enter the APEX static resources location:`

     輸入 Oracle APEX 安裝檔案的路徑 (`/home/apexuser/apex/images`)。

1. 設定 Oracle APEX `admin` 使用者的密碼。若要這麼做，請使用 SQL\$1Plus 以主要使用者身分連線至資料庫執行個體，然後執行以下命令。

   ```
   1. EXEC rdsadmin.rdsadmin_util.grant_apex_admin_role;
   2. grant APEX_ADMINISTRATOR_ROLE to master;
   3. @/home/apexuser/apex/apxchpwd.sql
   ```

   將 `master` 改為您的主要使用者名稱。當 `apxchpwd.sql` 指令碼提示您時，請輸入新的 `admin` 密碼。

1. 使用 `ords` 指令碼搭配 `serve` 命令，以獨立模式執行 ORDS。對於生產部署，請考慮使用支援的 Java EE 應用程式伺服器，例如 Apache Tomcat 或 Oracle WebLogic Server。如需詳細資訊，請參閱 Oracle Database 文件中的[部署和監控 Oracle REST Data Services](https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/23.1/ordig/deploying-and-monitoring-oracle-rest-data-services.html#GUID-6791F5DF-AC67-4885-BFFA-B80964C17EC9)。

   ```
   /home/apexuser/ORDS/bin/ords \
     --config /home/apexuser/ords_config serve \
     --port 8193 \
     --apex-images /home/apexuser/apex/images
   ```

   如果 ORDS 正在執行但無法存取 Oracle APEX 安裝，您可能會看到下列錯誤，特別是在非 CDB 執行個體上。

   ```
   The procedure named apex_admin could not be accessed, it may not be declared, or the user executing this request may not have been granted execute privilege on the procedure, or a function specified by security.requestValidationFunction configuration property has prevented access.
   ```

   若要修正此錯誤，請執行 `ords` 指令碼搭配 `config` 命令，以變更 ORDS 使用的請求驗證函數。根據預設，ORDS 會使用 `ords_util.authorize_plsql_gateway` 程序，該程序僅在 CDB 執行個體上受支援。對於非 CDB 執行個體，您可以將此程序變更為 `wwv_flow_epg_include_modules.authorize` 套件。如需為您的使用案例設定適當請求驗證函數的最佳實務，請參閱 Oracle Database 文件和 Oracle Support。

1. 在瀏覽器中返回 Oracle APEX 管理視窗，然後選擇**管理**。接著選擇 **Application Express Internal Administration (Application Express 內部管理)**。當提示您提供登入資料時，請輸入下列資訊：
   + **使用者名稱** – `admin` 
   + **密碼** – 使用 `apxchpwd.sql` 指令碼所設定的密碼 

   選擇 **Login (登入)**，然後設定 `admin` 使用者的新密碼。

您的接聽程式現在可供使用。

# 升級和移除 Oracle APEX
<a name="Appendix.Oracle.Options.APEX.UpgradeandRemove"></a>

若要升級或移除 Oracle APEX，請遵循本主題中的指示：

**Topics**
+ [

## 升級 Oracle APEX 版本
](#Appendix.Oracle.Options.APEX.Upgrade)
+ [

## 移除 APEX 和 APEX-DEV 選項
](#Appendix.Oracle.Options.APEX.Remove)

## 升級 Oracle APEX 版本
<a name="Appendix.Oracle.Options.APEX.Upgrade"></a>

**重要**  
升級 Oracle APEX 之前，請備份資料庫執行個體。如需詳細資訊，請參閱[為 Amazon RDS 的單一可用區域資料庫執行個體建立資料庫快照](USER_CreateSnapshot.md)及[測試 Oracle 資料庫升級](USER_UpgradeDBInstance.Oracle.UpgradeTesting.md)。

若要連同資料庫執行個體一起升級 Oracle APEX，請執行下列動作：
+ 為資料庫執行個體的升級版本建立新的選項群組。
+ 將 `APEX` 和 `APEX-DEV` 選項的升級版本新增至新的選項群組。務必包括資料庫執行個體使用的其他任何選項。如需更多詳細資訊，請參閱 [選項群組考量](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.OG)。
+ 升級資料庫執行個體時，請為升級的資料庫執行個體指定新的選項群組。

升級 Oracle APEX 的版本之後，舊版的 Oracle APEX 結構描述可能仍存在於資料庫中。如果不再需要，您可以在升級之後從資枓庫中刪除舊的 Oracle APEX 結構描述。

如果您升級 Oracle APEX 版本，但舊版 Oracle APEX 中未設定 RESTful 服務，建議您設定 RESTful 服務。如需詳細資訊，請參閱[設定適用於 Oracle APEX 的 RESTful 服務](Appendix.Oracle.Options.APEX.settingUp.md#Appendix.Oracle.Options.APEX.ConfigureRESTful)。

在某些情況下，當您打算升級資料庫執行個體的主要版本時，您可能會發現使用的 Oracle APEX 版本與目標資料庫版本不相容。在這類情況下，您可先升級 Oracle APEX 版本，再升級資料庫執行個體。先升級 Oracle APEX 可以縮短升級資料庫執行個體所需的時間。

**注意**  
在升級 Oracle APEX 後，請安裝並設定接聽程式以使用升級後的版本。如需說明，請參閱[設定 Oracle APEX Listener](Appendix.Oracle.Options.APEX.settingUp.md#Appendix.Oracle.Options.APEX.Listener)。

## 移除 APEX 和 APEX-DEV 選項
<a name="Appendix.Oracle.Options.APEX.Remove"></a>

您可以從資料庫執行個體移除 `APEX` 和 `APEX-DEV` 選項。若要從您的資料庫執行個體中移除這些選項，請執行下列其中一個動作：
+ 若要從多個資料庫執行個體中移除 `APEX` 和 `APEX-DEV` 選項，請從所屬的選項群組中移除選項。此變更會影響使用選項群組的所有資料庫執行個體。當您從附加至多個資料庫執行個體的選項群組中移除選項時，在資料庫執行個體重新啟動期間，會發生短暫停機。

  如需詳細資訊，請參閱[從選項群組移除選項](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)。
+ 若要從單一資料庫執行個體中移除 `APEX` 和 `APEX-DEV` 選項，請修改執行個體，並指定不包含這些選項的不同選項群組。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。當您移除選項時，因為資料庫執行個體會自動重新啟動，所以會發生短暫停機。

  如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

當您從資料庫執行個體中移除 `APEX` 和 `APEX-DEV` 選項時，APEX 結構描述也會從資料庫中移除。

# Amazon EFS 整合
<a name="oracle-efs-integration"></a>

Amazon Elastic File System (Amazon EFS) 提供無伺服器、完全彈性的檔案儲存功能，讓您無需佈建或管理儲存容量和效能，即可分享檔案資料。使用 Amazon EFS，您可以建立檔案系統，然後透過 NFS 4.0 和 4.1 版 (NFSv4) 通訊協定將其掛載到虛擬私人雲端中。然後，您可以像使用任何其他 POSIX 相容檔案系統一樣使用 EFS 檔案系統。如需一般資訊，請參閱[什麼是 Amazon 彈性檔案系統？](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html)和 AWS 部落格文章[整合 Amazon RDS for Oracle 與 Amazon EFS](https://aws.amazon.com//blogs/database/integrate-amazon-rds-for-oracle-with-amazon-efs/)。

**Topics**
+ [

## Amazon EFS 整合概觀
](#oracle-efs-integration.overview)
+ [

# 設定網路許可以進行 RDS for Oracle 與 Amazon EFS 的整合
](oracle-efs-integration.network.md)
+ [

# 設定 IAM 許可以進行 RDS for Oracle 與 Amazon EFS 的整合
](oracle-efs-integration.iam.md)
+ [

# 新增 EFS\$1INTEGRATION 選項
](oracle-efs-integration.adding.md)
+ [

# 設定 Amazon EFS 檔案系統許可
](oracle-efs-integration.file-system.md)
+ [

# 在 RDS for Oracle 與 Amazon EFS 檔案系統之間傳輸檔案
](oracle-efs-integration.transferring.md)
+ [

# 移除 EFS\$1INTEGRATION 選項
](oracle-efs-integration.removing.md)
+ [

# 針對 Amazon EFS 整合進行疑難排解
](oracle-efs-integration.troubleshooting.md)

## Amazon EFS 整合概觀
<a name="oracle-efs-integration.overview"></a>

透過 Amazon EFS，您可以在 RDS for Oracle 資料庫執行個體與 Amazon EFS 檔案系統之間傳輸檔案。例如，您可以使用 EFS 支援下列使用案例：
+ 在應用程式和多個資料庫伺服器之間共用檔案系統。
+ 建立共用目錄，用於與移轉任務相關的檔案 (包括可傳輸的資料表空間資料檔案)。如需詳細資訊，請參閱[使用 Oracle 可傳輸資料表空間進行移轉](oracle-migrating-tts.md)。
+ 儲存和共用已封存的重做日誌檔，無需在伺服器上額外配置儲存空間。
+ 使用 Oracle 資料庫公用程式 (例如 `UTL_FILE`) 來讀取和寫入檔案。

### Amazon EFS 整合的優勢
<a name="oracle-efs-integration.overview.advantages"></a>

選擇 EFS 檔案系統而非其他資料傳輸解決方案的效益如下：
+ 您可以在 RDS for Oracle 資料庫執行個體與 Amazon EFS 檔案系統之間傳輸檔案。您不需要在本機複製這些檔案，因為 Data Pump 會直接從 EFS 檔案系統匯入。如需詳細資訊，請參閱[將資料匯入 Amazon RDS 上的 Oracle](Oracle.Procedural.Importing.md)。
+ 相較於使用資料庫連結，資料移轉速度更快。
+ 您可以避免在 RDS for Oracle 資料庫執行個體上配置儲存空間來儲存檔案。
+ EFS 檔案系統可以自動擴充儲存空間，您無需動手佈建。
+ Amazon EFS 整合沒有最低費用或設定成本。您僅需按實際用量付費。
+ Amazon EFS 整合支援兩種形式的加密：傳輸中資料加密和靜態加密。依預設會使用 TLS 1.2 版啟用對傳輸中資料加密。您可在 Amazon EFS 檔案系統建立時啟用靜態資料加密。如需詳細資訊，請參閱《Amazon Elastic File System 使用者指南》中的[靜態資料加密](https://docs.aws.amazon.com/efs/latest/ug/encryption-at-rest.html)。

### Amazon EFS 整合的需求
<a name="oracle-efs-integration.overview.requirements"></a>

請確定您符合下列需求：
+ 您的資料庫必須執行資料庫版本 19.0.0.0.ru-2022-07.rur-2022-07.r1 或更高版本。
+ 您的資料庫執行個體和 EFS 檔案系統必須位於相同的 AWS 區域 VPC 和 中 AWS 帳戶。RDS for Oracle 不支援 EFS 的跨帳戶和跨區域存取。
+ 您的 VPC 必須啟用 **DNS 解析**和 **DNS 主機名稱**。如需詳細資訊，請參閱《Amazon Virtual Private Cloud 使用者指南》**中的 [VPC 中的 DNS 屬性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support)。
+ 如果您在 `mount` 命令中使用 DNS 名稱，請確定您的 VPC 已設定為使用 Amazon 提供的 DNS 伺服器。不支援自訂 DNS 伺服器。
+ 您必須使用非 RDS 解決方案來備份 EFS 檔案系統。RDS for Oracle 不支援 EFS 檔案系統的自動備份或手動資料庫快照。如需詳細資訊，請參閱[備份您的 Amazon EFS 檔案系統](https://docs.aws.amazon.com/efs/latest/ug/efs-backup-solutions.html)。

# 設定網路許可以進行 RDS for Oracle 與 Amazon EFS 的整合
<a name="oracle-efs-integration.network"></a>

若要讓 RDS for Oracle 與 Amazon EFS 整合，請確定您的資料庫執行個體具有 EFS 檔案系統的網路存取權。如需詳細資訊，請參閱《Amazon Elastic File System 使用者指南》**中的[控制 NFS 用戶端對 Amazon EFS 檔案系統的網路存取](https://docs.aws.amazon.com/efs/latest/ug/NFS-access-control-efs.html)。

**Topics**
+ [

## 使用安全群組控制網路存取
](#oracle-efs-integration.network.inst-access)
+ [

## 使用檔案系統政策控制網路存取
](#oracle-efs-integration.network.file-system-policy)

## 使用安全群組控制網路存取
<a name="oracle-efs-integration.network.inst-access"></a>

您可以使用網路層安全機制 (例如 VPC 安全群組) 控制資料庫執行個體對 EFS 檔案系統的存取。若要允許資料庫執行個體存取 EFS 檔案系統，請確定您的 EFS 檔案系統符合下列需求：
+ EFS 掛載目標存在於 RDS for Oracle 資料庫執行個體使用的每個可用區域中。

  *EFS 掛載目標*會提供 NFSv4 端點的 IP 地址，您可以在該端點上掛載 EFS 檔案系統。您將使用其 DNS 名稱掛載您的檔案系統，該名稱會解析為 EFS 掛載目標 IP 地址，而該目標位於資料庫執行個體所使用的可用區域中。

  您可以設定不同可用區域中的資料庫執行個體，以使用相同的 EFS 檔案系統。針對多可用區，您需要部署中每個可用區域的掛載點。您可能需要將資料庫執行個體移動至不同的可用區域。基於這些原因，建議您在 VPC 中的每個可用區域建立 EFS 掛載點。根據預設，當您使用主控台建立新的 EFS 檔案系統時，RDS 會為所有可用區域建立掛載目標。
+ 安全群組連接至掛載目標。
+ 安全群組具有傳入規則，允許在 TCP/2049 (NFS 類型) 上 RDS for Oracle 資料庫執行個體的網路子網路或安全群組。

如需詳細資訊，請參閱《Amazon Elastic File System 使用者指南》**中的[建立 Amazon EFS 檔案系統](https://docs.aws.amazon.com/efs/latest/ug/creating-using-create-fs.html#configure-efs-network-access)和[建立和管理 EFS 掛載目標和安全群組](https://docs.aws.amazon.com/efs/latest/ug/accessing-fs.html)。

## 使用檔案系統政策控制網路存取
<a name="oracle-efs-integration.network.file-system-policy"></a>

Amazon EFS 與 RDS for Oracle 整合會使用預設 (空白) EFS 檔案系統政策。預設政策不會使用 IAM 進行身分驗證。相反地，它會將完全存取權授予任何可以使用掛載目標連線至檔案系統的匿名用戶端。每當使用者設定的檔案系統政策未生效時，預設政策就會生效，包括在建立檔案系統時。如需詳細資訊，請參閱《Amazon Elastic File System 使用者指南》**中的[預設 EFS 檔案系統政策](https://docs.aws.amazon.com/efs/latest/ug/iam-access-control-nfs-efs.html#default-filesystempolicy)。

若要加強所有用戶端 (包括 RDS for Oracle) 對 EFS 檔案系統的存取，您可以設定 IAM 許可。在此方法中，您可以建立檔案系統政策。如需詳細資訊，請參閱《Amazon Elastic File System 使用者指南》**中的[建立檔案系統政策](https://docs.aws.amazon.com/efs/latest/ug/create-file-system-policy.html)。

# 設定 IAM 許可以進行 RDS for Oracle 與 Amazon EFS 的整合
<a name="oracle-efs-integration.iam"></a>

根據預設，Amazon EFS 整合功能不使用 IAM 角色：`USE_IAM_ROLE` 選項設定為 `FALSE`。若要整合 RDS for Oracle 與 Amazon EFS 和 IAM 角色，您的資料庫執行個體必須具有存取 Amazon EFS 檔案系統的 IAM 許可。

**Topics**
+ [

## 步驟 1：針對您的資料庫執行個體建立 IAM 角色並附加您的政策
](#oracle-efs-integration.iam.role)
+ [

## 步驟 2：針對您的 Amazon EFS 檔案系統建立檔案系統政策
](#oracle-efs-integration.iam.policy)
+ [

## 步驟 3：將 IAM 角色與 RDS for Oracle 資料庫執行個體建立關聯
](#oracle-efs-integration.iam.instance)

## 步驟 1：針對您的資料庫執行個體建立 IAM 角色並附加您的政策
<a name="oracle-efs-integration.iam.role"></a>

在此步驟中，您會針對 RDS for Oracle 資料庫執行個體建立一個角色，允許 Amazon RDS 存取您的 EFS 檔案系統。

### 主控台
<a name="oracle-efs-integration.iam.role.console"></a>

**建立 IAM 角色以允許 Amazon RDS 存取 EFS 檔案系統**

1. 開啟 [IAM 管理主控台](https://console.aws.amazon.com/iam/home?#home)。

1. 在導覽窗格中，選擇 **Roles** (角色)。

1. 選擇 **Create Role** (建立角色)。

1. 針對 **AWS 服務**，請選擇 **RDS**。

1. 針對 **Select your use case (選擇使用案例)** 選擇 **RDS – Add Role to Database (新增角色至資料庫)**。

1. 選擇**下一步**。

1. 請不要新增任何許可政策。選擇**下一步**。

1. 將 **Role Name (角色名稱)** 設為您的 IAM 角色名稱，例如 `rds-efs-integration-role`。您也可以新增選用的 **Description (描述) **值。

1. 選擇建**立角色**。

### AWS CLI
<a name="integration.preparing.role.CLI"></a>

若要將服務的許可限制為特定資源，建議您在資源型信任關係中使用 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 和 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全域條件內容金鑰。這是防止[混淆代理人問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)最有效的方式。

您可以同時使用全域條件內容索引鍵和包含帳號 ID 的 `aws:SourceArn` 值。在此情況下，當在相同陳述式中使用 `aws:SourceAccount` 值和 `aws:SourceArn` 裡的帳户時，兩者必須使用同樣的帳户 ID。
+ 如果您想要跨服務存取單一資源，請使用 `aws:SourceArn`。
+ 如果您想要允許該帳戶中的任何資源與跨服務使用相關聯，請使用 `aws:SourceAccount`。

在信任關係中，請務必使用 `aws:SourceArn` 全域條件內容索引鍵，其中包含存取角色的資源之完整 Amazon 資源名稱 (ARN)。

下列 AWS CLI 命令`rds-efs-integration-role`會為此目的建立名為 的角色。

**Example**  
針對 Linux、macOS 或 Unix：  

```
aws iam create-role \
   --role-name rds-efs-integration-role \
   --assume-role-policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
            "Service": "rds.amazonaws.com"
          },
         "Action": "sts:AssumeRole",
         "Condition": {
             "StringEquals": {
                 "aws:SourceAccount": my_account_ID,
                 "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname"
             }
         }
       }
     ]
   }'
```
在 Windows 中：  

```
aws iam create-role ^
   --role-name rds-efs-integration-role ^
   --assume-role-policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
            "Service": "rds.amazonaws.com"
          },
         "Action": "sts:AssumeRole",
         "Condition": {
             "StringEquals": {
                 "aws:SourceAccount": my_account_ID,
                 "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname"
             }
         }
       }
     ]
   }'
```

如需詳細資訊，請參閱《*IAM 使用者指南*》中的[建立角色以將許可委派給 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)。

## 步驟 2：針對您的 Amazon EFS 檔案系統建立檔案系統政策
<a name="oracle-efs-integration.iam.policy"></a>

在此步驟中，您會針對 EFS 檔案系統建立檔案系統政策。

**建立或編輯 EFS 檔案系統政策**

1. 開啟 [EFS 管理主控台](https://console.aws.amazon.com/efs/home?#home)。

1. 選擇 **File Systems (檔案系統)**。

1. 在 **File systems** (檔案系統) 頁面上，選擇您要編輯或針對其建立檔案系統政策的檔案系統。即會顯示該檔案系統的詳細資訊頁面。

1. 選擇 **File system policy** (檔案系統政策) 索引標籤。

   如果政策空白，表示正在使用預設 EFS 檔案系統政策。如需詳細資訊，請參閱《Amazon Elastic File System 使用者指南》**中的[預設 EFS 檔案系統政策](https://docs.aws.amazon.com/efs/latest/ug/iam-access-control-nfs-efs.html#default-filesystempolicy )。

1. 選擇**編輯**。**File system policy (檔案系統政策)** 頁面隨即顯示。

1. 在 **Policy editor** (原則編輯器) 中，輸入如下的政策，然後選擇 **Save** (儲存)。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "ExamplePolicy01",
       "Statement": [
           {
               "Sid": "ExampleStatement01",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::123456789012:role/rds-efs-integration-role"
               },
               "Action": [
                   "elasticfilesystem:ClientMount",
                   "elasticfilesystem:ClientWrite",
                   "elasticfilesystem:ClientRootAccess"
               ],
               "Resource": "arn:aws:elasticfilesystem:us-east-1:123456789012:file-system/fs-1234567890abcdef0"
           }
       ]
   }
   ```

------

## 步驟 3：將 IAM 角色與 RDS for Oracle 資料庫執行個體建立關聯
<a name="oracle-efs-integration.iam.instance"></a>

在此步驟中，您會將 IAM 角色與資料庫執行個體建立關聯。請注意下列需求：
+ 您必須有權存取必要 Amazon EFS 許可政策附加至其中的 IAM 角色。
+ 您一次只能將一個 IAM 角色與 RDS for Oracle 資料庫執行個體建立關聯。
+ 執行個體的狀態必須為 **Available** (可用)。

如需詳細資訊，請參閱《Amazon Elastic File System 使用者指南》**中的[適用於 Amazon EFS 的 Identity and Access Management](https://docs.aws.amazon.com/efs/latest/ug/auth-and-access-control.html)。

### 主控台
<a name="oracle-efs-integration.iam.instance.console"></a>

**如要建立 IAM 角色與 RDS for Oracle 資料庫執行個體的關聯**

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

1. 選擇 **Databases** (資料庫)。

1. 如果您的資料庫執行個體無法使用，請選擇 **Actions** (動作)，然後選擇 **Start** (開始)。當執行個體狀態顯示 **Started** (已啟動) 時，請移至下一個步驟。

1. 選擇 Oracle 資料庫執行個體名稱以顯示其詳細資訊。

1. 在 **Connectivity & security (連線和安全)** 索引標籤上，向下捲動至頁面底部的 **Manage IAM roles (管理 IAM 角色)** 區段。

1. 在 **Add IAM roles to this instance (新增 IAM 角色到此執行個體)** 區段中選擇要新增的角色。

1. 針對 **Feature** (功能)，選擇 **EFS\$1INTEGRATION**。

1. 選擇 **Add role (新增角色)**。

### AWS CLI
<a name="oracle-efs-integration.iam.instance.CLI"></a>

下列 AWS CLI 命令會將 角色新增至名為 的 Oracle 資料庫執行個體`mydbinstance`。

**Example**  
針對 Linux、macOS 或 Unix：  

```
aws rds add-role-to-db-instance \
   --db-instance-identifier mydbinstance \
   --feature-name EFS_INTEGRATION \
   --role-arn your-role-arn
```
在 Windows 中：  

```
aws rds add-role-to-db-instance ^
   --db-instance-identifier mydbinstance ^
   --feature-name EFS_INTEGRATION ^
   --role-arn your-role-arn
```

將 `your-role-arn` 替換為您前個步驟記下的角色 ARN。`EFS_INTEGRATION` 必須在 `--feature-name` 選項中指定。

# 新增 EFS\$1INTEGRATION 選項
<a name="oracle-efs-integration.adding"></a>

若要整合 Amazon RDS for Oracle 與 Amazon EFS，您的資料庫執行個體必須與包含 `EFS_INTEGRATION` 選項的選項群組建立關聯。

屬於相同選項群組的多個 Oracle 資料庫執行個體共用相同的 EFS 檔案系統。不同的資料庫執行個體可以存取相同的資料，但存取可以透過使用不同的 Oracle 目錄來進行劃分。如需詳細資訊，請參閱「[在 RDS for Oracle 與 Amazon EFS 檔案系統之間傳輸檔案](oracle-efs-integration.transferring.md)」。

## 主控台
<a name="oracle-efs-integration.adding.console"></a>

**設定選項群組進行 Amazon EFS 整合**

1. 建立新的選項群組，或識別現有的選項群組，以便在其中新增 `EFS_INTEGRATION` 選項。

   如需建立選項群組的相關資訊，請參閱[建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 `EFS_INTEGRATION` 選項新增至選項群組。您需要指定 `EFS_ID` 檔案系統 ID 並設定 `USE_IAM_ROLE` 旗標。

   如需詳細資訊，請參閱 [將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

1. 請採取下其中一種方式將選項群組與您的資料庫執行個體建立關聯：
   + 建立新的 Oracle 資料庫執行個體，並將選項群組與其建立關聯。如需建立資料庫執行個體的相關資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
   + 修改 Oracle 資料庫執行個體，以將選項群組與其建立關聯。如需修改 Oracle 資料庫執行個體的相關資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## AWS CLI
<a name="oracle-efs-integration.adding.cli"></a>

**設定選項群組進行 EFS 整合**

1. 建立新的選項群組，或識別現有的選項群組，以便在其中新增 `EFS_INTEGRATION` 選項。

   如需建立選項群組的相關資訊，請參閱[建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 `EFS_INTEGRATION` 選項新增至選項群組。

   例如下列 AWS CLI 命令可將 `EFS_INTEGRATION` 選項新增至名為 **myoptiongroup** 的選項群組。  
**Example**  

   針對 Linux、macOS 或 Unix：

   ```
   aws rds add-option-to-option-group \
      --option-group-name myoptiongroup \
      --options "OptionName=EFS_INTEGRATION,OptionSettings=\ 
      [{Name=EFS_ID,Value=fs-1234567890abcdef0},{Name=USE_IAM_ROLE,Value=TRUE}]"
   ```

   針對 Windows：

   ```
   aws rds add-option-to-option-group ^
      --option-group-name myoptiongroup ^
      --options "OptionName=EFS_INTEGRATION,OptionSettings=^
      [{Name=EFS_ID,Value=fs-1234567890abcdef0},{Name=USE_IAM_ROLE,Value=TRUE}]"
   ```

1. 請採取下其中一種方式將選項群組與您的資料庫執行個體建立關聯：
   + 建立新的 Oracle 資料庫執行個體，並將選項群組與其建立關聯。如需建立資料庫執行個體的相關資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
   + 修改 Oracle 資料庫執行個體，以將選項群組與其建立關聯。如需修改 Oracle 資料庫執行個體的相關資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

# 設定 Amazon EFS 檔案系統許可
<a name="oracle-efs-integration.file-system"></a>

根據預設，只有根使用者 (UID `0`) 對新建立的 EFS 檔案系統具備讀取、寫入和執行許可。若要讓其他使用者能夠修改檔案系統，根使用者必須明確地授予存取權給這些使用者。RDS for Oracle 資料庫執行個體的使用者位於 `others` 類別中。如需詳細資訊，請參閱《Amazon Elastic File System 使用者指南》**中的[使用網路檔案系統 (NFS) 層級的使用者、群組和許可](https://docs.aws.amazon.com/efs/latest/ug/accessing-fs-nfs-permissions.html)。

若要允許 RDS for Oracle 資料庫執行個體讀取和寫入 EFS 檔案系統上的檔案，請執行下動作：
+ 在本機於 Amazon EC2 或內部部署執行個體上掛載 EFS 檔案系統。
+ 設定精細許可。

例如，若要授予 `other` 使用者寫入 EFS 檔案系統根目錄的許可，請在此目錄上執行 `chmod 777`。如需詳細資訊，請參閱《Amazon Elastic File System 使用者指南》**中的[範例 Amazon EFS 檔案系統使用案例和許可](https://docs.aws.amazon.com/efs/latest/ug/accessing-fs-nfs-permissions.html#accessing-fs-nfs-permissions-ex-scenarios)。

# 在 RDS for Oracle 與 Amazon EFS 檔案系統之間傳輸檔案
<a name="oracle-efs-integration.transferring"></a>

若要在 RDS for Oracle 執行個體與 Amazon EFS 檔案系統之間傳輸檔案，請至少建立一個 Oracle 目錄，然後設定 EFS 檔案系統許可，以控制資料庫執行個體存取。

**Topics**
+ [

## 建立 Oracle 目錄
](#oracle-efs-integration.transferring.od)
+ [

## 在 EFS 檔案系統之間傳輸資料：範例
](#oracle-efs-integration.transferring.upload)

## 建立 Oracle 目錄
<a name="oracle-efs-integration.transferring.od"></a>

若要建立 Oracle 目錄，請使用程序 `rdsadmin.rdsadmin_util.create_directory_efs`。 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_directory_name`  |  VARCHAR2  |  –  |  是  |  Oracle 目錄的名稱。  | 
|  `p_path_on_efs`  |  VARCHAR2  |  –  |  是  |  EFS 檔案系統上的路徑。路徑名稱的字首會使用模式 `/rdsefs-fsid/`，其中 *fsid* 是 EFS 檔案系統 ID 的預留位置。 例如，如果您的 EFS 檔案系統已命名為 `fs-1234567890abcdef0`，且您在名為 `mydir` 的這個檔案系統上建立了一個子目錄，則您可以指定下列值： <pre>/rdsefs-fs-1234567890abcdef0/mydir</pre>  | 

假設您在 EFS 檔案系統 `fs-1234567890abcdef0` 上建立了名為 `/datapump1` 的子目錄。下列範例會建立一個 Oracle 目錄 `DATA_PUMP_DIR_EFS`，指向 EFS 檔案系統上的 `/datapump1` 目錄。`p_path_on_efs` 參數的檔案系統路徑值以字串 `/rdsefs-` 為字首。

```
BEGIN
  rdsadmin.rdsadmin_util.create_directory_efs(
    p_directory_name => 'DATA_PUMP_DIR_EFS', 
    p_path_on_efs    => '/rdsefs-fs-1234567890abcdef0/datapump1');
END;
/
```

## 在 EFS 檔案系統之間傳輸資料：範例
<a name="oracle-efs-integration.transferring.upload"></a>

下列範例使用 Oracle Data Pump 將名為 `MY_TABLE` 的資料表匯出至檔案 `datapump.dmp`。此檔案位於 EFS 檔案系統上。

```
DECLARE
  v_hdnl NUMBER;
BEGIN
  v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'EXPORT', job_mode => 'TABLE', job_name=>null);
  DBMS_DATAPUMP.ADD_FILE(
    handle    => v_hdnl,
    filename  => 'datapump.dmp',
    directory => 'DATA_PUMP_DIR_EFS',
    filetype  => dbms_datapump.ku$_file_type_dump_file);
  DBMS_DATAPUMP.ADD_FILE(
    handle    => v_hdnl,
    filename  => 'datapump-exp.log',
    directory => 'DATA_PUMP_DIR_EFS',
    filetype  => dbms_datapump.ku$_file_type_log_file);
  DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'NAME_EXPR','IN (''MY_TABLE'')');
  DBMS_DATAPUMP.START_JOB(v_hdnl);
END;
/
```

下列範例使用 Oracle Data Pump，從檔案 `datapump.dmp` 中匯入名為 `MY_TABLE` 的資料表。此檔案位於 EFS 檔案系統上。

```
DECLARE
  v_hdnl NUMBER;
BEGIN
  v_hdnl := DBMS_DATAPUMP.OPEN(
    operation => 'IMPORT',
    job_mode  => 'TABLE',
    job_name  => null);
  DBMS_DATAPUMP.ADD_FILE(
    handle    => v_hdnl,
    filename  => 'datapump.dmp',
    directory => 'DATA_PUMP_DIR_EFS',
    filetype  => dbms_datapump.ku$_file_type_dump_file );
  DBMS_DATAPUMP.ADD_FILE(
    handle    => v_hdnl,
    filename  => 'datapump-imp.log',
    directory => 'DATA_PUMP_DIR_EFS',
    filetype  => dbms_datapump.ku$_file_type_log_file);
  DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'NAME_EXPR','IN (''MY_TABLE'')');
  DBMS_DATAPUMP.START_JOB(v_hdnl);
END;
/
```

如需詳細資訊，請參閱[將資料匯入 Amazon RDS 上的 Oracle](Oracle.Procedural.Importing.md)。

# 移除 EFS\$1INTEGRATION 選項
<a name="oracle-efs-integration.removing"></a>

移除 `EFS_INTEGRATION` 選項的步驟，取決於您要從多個資料庫執行個體還是單一執行個體移除選項。


| 資料庫執行個體的數目 | 動作 | 相關資訊 | 
| --- | --- | --- | 
| 多個 | 從資料庫執行個體所屬的選項群組中移除 EFS\$1INTEGRATION 選項。此變更會對所有使用該選項群組的執行個體產生影響。 | [從選項群組移除選項](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption) | 
| 單一 | 修改資料庫執行個體，並指定不包括 EFS\$1INTEGRATION 選項的不同選項群組。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。 | [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md) | 

移除 `EFS_INTEGRATION`選項後，您可以選擇刪除已連線至資料庫執行個體的 EFS 檔案系統。

# 針對 Amazon EFS 整合進行疑難排解
<a name="oracle-efs-integration.troubleshooting"></a>

您的 RDS for Oracle 資料庫執行個體會監控與 EFS 檔案系統的連線。當監控偵測到問題時，它可能會嘗試修正該問題，並在 RDS 主控台中發佈事件。如需詳細資訊，請參閱[檢視 Amazon RDS 事件](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ListEvents.html)。

請使用此節中的資訊，協助您診斷並修正在您使用 Amazon EFS 整合時常見的問題。


| 通知 | Description | Action | 
| --- | --- | --- | 
|  `The EFS for RDS Oracle instance instance_name isn't available on the primary host. NFS port 2049 of your EFS isn't reachable.`  |  資料庫執行個體無法與 EFS 檔案系統通訊。  |  請確定下列情況： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/oracle-efs-integration.troubleshooting.html)  | 
|  `The EFS isn't reachable.`  |  安裝 `EFS_INTEGRATION` 選項期間發生錯誤。  |  請確定下列情況： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/oracle-efs-integration.troubleshooting.html)  | 
|  `The associated role with your DB instance wasn't found.`  |  安裝 `EFS_INTEGRATION` 選項期間發生錯誤。  |  請確定您已將 IAM 角色與 RDS for Oracle 資料庫執行個體建立關聯。  | 
|  `The associated role with your DB instance wasn't found.`  |  安裝 `EFS_INTEGRATION` 選項期間發生錯誤。RDS for Oracle 在 `USE_IAM_ROLE` 選項設定為 `TRUE` 的情況下，從資料庫快照還原。  |  請確定您已將 IAM 角色與 RDS for Oracle 資料庫執行個體建立關聯。  | 
|  `The associated role with your DB instance wasn't found.`  |  安裝 `EFS_INTEGRATION` 選項期間發生錯誤。RDS for Oracle 在 `USE_IAM_ROLE` 選項設定為 `TRUE` 的情況下，從多合一 CloudFormation 範本建立。  |  請完成下列步驟以解決此問題： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/oracle-efs-integration.troubleshooting.html)  | 
|  `PLS-00302: component 'CREATE_DIRECTORY_EFS' must be declared`  |  當您使用的是不支援 Amazon EFS 的 RDS for Oracle 版本時，可能會發生此錯誤。  |  請確定您使用的是 RDS for Oracle 資料庫執行個體版本 19.0.0.0.ru-2022-07.rur-2022-07.r1 或更新版本。  | 
|  `Read access of your EFS is denied. Check your file system policy.`  |  您的資料庫執行個體無法讀取 EFS 檔案系統。  |  請確定您的 EFS 檔案系統允許透過 IAM 角色或在 EFS 檔案系統層級進行讀取存取。  | 
|  N/A  |  您的資料庫執行個體無法寫入至 EFS 檔案系統。  |  採取下列步驟： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/oracle-efs-integration.troubleshooting.html)  | 

# Oracle Java 虛擬機器
<a name="oracle-options-java"></a>

Amazon RDS 會使用 `JVM` 選項，藉此支援 Oracle Java 虛擬機器 (JVM)。Oracle Java 提供 SQL 結構描述和函數，可加速 Oracle 資料庫的 Oracle Java 功能。如需詳細資訊，請參閱 Oracle 文件中的[ Oracle 資料庫中的 Java 簡介](https://docs.oracle.com/database/121/JJDEV/chone.htm)。您可以使用 Oracle JVM 搭配所有版本的 Oracle Database 21c (21.0.0) 和 Oracle Database 19c (19.0.0)。

## Oracle JVM 的考量
<a name="oracle-options-java.considerations"></a>

Amazon RDS 中的 Java 實作擁有有限的一組許可。主要使用者已授予 `RDS_JAVA_ADMIN` 角色，可授予由 `JAVA_ADMIN` 角色授予的權限子集。如要列出授予給 `RDS_JAVA_ADMIN` 角色的權限，請在您的資料庫執行個體上執行以下查詢：

```
SELECT * FROM dba_java_policy 
   WHERE grantee IN ('RDS_JAVA_ADMIN', 'PUBLIC') 
   AND enabled = 'ENABLED' 
   ORDER BY type_name, name, grantee;
```

## Oracle JVM 的先決條件
<a name="oracle-options-java.prerequisites"></a>

下列是使用 Oracle Java 的先決條件：
+ 您的資料庫執行個體必須具有夠大的類別。db.t3.small 資料庫執行個體類別不支援 Oracle Java。如需詳細資訊，請參閱[ 資料庫執行個體類別](Concepts.DBInstanceClass.md)。
+ 您的資料庫執行個體必須將**自動次要版本升級**啟用。此選項可讓資料庫執行個體自動接收可用的次要資料庫引擎版本升級。Amazon RDS 使用此選項將您的資料庫執行個體更新為最新版 Oracle 修補程式集更新 (PSU) 或版本更新 (RU)。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## Oracle JVM 的最佳實務
<a name="oracle-options-java.best-practices"></a>

下列是使用 Oracle Java 的最佳實務：
+ 為了將安全性提升至最高，請使用 `JVM` 選項搭配 Secure Sockets Layer (SSL)。如需更多詳細資訊，請參閱 [Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md)。
+ 設定資料庫執行個體以限制網路存取。如需更多詳細資訊，請參閱 [在 VPC 中存取資料庫執行個體的案例](USER_VPC.Scenarios.md) 及 [在 VPC 中使用資料庫執行個體](USER_VPC.WorkingWithRDSInstanceinaVPC.md)。
+ 如果您符合下列條件，請更新 HTTPS 端點的組態以支援 TLSv1.2：
  + 您可以使用 Oracle Java 虛擬機器 (JVM) 透過 TLSv1 或 TLSv1.1 通訊協定來連線 HTTPS 端點。
  + 您的端點不支援 TLSv1.2 通訊協定。
  + 您尚未將 2021 年 4 月版本更新套用至您的 Oracle 資料庫。

  透過更新端點組態，您可以確保 JVM 與 HTTPS 端點的連線能夠繼續運作。如需 Oracle JRE 和 JDK 中 TLS 變更的詳細資訊，請參閱 [Oracle JRE 和 JDK 密碼編譯藍圖](https://java.com/en/jre-jdk-cryptoroadmap.html)。

## 新增 Oracle JVM 選項
<a name="oracle-options-java.add"></a>

下列是將 `JVM` 選項新增至資料庫執行個體的一般程序：

1. 建立新的選項群組，或是複製或修改現有選項群組。

1. 將選項新增至選項群組。

1. 將選項群組與資料庫執行個體建立關聯。

新增 `JVM` 選項時，會有短暫的停機。在您新增選項之後，就不需要重新啟動資料庫執行個體。只要選項群組為作用中，Oracle Java 就可使用。

**注意**  
在中斷過程中，密碼驗證功能將會短暫停用。在中斷過程中，您也可以預期將會看到與密碼驗證功能相關的事件。在 Oracle 資料庫執行個體可用之前，密碼驗證功能將會再次啟用。

**將 JVM 選項新增至資料庫執行個體**

1. 判斷要使用的選項群組。您可以建立新的選項群組或使用現有的選項群組。如果您要使用現有的選項群組，請跳到下一個步驟。否則請使用下列設定來建立自訂資料庫選項群組：
   + 對於 **Engine (引擎)**，請選擇資料庫執行個體使用的資料庫引擎 (**oracle-ee**、**oracle-se**、**oracle-se1** 或 **oracle-se2**)。
   + 針對 **Major engine version (主要引擎版本)**，請選擇您資料庫執行個體的版本。

   如需更多詳細資訊，請參閱 [建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 **JVM** 選項新增至選項群組。如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

1. 將選項群組套用至新的或現有的資料庫執行個體：
   + 針對新的資料庫執行個體，在啟動執行個體時套用選項群組。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
   + 針對現有的資料庫執行個體，可以透過修改執行個體並附加新的選項群組來套用選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

1. 將所需的許可授予使用者。

   Amazon RDS 主要使用者預設有使用 `JVM` 選項的許可。如果其他使用者需要這些許可，請以主要使用者的身分連線到資料庫執行個體，並且將該許可授予使用者。

   下列範例將使用 `JVM` 選項的許可授予 `test_proc` 使用者。

   ```
   create user test_proc identified by password;
   CALL dbms_java.grant_permission('TEST_PROC', 'oracle.aurora.security.JServerPermission', 'LoadClassInPackage.*', '');
   ```
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

   對使用者授予許可之後，下列查詢應該會傳回輸出。

   ```
   select * from dba_java_policy where grantee='TEST_PROC';
   ```
**注意**  
Oracle使用者名稱會區分大小寫，且通常全部是大寫字元。

## 移除 Oracle JVM 選項
<a name="oracle-options-java.remove"></a>

您可以從資料庫執行個體移除 `JVM` 選項。移除選項時，會有短暫的停機。移除 `JVM` 選項之後，就不需要重新啟動資料庫執行個體。

**警告**  
 如果資料庫執行個體使用的是做為選項一部分而啟用的資料類型，移除 `JVM` 選項可能會造成資料遺失。備份資料之後再繼續。如需更多詳細資訊，請參閱 [備份、還原和匯出資料](CHAP_CommonTasks.BackupRestore.md)。

若要從資料庫執行個體中移除 `JVM` 選項，請執行下列其中一個動作：
+ 從其所屬的選項群組中移除 `JVM` 選項。此變更會影響使用選項群組的所有資料庫執行個體。如需更多詳細資訊，請參閱 [從選項群組移除選項](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)。
+ 修改資料庫執行個體，並指定不包括 `JVM` 選項的不同選項群組。此變更會影響單一資料庫執行個體。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

# Oracle Enterprise Manager
<a name="Oracle.Options.OEM"></a>

Amazon RDS 支援 Oracle Enterprise Manager (OEM)。OEM 是 Oracle 的整合企業資訊技術管理產品線。

Amazon RDS 支援 Oracle Database 19c 非 CDB 或 CDB 上的 OEM。下表說明支援的 OEM 選項。


****  

| 選項 | 選項 ID | 支援的 OEM 版本 | 
| --- | --- | --- | 
|  [OEM Database Express](Appendix.Oracle.Options.OEM_DBControl.md)  |  `OEM`  |  OEM Database Express 19c  | 
|  [OEM Management Agent](Oracle.Options.OEMAgent.md)  |  `OEM_AGENT`  |  OEM Cloud Control for 13c  | 

**注意**  
您可以使用 OEM Database 或 OEM Management Agent，但無法同時使用。

# Oracle Enterprise Manager Database Express
<a name="Appendix.Oracle.Options.OEM_DBControl"></a>

Amazon RDS 會使用 OEM 選項，藉此支援 Oracle Enterprise Manager Database Express (EM Express)。Amazon RDS 支援使用 CDB 或非 CDB 架構的 EM Express for Oracle Database 19c。

EM Express 是包含在資料庫中的 Web 資料庫管理工具，只有在開啟時才能使用。它支援金鑰效能管理和基本資料庫管理函數。如需詳細資訊，請參閱 Oracle Database 文件中的 [Oracle Enterprise Manager Database Express 簡介](https://docs.oracle.com/en/database/oracle/oracle-database/19/admqs/getting-started-with-database-administration.html#GUID-BA75AD46-D22E-4914-A31E-C395CD6A2BBA)。

**注意**  
db.t3.small 資料庫執行個體類別不支援 EM Express。如需資料庫執行個體類別的詳細資訊，請參閱 [RDS for Oracle 資料庫執行個體類別](Oracle.Concepts.InstanceClasses.md)。

## OEM 選項設定
<a name="Appendix.Oracle.Options.OEM_DBControl.Options"></a>

Amazon RDS 支援 OEM 選項的下列設定。


****  

| 選項設定 | 有效值 | 描述 | 
| --- | --- | --- | 
| **連接埠** | 整數值 |  RDS for Oracle 資料庫執行個體上接聽 EM Express 的連接埠。預設值為 5500。  | 
| **安全群組** | — |  有權存取 **Port (連接埠)** 的安全群組。  | 

## 步驟 1：新增 OEM 選項
<a name="Appendix.Oracle.Options.OEM_DBControl.Add"></a>

將 OEM 選項新增至資料庫執行個體的一般程序如下：

1. 建立新的選項群組，或是複製或修改現有選項群組。

1. 將選項新增至選項群組。

1. 將選項群組與您的資料庫執行個體建立關聯。

當您新增 OEM 選項時，當資料庫執行個體自動重新啟動時會發生短暫的中斷。

**將 OEM 選項新增至資料庫執行個體**

1. 判斷要使用的選項群組。您可以建立新的選項群組或使用現有的選項群組。如果您要使用現有的選項群組，請跳到下一個步驟。否則請使用下列設定來建立自訂資料庫選項群組：

   1. 針對 **Engine (引擎)**，選擇適用於資料庫執行個體的 Oracle 版本。

   1. 針對 **Major engine version (主要引擎版本)**，請選擇適用於資料庫執行個體的版本。

   如需更多詳細資訊，請參閱 [建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 OEM 選項新增至選項群組，並設定選項設定。如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。如需每項設定的詳細資訊，請參閱[OEM 選項設定](#Appendix.Oracle.Options.OEM_DBControl.Options)。
**注意**  
若您將 OEM 選項新增至已連接至一個或多個資料庫執行個體的現有選項群組，則在所有資料庫執行個體自動重新啟動時會發生短暫的中斷。

1. 將選項群組套用至新的或現有的資料庫執行個體：
   + 針對新的資料庫執行個體，在啟動執行個體時套用選項群組。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
   + 針對現有的資料庫執行個體，可以透過修改執行個體並附加新的選項群組來套用選項群組。當您新增 OEM 選項時，當資料庫執行個體自動重新啟動時會發生短暫的中斷。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

**注意**  
您也可以使用 AWS CLI 新增 OEM 選項。如需範例，請參閱 [將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

## 步驟 2：(僅限 CDB) 將 DBSNMP 使用者帳戶解除鎖定
<a name="Appendix.Oracle.Options.OEM_DBControl.DBSNMP"></a>

如果您的資料庫執行個體使用 CDB 架構，您必須以 `DBSNMP` 身分登入 EM Express。在 CDB 中，`DBSNMP` 是常見的使用者。依預設會鎖定此帳戶。如果您的資料庫執行個體不使用 CDB 架構，請略過此步驟。

**在 CDB 執行個體中解除鎖定 DBSNMP 使用者帳戶**

1. 在 SQL\$1Plus 或其他 Oracle SQL 應用程式中，以主要使用者身分登入資料庫執行個體。

1. 執行下列預存程序將 `DBSNMP` 帳戶解除鎖定：

   ```
   1. EXEC rdsadmin.rdsadmin_util.reset_oem_agent_password('new_password');
   ```

   如果您收到錯誤，指出程序不存在，請將 CDB 執行個體重新開機以自動安裝。如需詳細資訊，請參閱[在資料庫執行個體](USER_RebootInstance.md)。

## 步驟 3：透過瀏覽器存取 EM Express
<a name="Appendix.Oracle.Options.OEM_DBControl.Using"></a>

當您從 Web 瀏覽器存取 EM Express 時，登入視窗會出現，提示您輸入使用者名稱和密碼。

**透過瀏覽器存取 EM Express**

1. 識別 Amazon RDS 資料庫執行個體的端點和 EM Express 連接埠。如需尋找 Amazon RDS 資料庫執行個體端點的相關資訊，請參閱[尋找您的 RDS for Oracle 資料庫執行個體的端點](USER_Endpoint.md)。

1. 使用下列格式在瀏覽器定位器列中輸入 URL。

   ```
   https://endpoint.rds.amazonaws.com:port/em
   ```

   例如，如果 Amazon RDS​ 資料庫執行個體的端點為 `mydb.a1bcde234fgh.us-east-1.rds.amazonaws.com`，且 EM Express 連接埠為 `1158`，則使用下列 URL 來存取 EM Express。

   ```
   1. https://mydb.f9rbfa893tft.us-east-1.rds.amazonaws.com:1158/em
   ```

1. 當系統提示您輸入登入詳細資訊時，請根據您的資料庫架構執行下列其中一個動作：  
**您的資料庫不是 CDB。**  
輸入資料庫執行個體的主要使用者名稱和主要密碼。  
**您的資料庫是 CDB。**  
針對使用者輸入 `DBSNMP` 並輸入 `DBSNMP` 密碼。將 `Container` 欄位留空。

## 修改 OEM 資料庫設定
<a name="Appendix.Oracle.Options.OEM_DBControl.ModifySettings"></a>

在啟用 OEM 資料庫之後，您可以修改選項的安全群組設定。

在使選項群組與資料庫執行個體產生關聯之後，就無法修改 OEM 連接埠號碼。若要變更資料庫執行個體的 OEM 連接埠號碼，請執行下列動作：

1. 建立新的選項群組。

1. 將 OEM 選項與新的連接埠號碼加入至新的選項群組。

1. 從資料庫執行個體中移除現有的選項群組。

1. 將新的選項群組加入至資料庫執行個體。

如需如何修改選項設定的詳細資訊，請參閱[修改選項設定](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption)。如需每項設定的詳細資訊，請參閱[OEM 選項設定](#Appendix.Oracle.Options.OEM_DBControl.Options)。

## 執行 OEM Database Express 任務
<a name="Appendix.Oracle.Options.OEM_DBControl.DBTasks"></a>

您可以使用 Amazon RDS 程序來執行某些 OEM Database Express 任務。透過執行這些程序，您可以完成下方列出的任務。

**注意**  
OEM Database Express 任務會以非同步方式執行。

**Topics**
+ [

### 將 OEM Database Express 網站前端切換為 Adobe Flash
](#Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToFlash)
+ [

### 將 OEM Database Express 的網站前端切換為 Oracle JET
](#Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToOracleJET)

### 將 OEM Database Express 網站前端切換為 Adobe Flash
<a name="Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToFlash"></a>

**注意**  
此任務僅適用於 Oracle Database 19c 非 CDB。

從 Oracle 資料庫 19c 開始，Oracle 已取代以前以 Adobe Flash 為基礎的 OEM Database Express 使用者界面。相反地，「OEM Database Express」現在使用 Oracle JET 內建的介面。如果您在使用新介面時遇到困難，可以切換回已取代的 Flash 版本介面。您可能會遇到的新介面使用困難，包括登入 OEM Database Express 後卡在 `Loading` 螢幕上。您也可能會找不到 OEM Database Express 的 Flash 版本中存在的某些功能。

若要將 OEM Database Express 網站前端切換為 Adobe Flash，請執行此Amazon RDS程序`rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_flash`。此程序相當於 `execemx emx` SQL 命令。

安全最佳實務不建議使用 Adobe Flash。雖然您可以還原至 Flash 版本的 OEM Database Express，但我們建議您儘可能使用 JET 版本的 OEM Database Express 網站。如果您還原至使用 Adobe Flash，並想要切換回使用 Oracle JET，請使用 `rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_jet` 程序。在 Oracle 資料庫升級之後，較新版的 Oracle JET 可能會解決 OEM Database Express 中與 JET 相關的問題。如需切換至 Oracle JET 的詳細資訊，請參閱 [將 OEM Database Express 的網站前端切換為 Oracle JET](#Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToOracleJET)。

**注意**  
從僅供讀取複本的來源資料庫執行個體執行此任務，也會導致僅供讀取複本將其 OEM Database Express 網站前端切換為 Adobe Flash。

下列程序呼叫會建立任務，將 OEM Database Express 網站切換為 Adobe Flash，並傳回任務 ID。

```
SELECT rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_flash() as TASK_ID from DUAL;
```

您可以透過顯示任務的輸出檔案來檢視結果。

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));
```

以程序傳回的任務 ID 取代 *`task-id`*。如需 Amazon RDS 程序 `rdsadmin.rds_file_util.read_text_file` 的詳細資訊，請參閱 [讀取資料庫執行個體目錄中的檔案](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles) 

您也可以透過 AWS 管理主控台 搜尋 **日誌與事件**區段中的日誌項目，在 中檢視任務輸出檔案的內容`task-id`。

### 將 OEM Database Express 的網站前端切換為 Oracle JET
<a name="Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToOracleJET"></a>

**注意**  
此任務僅適用於 Oracle Database 19c 非 CDB。

若要將 OEM Database Express 網站前端切換至 Oracle JET，請執行Amazon RDS程序`rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_jet`。此程序相當於 `execemx omx` SQL 命令。

依照預設，執行 19c 或更新版本之 Oracle 資料庫執行個體的 OEM Database Express 網站會使用 Oracle JET。如果您使用 `rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_flash` 程序將 OEM Database Express 網站前端切換為 Adobe Flash，則可以切換回 Oracle JET。若要執行這項操作，請使用`rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_jet`程序。如需切換至 Adobe Flash 的詳細資訊，請參閱 [將 OEM Database Express 網站前端切換為 Adobe Flash](#Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToFlash)。

**注意**  
從僅供讀取複本的來源資料庫執行個體執行此工作，也會導致僅供讀取複本將其 OEM Database Express 網站前端切換為 Oracle JET。

下列程序呼叫會建立將 OEM Database Express 網站切換至 Oracle JET 的任務，並傳回任務的 ID。

```
SELECT rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_jet() as TASK_ID from DUAL;
```

您可以透過顯示任務的輸出檔案來檢視結果。

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));
```

以程序傳回的任務 ID 取代 *`task-id`*。如需 Amazon RDS 程序 `rdsadmin.rds_file_util.read_text_file` 的詳細資訊，請參閱 [讀取資料庫執行個體目錄中的檔案](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles) 

您也可以透過 AWS 管理主控台 搜尋 **日誌與事件**區段中的日誌項目，在 中檢視任務輸出檔案的內容`task-id`。

## 移除 OEM 資料庫選項
<a name="Appendix.Oracle.Options.OEM_DBControl.Remove"></a>

您可以從資料庫執行個體中移除 OEM 選項。當您移除 OEM 選項時，因為執行個體會自動重新啟動，所以會發生短暫停機。因此，在您移除 OEM 選項之後，您並不需要重新啟動資料庫執行個體。

若要從資料庫執行個體中移除 OEM 選項，請執行下列其中一個動作：
+ 從其所屬的選項群組中移除 OEM 選項。此變更會影響使用選項群組的所有資料庫執行個體。如需更多詳細資訊，請參閱 [從選項群組移除選項](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)。
+ 修改資料庫執行個體，並指定不包括 OEM 選項的不同選項群組。此變更會影響單一資料庫執行個體。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

# 適用於 Enterprise Manager Cloud Control 的 Oracle Management Agent
<a name="Oracle.Options.OEMAgent"></a>

Oracle Enterprise Manager (OEM) Management Agent 是一項軟體元件，可監控主機上執行的目標，並將該資訊傳達給中間層 Oracle Management Service (OMS)。Amazon RDS 透過使用 `OEM_AGENT` 選項支援 Management Agent。

如需詳細資訊，請參閱 Oracle 文件中的 [Oracle Enterprise Manager Cloud Control 12c 的概觀](http://docs.oracle.com/cd/E24628_01/doc.121/e25353/overview.htm)和 [Oracle Enterprise Manager Cloud Control 13c 的概觀](http://docs.oracle.com/cd/E63000_01/EMCON/overview.htm#EMCON109)。

**Topics**
+ [

## Management Agent 的需求
](#Oracle.Options.OEMAgent.PreReqs)
+ [

## OMS 主機通訊先決條件
](#Oracle.Options.OEMAgent.PreReqs.host)
+ [

## Management Agent 的限制
](#Oracle.Options.OEMAgent.limitations)
+ [

## Management Agent 的選項設定
](#Oracle.Options.OEMAgent.Options)
+ [

## 為您的資料庫執行個體啟用 Management Agent 選項
](#Oracle.Options.OEMAgent.Enable)
+ [

## 移除 Management Agent 選項
](#Oracle.Options.OEMAgent.Remove)
+ [

## 使用 Management Agent 執行資料庫任務
](#Oracle.Options.OEMAgent.DBTasks)

## Management Agent 的需求
<a name="Oracle.Options.OEMAgent.PreReqs"></a>

以下是使用 Management Agent 的一般需求：
+ 您的資料庫執行個體必須執行 Oracle Database 19c (19.0.0.0)。您可以使用 CDB 或非 CDB 架構。
+ 您必須使用設定為連線至資料庫執行個體的 Oracle Management Service (OMS)。請注意下列 OMS 需求：
  + Management Agent 13.5.0.0.v2 和 13.5.0.0.v3 版需要 OMS 13.5.0.23 或 24.1 版。
  + Management Agent 13.5.0.0.v1 版需要 OMS 13.5.0.0 或 24.1 版。
  + Management Agent 13.4.0.9.v1 和 13.4.0.9.v2 版需要 OMS 13.4.0.9 版或更新版本，以及修補程式 32198287。
+ 在多數情況下，您需要將 VPC 設定為允許從 OMS 連線至資料庫執行個體。如果您不熟悉 Amazon Virtual Private Cloud (Amazon VPC)，建議您先完成[教學課程：建立要與資料庫執行個體搭配使用的 VPC (僅限 IPv4)](CHAP_Tutorials.WebServerDB.CreateVPC.md)中的步驟，再繼續操作。
+ 您可以使用 Management Agent 搭配 12c 和 13c 的 Oracle Enterprise Manager Cloud Control。請確定您有足夠的儲存空間供您的 OEM 版本使用：
  + OEM 13c 版本 5 至少 8.5 GiB
  + OEM 13c 發行版本 4 至少 8.5 GiB
  + OEM 13c 發行版本 3 至少 8.5 GiB
  + OEM 13c 發行版本 2 至少 5.5 GiB
  + OEM 13c 發行版本 1 至少 4.5 GiB
  + OEM 12c 至少 2.5 GiB
+ 如果您使用 Management Agent 版本 `OEM_AGENT 13.2.0.0.v3` 和 `13.3.0.0.v2`，而且想要使用 TCPS 連線，請遵循 Oracle 文件的[設定第三方憑證授權機構憑證來與目標資料庫通訊](https://docs.oracle.com/cd/E73210_01/EMSEC/GUID-8337AD48-1A32-4CD5-84F3-256FAE93D043.htm#EMSEC15996)中的指示。另外，遵循 Oracle 文件 (Oracle Doc ID 2241358.1) 中的指示，更新 OMS 上的 JDK。此步驟可確保只要是資料庫支援的密碼套件，OMS 也都支援。
**注意**  
Management Agent `OEM_AGENT 13.2.0.0.v3`、`13.3.0.0.v2`、`13.4.0.9.v1` 和更新版本支援 Management Agent 與資料庫執行個體之間的 TCPS 連線。

## OMS 主機通訊先決條件
<a name="Oracle.Options.OEMAgent.PreReqs.host"></a>

請確定您的 OMS 主機和 Amazon RDS 資料庫執行個體可以通訊。執行下列操作：
+ 若要在 OMS 主機位於防火牆後方的情況下從 Management Agent 連線至 OMS 主機，請將資料庫執行個體的 IP 位址新增至防火牆。請確定 OMS 的防火牆允許下列網路流量：  
從 OMS 主機到資料庫執行個體  
設定單向防火牆規則，允許從 OMS 主機到資料庫接聽程式連接埠 (預設為 1521) 和 OEM Agent 連接埠 (預設為 3872) 的流量。  
從資料庫執行個體到 OMS 主機  
設定單向防火牆規則，允許從資料庫執行個體到 OMS HTTP 連接埠 (預設為 4903) 的流量。
+ 若要從 OMS 連接至 Management Agent，如果 OMS 有可公開解析的主機名稱，請將 OMS 地址新增至安全群組。您的安全群組必須具備可允許存取資料庫接聽程式連接埠和 Management Agent 連接埠的傳入規則。如需建立安全性和新增傳入規則的範例，請參閱[教學課程：建立要與資料庫執行個體搭配使用的 VPC (僅限 IPv4)](CHAP_Tutorials.WebServerDB.CreateVPC.md)。
+ 若要從 OMS 連接至 Management Agent，如果 OMS 沒有可公開解析的主機名稱，請使用以下其中一個項目：
  + 如果您是在私有 VPC 的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上託管 OMS，則可將 VPC 對等設定為從 OMS 連接至 Management Agent。如需更多詳細資訊，請參閱 [由不同 VPC 中的 EC2 執行個體存取 VPC 中的資料庫執行個體](USER_VPC.Scenarios.md#USER_VPC.Scenario3)。
  + 如果 OMS 在現場部署中進行託管，您可以將 VPN 連接設定為允許從 OMS 存取 Management Agent。如需詳細資訊，請參閱[由用戶端應用程式透過網際網路存取 VPC 中的資料庫執行個體](USER_VPC.Scenarios.md#USER_VPC.Scenario4)或 [VPN 連接](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html)。
+ 若要將 OEM Management Agent 13.5.0.0 版 (v1-v3) 連線至 24.1 OMS 主機，請設定 `MINIMUM_TLS_VERSION` 以在組態選項中使用 TLS 1.2 通訊協定 `TLSv1.2`。

## Management Agent 的限制
<a name="Oracle.Options.OEMAgent.limitations"></a>

下面是使用 Management Agent 時的一些限制：
+ 您無法提供自訂 Oracle Management Agent 映像。
+ 不支援需要主機登入資料的管理任務 (例如：任務執行和資料庫修補)。
+ 不保證主機指標和程序清單可反映實際的系統狀態。因此，您不應該使用 OEM 來監控根檔案系統或掛載點檔案系統。如需監控作業系統的詳細資訊，請參閱[使用增強型監控來監控作業系統指標](USER_Monitoring.OS.md)。
+ 不支援自動探索。您必須手動新增資料庫目標。
+ OMS 模組可用性取決於您的資料庫版本。例如，資料庫效能診斷和調校模組僅供 Oracle Database Enterprise Edition 使用。
+ Management Agent 會耗用額外的記憶體和運算資源。如果在啟用 `OEM_AGENT` 選項之後遇到效能問題，建議您擴展至較大型的資料庫執行個體類別。如需更多詳細資訊，請參閱 [ 資料庫執行個體類別](Concepts.DBInstanceClass.md) 及 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。
+ 在 Amazon RDS 主機上執行 `OEM_AGENT` 的使用者沒有存取提醒日誌的作業系統存取權。因此，無法在 OEM 中收集 `DB Alert Log` 和 `DB Alert Log Error Status` 的指標。

## Management Agent 的選項設定
<a name="Oracle.Options.OEMAgent.Options"></a>

Amazon RDS 支援 Management Agent 選項的下列設定。


| 選項設定 | 必要 | 有效值 | 描述 | 
| --- | --- | --- | --- | 
|  **版本** (`AGENT_VERSION`)  |  是  |  `13.5.0.0.v3` `13.5.0.0.v2` `13.5.0.0.v1` `13.4.0.9.v2` `13.4.0.9.v1` `13.3.0.0.v2` `13.3.0.0.v1` `13.2.0.0.v3` `13.2.0.0.v2` `13.2.0.0.v1` `13.1.0.0.v1`  |  Management Agent 軟體的版本。最低的支援版本為 `13.1.0.0.v1`。  AWS CLI 選項名稱為 `OptionVersion`。  在 AWS GovCloud (US) 區域中，無法使用 13.1 版本。   | 
|  **連接埠** (`AGENT_PORT`)  |  是  |  整數值  |  資料庫執行個體上接聽 OMS 主機的連接埠。預設為 3872。您的 OMS 主機必須屬於可存取此連接埠的安全群組。  AWS CLI 選項名稱為 `Port`。  | 
|  **安全群組**  |  是  |  現有的安全群組  |  有權存取 **Port (連接埠)** 的安全群組。您的 OMS 主機必須屬於此安全群組。  AWS CLI 選項名稱為 `VpcSecurityGroupMemberships`或 `DBSecurityGroupMemberships`。  | 
|  **OMS\$1HOST**  |  是  |  字串值，例如 *my.example.oms*   |  OMS 可公開存取的主機名稱或 IP 地址。  AWS CLI 選項名稱為 `OMS_HOST`。  | 
|  **OMS\$1PORT**  |  是  |  整數值  |  OMS 主機上接聽 Management Agent 的 HTTPS 上傳連接埠。 若要判斷 HTTPS 上傳連接埠，請連接至 OMS 主機並執行下列命令 (此命令需要 `SYSMAN` 密碼)： emctl status oms -details   AWS CLI 選項名稱為 `OMS_PORT`。  | 
|  **AGENT\$1REGISTRATION\$1PASSWORD**  |  是  |  字串值  |  Management Agent 用來向 OMS 驗證自己的密碼。建議您在 OMS 中建立一致的密碼，之後再啟用 `OEM_AGENT` 選項。您可以利用一致的密碼，在多個 Amazon RDS 資料庫間共用單一的 Management Agent 選項群組。  AWS CLI 選項名稱為 `AGENT_REGISTRATION_PASSWORD`。  | 
|  **ALLOW\$1TLS\$1ONLY**  |  否  |  `true`、`false` (預設)  |  值：將 OEM 代理程式設定為做為伺服器接聽時，只支援 `TLSv1` 通訊協定。不再支援此設定。根據預設，Management Agent 13.1.0.0.v1 版和更高版本支援 Transport Layer Security (TLS)。  | 
|  **MINIMUM\$1TLS\$1VERSION**  |  否  |  `TLSv1`、 (預設)`TLSv1.2`  |  值，將 OEM 代理程式做為伺服器接聽時，指定代理程式支援的最低 TLS 版本。已取消支援的代理程式版本僅支援 `TLSv1` 設定。 若要將 13.5.0.0 (v1-v3) 連線至 24.1 OMS 主機，請將其設定為 `TLSv1.2`。  | 
|  **TLS\$1CIPHER\$1SUITE**  |  否  |  請參閱 [Management Agent 的選項設定](#Oracle.Options.OEMAgent.Options)。  |  值，將 OEM 代理程式做為伺服器接聽時，指定代理程式使用的 TLS 密碼套件。  | 

下表列出 Management Agent 選項支援的 TLS 密碼套件。


| 密碼套件 | 支援的代理程式版本 | FedRAMP 合規 | 
| --- | --- | --- | 
| TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 全部 | 否 | 
| TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 | 13.1.0.0.v1 和更高版本 | 否 | 
| TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 13.2.0.0.v3 和更高版本 | 否 | 
| TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA256 | 13.2.0.0.v3 和更高版本 | 否 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 13.2.0.0.v3 和更高版本 | 是 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 13.2.0.0.v3 和更高版本 | 是 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 | 13.2.0.0.v3 和更高版本 | 是 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 | 13.2.0.0.v3 和更高版本 | 是 | 
| TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 | 13.4.0.9.v1 和更高版本 | 是 | 
| TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 | 13.4.0.9.v1 和更高版本 | 是 | 

### 憑證與密碼套件的相容性
<a name="Oracle.Options.OEMAgent.CertificateCompatibility"></a>

RDS for Oracle 支援 RSA 和橢圓曲線數位簽章演算法 (ECDSA) 憑證。當您為資料庫執行個體設定 OEM Agent 選項時，必須確保您在 `TLS_CIPHER_SUITE` 選項設定中指定的密碼套件與資料庫執行個體所使用的憑證類型相容。

下表顯示憑證類型與密碼套件之間的相容性：


| 憑證類型 | 相容的密碼套件 | 不相容的密碼套件 | 
| --- | --- | --- | 
| RSA 憑證 (rds-ca-2019、rds-ca-rsa2048-g1、rds-ca-rsa4096-g1) |  TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  |  TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  | 
| ECDSA 憑證 (rds-ca-ecc384-g1) |  TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  |  TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  | 

當您在 `TLS_CIPHER_SUITE` 選項設定中指定密碼套件時，請確定它與資料庫執行個體所使用的憑證類型相容。如果您嘗試將選項群組與一個 OEM Agent 選項建立關聯，但其中包含與資料庫執行個體的憑證類型不相容的密碼套件，則操作將會失敗，並出現指出不相容的錯誤訊息。

## 為您的資料庫執行個體啟用 Management Agent 選項
<a name="Oracle.Options.OEMAgent.Enable"></a>

若要啟用 Management Agent 選項，請使用下列步驟：

**Topics**
+ [

### 步驟 1：將 Management Agent 選項新增至資料庫執行個體
](#Oracle.Options.OEMAgent.Add)
+ [

### 步驟 2：將 DBSNMP 使用者帳戶解除鎖定
](#Oracle.Options.OEMAgent.DBSNMP)
+ [

### 步驟 3：將目標新增至 Management Agent 主控台
](#Oracle.Options.OEMAgent.Using)

### 步驟 1：將 Management Agent 選項新增至資料庫執行個體
<a name="Oracle.Options.OEMAgent.Add"></a>

若要將 Management Agent 選項新增至資料庫執行個體，請執行下列動作：

1. 建立新的選項群組，或是複製或修改現有選項群組。

1. 將選項新增至選項群組。

1. 將選項群組與資料庫執行個體建立關聯。

如果您遇到錯誤，可以查看 [My Oracle 支援](https://support.oracle.com/)文件，以取得解決特定問題的相關資訊。

新增 Management Agent 選項之後，您並不需要重新啟動資料庫執行個體。選項群組開始作用後，OEM Agent 就會處於作用中狀態。

如果 OMS 主機使用的是不受信任的第三方憑證，則 Amazon RDS 會傳回下列錯誤。

```
You successfully installed the OEM_AGENT option. Your OMS host is using an untrusted third party certificate. 
Configure your OMS host with the trusted certificates from your third party.
```

系統傳回錯誤後，Management Agent 選項將無法啟用，直到該問題修正為止。如需修正問題的相關資訊，請參閱 My Oracle 支援文件 [2202569.1](https://support.oracle.com/epmos/faces/DocContentDisplay?id=2202569.1)。

#### 主控台
<a name="Oracle.Options.OEMAgent.Add.Console"></a>

**將 Management Agent 選項新增至資料庫執行個體**

1. 判斷要使用的選項群組。您可以建立新的選項群組或使用現有的選項群組。如果您要使用現有的選項群組，請跳到下一個步驟。否則請使用下列設定來建立自訂資料庫選項群組：

   1. 針對 **Engine (引擎)**，選擇適用於資料庫執行個體的 Oracle 版本。

   1. 針對 **Major engine version (主要引擎版本)**，請選擇適用於資料庫執行個體的版本。

   如需更多詳細資訊，請參閱 [建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 **OEM\$1AGENT** 選項新增至選項群組，並設定選項設定。如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。如需每項設定的詳細資訊，請參閱[Management Agent 的選項設定](#Oracle.Options.OEMAgent.Options)。

1. 將選項群組套用至新的或現有的資料庫執行個體：
   + 針對新的資料庫執行個體，您會在啟動執行個體時套用選項群組。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
   + 針對現有的資料庫執行個體，您可以透過修改執行個體並附加新的選項群組來套用選項群組。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

#### AWS CLI
<a name="Oracle.Options.OEMAgent.Add.CLI"></a>

下列範例使用 AWS CLI [add-option-to-option-group](https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html) 命令，將 `OEM_AGENT`選項新增至名為 的選項群組`myoptiongroup`。

針對 Linux、macOS 或 Unix：

```
aws rds add-option-to-option-group \
    --option-group-name "myoptiongroup" \
    --options OptionName=OEM_AGENT,OptionVersion=13.1.0.0.v1,Port=3872,VpcSecurityGroupMemberships=sg-1234567890,OptionSettings=[{Name=OMS_HOST,Value=my.example.oms},{Name=OMS_PORT,Value=4903},{Name=AGENT_REGISTRATION_PASSWORD,Value=password}] \
    --apply-immediately
```

在 Windows 中：

```
aws rds add-option-to-option-group ^
    --option-group-name "myoptiongroup" ^
    --options OptionName=OEM_AGENT,OptionVersion=13.1.0.0.v1,Port=3872,VpcSecurityGroupMemberships=sg-1234567890,OptionSettings=[{Name=OMS_HOST,Value=my.example.oms},{Name=OMS_PORT,Value=4903},{Name=AGENT_REGISTRATION_PASSWORD,Value=password}] ^
    --apply-immediately
```

### 步驟 2：將 DBSNMP 使用者帳戶解除鎖定
<a name="Oracle.Options.OEMAgent.DBSNMP"></a>

Management Agent 會使用 `DBSNMP` 使用者帳戶連線至資料庫，並向 Oracle Enterprise Manager 報告問題。在 CDB 中，`DBSNMP` 是常見的使用者。Management Agent 和 OEM Database Express 都需要此使用者帳戶。依預設會鎖定此帳戶。將此帳戶解除鎖定的程序，會根據資料庫使用非 CDB 還是 CDB 架構而有所不同。

**將 DBSNMP 使用者帳戶解除鎖定**

1. 在 SQL\$1Plus 或其他 Oracle SQL 應用程式中，以主要使用者身分登入資料庫執行個體。

1. 根據資料庫架構，執行下列任一動作：  
**您的資料庫不是 CDB。**  
執行下列 SQL 陳述式：  

   ```
   1. ALTER USER dbsnmp IDENTIFIED BY new_password ACCOUNT UNLOCK;
   ```  
**您的資料庫是 CDB。**  
執行下列預存程序將 `DBSNMP` 帳戶解除鎖定：  

   ```
   1. EXEC rdsadmin.rdsadmin_util.reset_oem_agent_password('new_password');
   ```
如果您收到錯誤，指出程序不存在，請將 CDB 執行個體重新開機以自動安裝。如需詳細資訊，請參閱[在資料庫執行個體](USER_RebootInstance.md)。

### 步驟 3：將目標新增至 Management Agent 主控台
<a name="Oracle.Options.OEMAgent.Using"></a>

若要新增資料庫執行個體做為目標，請確定您知道端點和連接埠。如需尋找 Amazon RDS 資料庫執行個體端點的相關資訊，請參閱[尋找您的 RDS for Oracle 資料庫執行個體的端點](USER_Endpoint.md)。如果您的資料庫使用 CDB 架構，請個別新增 `CDB$ROOT` 容器做為目標。

**將目標新增至 Management Agent 主控台**

1. 在您的 OMS 主控台中，依序選擇 **Setup (設定)**、**Add Target (新增目標)**、**Add Targets Manually (手動新增目標)**。

1. 選擇 **Add Targets Declaratively by Specifying Target Monitoring Properties (透過指定目標監控屬性以宣告方式新增目標)**。

1. 針對 **Target Type (目標類型)**，選擇 **Database Instance (資料庫執行個體)**。

1. 針對 **Monitoring Agent** (監控代理程式)，選擇具有與 RDS 資料庫執行個體識別碼相同之識別碼的代理程式。

1. 選擇 **Add Manually (手動新增)**。

1. 輸入 Amazon RDS 資料庫執行個體的端點，或從主機名稱清單中選擇。確定指定的主機名稱符合 Amazon RDS 資料庫執行個體的端點。

1. 指定下列資料庫屬性：
   + 針對 **Target name (目標名稱)**，輸入名稱。
   + 針對 **Database system name (資料庫系統名稱)**，輸入名稱。
   + 針對 **Monitor username (監控使用者名稱)**，輸入 **dbsnmp**。
   + 針對**監控密碼**，輸入來自 [步驟 2：將 DBSNMP 使用者帳戶解除鎖定](#Oracle.Options.OEMAgent.DBSNMP) 的密碼。
   + 針對 **Role (角色)**，輸入 **normal (一般)**。
   + 針對 **Oracle home path (Oracle 主目錄)**，輸入 **/oracle**。
   + 針對 **Listener Machine name (接聽程式機器名稱)**，代理程式識別符已顯示。
   + 針對 **Port (連接埠)**，輸入資料庫連接埠。RDS 的預設連接埠為 1521。
   + 針對 **Database name (資料庫名稱)**，輸入資料庫的名稱。如果您的資料庫是 CDB，則此名稱為 `RDSCDB`。

1. 選擇 **Test Connection (測試連接)**。

1. 選擇**下一步**。目標資料庫會出現在您監控的資源清單中。

## 移除 Management Agent 選項
<a name="Oracle.Options.OEMAgent.Remove"></a>

您可以從資料庫執行個體中移除 OEM Agent。移除 OEM Agent 之後，您並不需要重新啟動資料庫執行個體。

若要從資料庫執行個體中移除 OEM Agent，請執行下列其中一個動作：
+ 從其所屬的選項群組中移除 OEM Agent 選項。此變更會影響使用選項群組的所有資料庫執行個體。如需更多詳細資訊，請參閱 [從選項群組移除選項](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)。
+ 修改資料庫執行個體，並指定不包括 OEM Agent 的不同選項群組。此變更會影響單一資料庫執行個體。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## 使用 Management Agent 執行資料庫任務
<a name="Oracle.Options.OEMAgent.DBTasks"></a>

您可以使用 Amazon RDS 程序在 Management Agent 上執行特定的 EMCTL 指令。透過執行這些程序，您可以完成下方列出的任務。

**注意**  
任務是以非同步方式執行。

**Topics**
+ [

### 保護 Management Agent
](#Oracle.Options.OEMAgent.DBTasks.SecureAgent)
+ [

### 取得 Management Agent 的狀態
](#Oracle.Options.OEMAgent.DBTasks.GetAgentStatus)
+ [

### 重新啟動 Management Agent
](#Oracle.Options.OEMAgent.DBTasks.RestartAgent)
+ [

### 列出 Management Agent 監控的目標
](#Oracle.Options.OEMAgent.DBTasks.ListTargets)
+ [

### 列出 Management Agent 監控的收集執行緒
](#Oracle.Options.OEMAgent.DBTasks.ListCollectionThreads)
+ [

### 清除 Management Agent 狀態
](#Oracle.Options.OEMAgent.DBTasks.ClearState)
+ [

### 讓 Management Agent 上傳其 OMS
](#Oracle.Options.OEMAgent.DBTasks.ForceUploadOMS)
+ [

### 抓取 OMS
](#Oracle.Options.OEMAgent.DBTasks.PingOMS)
+ [

### 檢視進行中任務的狀態
](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)

### 保護 Management Agent
<a name="Oracle.Options.OEMAgent.DBTasks.SecureAgent"></a>

若要保護 Management Agent，請執行 Amazon RDS 程序 `rdsadmin.rdsadmin_oem_agent_tasks.secure_oem_agent`。此程序相當於執行 `emctl secure agent` 命令。

下列程序會建立一個任務，用以保護 Management Agent 並傳回任務 ID：

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.secure_oem_agent as TASK_ID from DUAL;
```

若要顯示任務的輸出檔案並檢視結果，請參閱 [檢視進行中任務的狀態](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)。

### 取得 Management Agent 的狀態
<a name="Oracle.Options.OEMAgent.DBTasks.GetAgentStatus"></a>

若要取得 Management Agent 的狀態，請執行 Amazon RDS 程序 `rdsadmin.rdsadmin_oem_agent_tasks.get_status_oem_agent`。此程序相當於 `emctl status agent` 命令。

以下程序會建立任務，取得管理代理程式的狀態並傳回任務 ID。

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.get_status_oem_agent() as TASK_ID from DUAL;
```

若要顯示任務的輸出檔案並檢視結果，請參閱 [檢視進行中任務的狀態](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)。

### 重新啟動 Management Agent
<a name="Oracle.Options.OEMAgent.DBTasks.RestartAgent"></a>

若要重新啟動 Management Agent，請執行 Amazon RDS 程序 `rdsadmin.rdsadmin_oem_agent_tasks.restart_oem_agent`。此程序相當於執行 `emctl stop agent` 和 `emctl start agent` 命令。

以下程序會建立任務，以重新啟動 Management Agent 並傳回任務 ID。

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.restart_oem_agent as TASK_ID from DUAL;    
```

若要顯示任務的輸出檔案並檢視結果，請參閱 [檢視進行中任務的狀態](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)。

### 列出 Management Agent 監控的目標
<a name="Oracle.Options.OEMAgent.DBTasks.ListTargets"></a>

若要列出 Management Agent 監控的目標，請執行 Amazon RDS 程序 `rdsadmin.rdsadmin_oem_agent_tasks.list_targets_oem_agent`。此程序相當於執行 `emctl config agent listtargets` 命令。

以下程序會建立任務，以列出 Management Agent 所監控的目標並傳回任務 ID。

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.list_targets_oem_agent as TASK_ID from DUAL;
```

若要顯示任務的輸出檔案並檢視結果，請參閱 [檢視進行中任務的狀態](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)。

### 列出 Management Agent 監控的收集執行緒
<a name="Oracle.Options.OEMAgent.DBTasks.ListCollectionThreads"></a>

若要列出 Management Agent 監控的所有執行中、就緒和排定的收集執行緒，請執行 Amazon RDS 程序 `rdsadmin.rdsadmin_oem_agent_tasks.list_clxn_threads_oem_agent`。此程序相當於 `emctl status agent scheduler` 命令。

以下程序會建立任務，以列出收集執行緒並傳回任務 ID。

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.list_clxn_threads_oem_agent() as TASK_ID from DUAL;          
```

若要顯示任務的輸出檔案並檢視結果，請參閱 [檢視進行中任務的狀態](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)。

### 清除 Management Agent 狀態
<a name="Oracle.Options.OEMAgent.DBTasks.ClearState"></a>

若要清除 Management Agent 狀態，請執行 Amazon RDS 程序 `rdsadmin.rdsadmin_oem_agent_tasks.clearstate_oem_agent`。此程序相當於執行 `emctl clearstate agent` 命令。

以下程序會建立任務，清除 Management Agent 的狀態並傳回任務 ID。

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.clearstate_oem_agent() as TASK_ID from DUAL;
```

若要顯示任務的輸出檔案並檢視結果，請參閱 [檢視進行中任務的狀態](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)。

### 讓 Management Agent 上傳其 OMS
<a name="Oracle.Options.OEMAgent.DBTasks.ForceUploadOMS"></a>

若要讓 Management Agent 上傳與其相關的 Oracle 管理伺服器 (OMS)，請執行 Amazon RDS 程序 `rdsadmin.rdsadmin_oem_agent_tasks.upload_oem_agent`。此程序相當於執行 `emclt upload agent` 命令。

以下程序會建立任務，讓 Management Agent 上傳其相關的 OMS，並傳回任務 ID。

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.upload_oem_agent() as TASK_ID from DUAL;
```

若要顯示任務的輸出檔案並檢視結果，請參閱 [檢視進行中任務的狀態](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)。

### 抓取 OMS
<a name="Oracle.Options.OEMAgent.DBTasks.PingOMS"></a>

若要抓取 Management Agent 的 OMS，請執行 Amazon RDS 程序 `rdsadmin.rdsadmin_oem_agent_tasks.ping_oms_oem_agent`。此程序相當於執行 `emctl pingOMS` 命令。

以下程序會建立任務，取得 Management Agent 的 OMS 並傳回任務 ID。

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.ping_oms_oem_agent() as TASK_ID from DUAL;
```

若要顯示任務的輸出檔案並檢視結果，請參閱 [檢視進行中任務的狀態](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)。

### 檢視進行中任務的狀態
<a name="Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus"></a>

您可在 bdump 檔案之中，檢視進行中作業的狀態。bdump 檔案位在 `/rdsdbdata/log/trace` 目錄：每個 bdump 檔案的名稱格式如下。

```
dbtask-task-id.log 
```

當您想要監控任務時，將 `task-id` 替換為您要監控作業的 ID。

若要檢視 bdump 檔案的內容，請執行 Amazon RDS 程序 `rdsadmin.rds_file_util.read_text_file`。以下查詢會傳回 `dbtask-1546988886389-2444.log` bdump 檔案的內容。

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1546988886389-2444.log'));
```

如需 Amazon RDS 程序 `rdsadmin.rds_file_util.read_text_file` 的詳細資訊，請參閱 [讀取資料庫執行個體目錄中的檔案](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles)。

# Oracle Label Security
<a name="Oracle.Options.OLS"></a>

Amazon RDS 透過使用 OLS 選項支援 Oracle Database 的 Oracle Label Security for the Enterprise Edition。

大部分的資料庫安全機制可控制物件層級的存取。Oracle Label Security 可對個別資料表列的存取提供精細分級的控制。例如，您可以使用 Label Security，以政策型管理模型來強制執行法規遵循。您可以使用 Label Security 政策，控制機密資料的存取，並限制僅具有適當許可層級的使用者才能存取。如需詳細資訊，請參閱 Oracle 文件中的[簡介 Oracle Label Security](https://docs.oracle.com/database/121/OLSAG/intro.htm#OLSAG001)。

**Topics**
+ [

## Oracle Label Security 的需求
](#Oracle.Options.OLS.PreReqs)
+ [

## 使用 Oracle Label Security 時的考量
](#Oracle.Options.OLS.Using)
+ [

## 新增 Oracle Label Security 選項
](#Oracle.Options.OLS.Add)
+ [

## 疑難排解
](#Oracle.Options.OLS.Troubleshooting)

## Oracle Label Security 的需求
<a name="Oracle.Options.OLS.PreReqs"></a>

熟悉 Oracle Label Security 的下列需求：
+ 您的資料庫執行個體必須使用「使用自有授權」模型。如需更多詳細資訊，請參閱 [RDS for Oracle 授權選項](Oracle.Concepts.Licensing.md)。
+ 您必須對具有軟體更新授權和支援的 Oracle Enterprise Edition 具備有效的授權。
+ 您的 Oracle 授權必須包括 Label Security 選項。

## 使用 Oracle Label Security 時的考量
<a name="Oracle.Options.OLS.Using"></a>

若要使用 Oracle Label Security，您可以建立政策，控制資料表中特定資料列的存取。如需詳細資訊，請參閱 Oracle 文件中的[建立 Oracle Label Security 原則](https://docs.oracle.com/database/121/OLSAG/getstrtd.htm#OLSAG3096)。

考慮下列各項：
+ Oracle Label Security 是永久且持續的選項。因為此選項是永久的，所以您無法從選項群組中將其移除。如果您將 Oracle Label Security 新增至選項群組，並將其與資料庫執行個體建立關聯，則稍後可以將不同的選項群組與資料庫執行個體建立關聯，但此群組也必須包含 Oracle Label Security 選項。
+ 使用 Label Security 時，您會以 `LBAC_DBA` 角色執行所有動作。資料庫執行個體的主要使用者會被授予 `LBAC_DBA` 角色。您可以將 `LBAC_DBA` 角色授予其他使用者，使其能夠管理 Label Security 政策。
+ 請確實將 `OLS_ENFORCEMENT` 套件的存取權授予需要存取 Oracle Label Security 的任何新使用者：若要授予 `OLS_ENFORCEMENT` 套件的存取權，請以主要使用者身分連接至資料庫執行個體，然後執行下列 SQL 陳述式：

  ```
  GRANT ALL ON LBACSYS.OLS_ENFORCEMENT TO username;
  ```
+ 您可以透過 Oracle Enterprise Manager (OEM) Cloud Control 來設定 Label Security。Amazon RDS 可藉由 Management Agent 選項支援 OEM Cloud Control。如需詳細資訊，請參閱[適用於 Enterprise Manager Cloud Control 的 Oracle Management Agent](Oracle.Options.OEMAgent.md)。

## 新增 Oracle Label Security 選項
<a name="Oracle.Options.OLS.Add"></a>

將 Oracle Label Security 選項新增至資料庫執行個體的一般程序如下：

1. 建立新的選項群組，或是複製或修改現有選項群組。

1. 將選項新增至選項群組。
**重要**  
Oracle Label Security 是永久且持續的選項。

1. 將選項群組與資料庫執行個體建立關聯。

在新增 Label Security 選項之後，只要選項群組為作用中狀態，Label Security 就會為作用中狀態。

**將 Label Security 選項新增至資料庫執行個體**

1. 判斷要使用的選項群組。您可以建立新的選項群組或使用現有的選項群組。如果您要使用現有的選項群組，請跳到下一個步驟。否則請使用下列設定來建立自訂資料庫選項群組：

   1. 針對 **Engine (引擎)**，選擇 **oracle-ee**。

   1. 針對 **Major engine version (主要引擎版本)**，請選擇您資料庫執行個體的版本。

   如需更多詳細資訊，請參閱 [建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 **OLS** 選項新增至選項群組。如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。
**重要**  
如果您將 Label Security 新增至已附加至一個或多個資料庫執行個體的現有選項群組，則所有資料庫執行個體都會重新啟動。

1. 將選項群組套用至新的或現有的資料庫執行個體：
   + 針對新的資料庫執行個體，您會在啟動執行個體時套用選項群組。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。

      
   + 針對現有的資料庫執行個體，您可以透過修改執行個體並附加新的選項群組來套用選項群組。當您將 Label Security 選項新增至現有的資料庫執行個體時，在資料庫執行個體自動重新啟動時會發生短暫的停機。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## 疑難排解
<a name="Oracle.Options.OLS.Troubleshooting"></a>

下列是您使用 Oracle Label Security 時可能遇到的問題。


****  

| 問題 | 故障診斷建議 | 
| --- | --- | 
|  當您嘗試建立政策時，您會看到如下的錯誤訊息：`insufficient authorization for the SYSDBA package`。  |  Oracle Label Security 功能的已知問題會防止使用者名稱有 16 或 24 個字元的使用者執行 Label Security 命令。您可以建立字元數不同的新使用者、將 LBAC\$1DBA 授予新使用者、以新使用者身分登入，並以新使用者身分執行 OLS 命令。如需其他資訊，請聯絡 Oracle 支援。  | 

# Oracle Locator
<a name="Oracle.Options.Locator"></a>

Amazon RDS 會使用 `LOCATOR` 選項，藉此支援 Oracle Locator。Oracle Locator 提供通常支援下列項目所需的功能：網際網路和無線服務型應用程式和合作夥伴型 GIS 解決方案。Oracle Locator 是功能有限的 Oracle Spatial 子集。如需詳細資訊，請參閱 Oracle 文件中的 [Oracle Locator](https://docs.oracle.com/database/121/SPATL/sdo_locator.htm#SPATL340)。

**重要**  
如果您使用 Oracle Locator，若有通用漏洞評估系統 (CVSS) 分數 9 分以上的安全漏洞或其他公布的安全漏洞，Amazon RDS 會將您的資料庫執行個體自動更新為最新的 Oracle PSU。

## Oracle Locator 支援的資料庫版本
<a name="Oracle.Options.Locator.Releases"></a>

RDS for Oracle 支援 Oracle Database 19c 的 Oracle Locator。Oracle Database 21c 不支援 Oracle Locator，但其功能可在 Oracle Spatial 選項中使用。以前，Spatial 選項需要額外的授權。Oracle Locator 過去代表 Oracle Spatial 功能的子集，當時並不需要額外的授權。2019 年，Oracle 宣佈所有 Oracle Spatial 功能都包含在 Enterprise Edition 和 Standard Edition 2 授權中，無需額外費用。因此，Oracle Spatial 選項不再需要額外的授權。如需詳細資訊，請參閱 Oracle Database Insider 部落格中的[機器學習、Spatial 和 Graph - 無需授權！](https://blogs.oracle.com/database/post/machine-learning-spatial-and-graph-no-license-required)。

## Oracle Locator 的先決條件
<a name="Oracle.Options.Locator.PreReqs"></a>

下列是使用 Oracle Locator 的先決條件：
+ 您的資料庫執行個體必須具有足夠的類別。db.t3.small 資料庫執行個體類別不支援 Oracle Locator。如需詳細資訊，請參閱[RDS for Oracle 資料庫執行個體類別](Oracle.Concepts.InstanceClasses.md)。
+ 您的資料庫執行個體必須將**自動次要版本升級**啟用。此選項可讓資料庫執行個體自動接收可用的次要資料庫引擎版本升級，而且是安裝 Oracle Java Virtual Machine (JVM) 之任何選項的必要項目。Amazon RDS 使用此選項將您的資料庫執行個體更新為最新版 Oracle 修補程式集更新 (PSU) 或版本更新 (RU)。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## Oracle Locator 的最佳實務
<a name="Oracle.Options.Locator.BestPractces"></a>

下列是使用 Oracle Locator 的最佳實務：
+ 為了將安全性提升至最高，請使用 `LOCATOR` 選項搭配 Secure Sockets Layer (SSL)。如需更多詳細資訊，請參閱 [Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md)。
+ 設定資料庫執行個體以限制對資料庫執行個體的存取。如需更多詳細資訊，請參閱 [在 VPC 中存取資料庫執行個體的案例](USER_VPC.Scenarios.md) 及 [在 VPC 中使用資料庫執行個體](USER_VPC.WorkingWithRDSInstanceinaVPC.md)。

## 新增 Oracle Locator 選項
<a name="Oracle.Options.Locator.Add"></a>

下列是將 `LOCATOR` 選項新增至資料庫執行個體的一般程序：

1. 建立新的選項群組，或是複製或修改現有選項群組。

1. 將選項新增至選項群組。

1. 將選項群組與資料庫執行個體建立關聯。

如果 Oracle Java Virtual Machine (JVM) *未*安裝在資料庫執行個體上，則在新增 `LOCATOR` 選項時，會發生短暫當機現象。如果已經在資料庫執行個體上安裝 Oracle Java Virtual Machine (JVM)，則不會發生停機現象。在您新增選項之後，就不需要重新啟動資料庫執行個體。只要選項群組為作用中，Oracle Locator 就可使用。

**注意**  
在中斷過程中，密碼驗證功能將會短暫停用。在中斷過程中，您也可以預期將會看到與密碼驗證功能相關的事件。在 Oracle 資料庫執行個體可用之前，密碼驗證功能將會再次啟用。

**將 `LOCATOR` 選項新增至資料庫執行個體**

1. 判斷要使用的選項群組。您可以建立新的選項群組或使用現有的選項群組。如果您要使用現有的選項群組，請跳到下一個步驟。否則請使用下列設定來建立自訂資料庫選項群組：

   1. 針對 **Engine (引擎)**，選擇適用於資料庫執行個體的 Oracle 版本。

   1. 針對 **Major engine version (主要引擎版本)**，請選擇您資料庫執行個體的版本。

   如需更多詳細資訊，請參閱 [建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 **LOCATOR** 選項新增至選項群組。如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

1. 將選項群組套用至新的或現有的資料庫執行個體：
   + 針對新的資料庫執行個體，您會在啟動執行個體時套用選項群組。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
   + 針對現有的資料庫執行個體，您可以透過修改執行個體並附加新的選項群組來套用選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## 使用 Oracle Locator
<a name="Oracle.Options.Locator.Using"></a>

在啟用 Oracle Locator 選項之後，您可以開始使用它。您應該只使用 Oracle Locator 功能。不要使用任何 Oracle Spatial 功能，除非您有 Oracle Spatial 的所有授權。

如需 Oracle Locator 支援之功能的清單，請參閱 Oracle 文件中的 [Locator 隨附的功能](https://docs.oracle.com/database/121/SPATL/sdo_locator.htm#GUID-EC6DEA23-8FD7-4109-A0C1-93C0CE3D6FF2__CFACCEEG)。

如需 Oracle Locator 不支援之功能的清單，請參閱 Oracle 文件中的 [Locator 未隨附的功能](https://docs.oracle.com/database/121/SPATL/sdo_locator.htm#GUID-EC6DEA23-8FD7-4109-A0C1-93C0CE3D6FF2__CFABACEA)。

## 移除 Oracle Locator 選項
<a name="Oracle.Options.Locator.Remove"></a>

捨棄使用該 `LOCATOR` 選項提供之資料類型的所有物件後，您可以從資料庫執行個體移除該選項。如果 Oracle Java Virtual Machine (JVM) *未*安裝在資料庫執行個體上，則在移除 `LOCATOR` 選項時，會發生短暫當機現象。如果已經在資料庫執行個體上安裝 Oracle Java Virtual Machine (JVM)，則不會發生停機現象。移除 `LOCATOR` 選項之後，就不需要重新啟動資料庫執行個體。

**捨棄 `LOCATOR` 選項**

1. 備份您的資料。
**警告**  
如果執行個體使用已啟用做為選項一部分的資料類型，而且如果您移除該 `LOCATOR` 選項，則可能會遺失資料。如需更多詳細資訊，請參閱 [備份、還原和匯出資料](CHAP_CommonTasks.BackupRestore.md)。

1. 檢查是否有任何現有物件參考資料類型或 `LOCATOR` 選項的功能。

   如果 `LOCATOR` 選項存在，則在套用沒有 `LOCATOR` 選項的新選項群組時，執行個體可能會停滯。您可以使用下列查詢以識別物件：

   ```
   SELECT OWNER, SEGMENT_NAME, TABLESPACE_NAME, BYTES/1024/1024 mbytes
   FROM   DBA_SEGMENTS
   WHERE  SEGMENT_TYPE LIKE '%TABLE%'
   AND    (OWNER, SEGMENT_NAME) IN
          (SELECT DISTINCT OWNER, TABLE_NAME 
           FROM   DBA_TAB_COLUMNS
           WHERE  DATA_TYPE='SDO_GEOMETRY'
           AND    OWNER <> 'MDSYS')
   ORDER BY 1,2,3,4;
   
   SELECT OWNER, TABLE_NAME, COLUMN_NAME
   FROM   DBA_TAB_COLUMNS 
   WHERE  DATA_TYPE = 'SDO_GEOMETRY' 
   AND    OWNER <> 'MDSYS' 
   ORDER BY 1,2,3;
   ```

1. 捨棄參考資料類型或 `LOCATOR` 選項功能的所有物件。

1. 請執行下列其中一項：
   + 從其所屬的選項群組中移除 `LOCATOR` 選項。此變更會影響使用選項群組的所有資料庫執行個體。如需更多詳細資訊，請參閱 [從選項群組移除選項](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)。
   + 修改資料庫執行個體，並指定不包括 `LOCATOR` 選項的不同選項群組。此變更會影響單一資料庫執行個體。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

# Oracle 原生網路加密
<a name="Appendix.Oracle.Options.NetworkEncryption"></a>

Amazon RDS 支援 Oracle 原生網路加密 (NNE)。使用 `NATIVE_NETWORK_ENCRYPTION` 選項，您可以在資料移入和移出資料庫執行個體時加密資料。Amazon RDS 可支援 Oracle 資料庫所有版本的 NNE。

Oracle 原生網路加密的詳細討論超出本指南的範圍，但是在決定要使用哪個解決方案進行部署之前，您應該瞭解每一個演算法和金鑰的優缺點。如需可透過 Oracle 原生網路加密使用之演算法和金鑰的相關資訊，請參閱 Oracle 文件中的[配置網路資料加密](http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/11g/r2/prod/security/network_encrypt/ntwrkencrypt.htm)。如需 AWS 安全性的詳細資訊，請造訪 [AWS 安全中心](https://aws.amazon.com/security)。

**注意**  
您可以使用原生網路加密或 Secure Sockets Layer，但不能同時使用兩者。如需更多詳細資訊，請參閱 [Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md)。

**Topics**
+ [

# NATIVE\$1NETWORK\$1ENCRYPTION 選項設定
](Oracle.Options.NNE.Options.md)
+ [

# 新增 NATIVE\$1NETWORK\$1ENCRYPTION 選項
](Oracle.Options.NNE.Add.md)
+ [

# 在 sqlnet.ora 中設定 NNE 值
](Oracle.Options.NNE.Using.md)
+ [

# 修改 NATIVE\$1NETWORK\$1ENCRYPTION 選項設定
](Oracle.Options.NNE.ModifySettings.md)
+ [

# 移除 NATIVE\$1NETWORK\$1ENCRYPTION 選項
](Oracle.Options.NNE.Remove.md)

# NATIVE\$1NETWORK\$1ENCRYPTION 選項設定
<a name="Oracle.Options.NNE.Options"></a>

您可以同時在伺服器和用戶端上指定加密需求。例如，當資料庫執行個體使用資料庫連結連線到另一個資料庫時，資料庫執行個體可以充當用戶端。您可能想要避免在伺服器端強制加密。例如，您可能不希望因為伺服器要求而強制所有用戶端通訊使用加密。在這種情況下，您可以使用 `SQLNET.*CLIENT` 選項，強制在用戶端上執行加密。

Amazon RDS 支援 `NATIVE_NETWORK_ENCRYPTION` 選項的下列設定。

**注意**  
當您使用逗號區隔選項設定的值時，請不要在逗號後面加上空格。


****  

| 選項設定 | 有效值 | 預設值 | Description | 
| --- | --- | --- | --- | 
|  `SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS`  |  `TRUE`, `FALSE`  |  `TRUE`  |  使用非安全加密的用戶端嘗試連接至資料庫時伺服器的行為。如果為 `TRUE`，即使沒有使用 2021 年 7 月 PSU 進行修補，用戶端也可以連接。 如果設定為 `FALSE`，則僅當用戶端使用 2021 年 7 月 PSU 進行修補時才能連接至資料庫。在設定 `SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS` 為 `FALSE` 之前，請確保滿足以下條件： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Oracle.Options.NNE.Options.html)  | 
|  `SQLNET.ALLOW_WEAK_CRYPTO`  |  `TRUE`, `FALSE`  |  `TRUE`  |  使用非安全加密的用戶端嘗試連接至資料庫時伺服器的行為。以下加密方式被視為不安全： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Oracle.Options.NNE.Options.html) 如果設定為 `TRUE`，用戶端可在使用上述非加密方式時進行連線。 如果設定為 `FALSE`，當用戶端使用上述非安全加密方式時，資料庫會阻止用戶端連線。在設定 `SQLNET.ALLOW_WEAK_CRYPTO` 為 `FALSE` 之前，請確保滿足以下條件： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Oracle.Options.NNE.Options.html)  | 
|  `SQLNET.CRYPTO_CHECKSUM_CLIENT`  |  `Accepted`, `Rejected`, `Requested`, `Required`   |  `Requested`  |  資料庫執行個體連線至用戶端或充當用戶端的伺服器時的資料完整性行為。當資料庫執行個體使用資料庫連結時，它會充當用戶端。 `Requested` 表示用戶端不需要資料庫執行個體執行檢查總和。  | 
|  `SQLNET.CRYPTO_CHECKSUM_SERVER`  |  `Accepted`, `Rejected`, `Requested`, `Required`   |  `Requested`  |  用戶端或做為用戶端的伺服器連線至資料庫執行個體時的資料完整性。當資料庫執行個體使用資料庫連結時，它會充當用戶端。 `Requested` 表示資料庫執行個體不需要用戶端執行檢查總和。  | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`  |  `SHA256`, `SHA384`, `SHA512`, `SHA1`, `MD5`  |  `SHA256`, `SHA384`, `SHA512`  |  總和檢查演算法的清單。 您可以指定一值或逗號分隔的值清單。如果您使用逗號，請不要在逗號後面插入空格；否則，您會收到 `InvalidParameterValue` 錯誤。 此參數和 `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER ` 必須有一個共同的密碼。  | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`  |  `SHA256`, `SHA384`, `SHA512`, `SHA1`, `MD5`  |  `SHA256`, `SHA384`, `SHA512`, `SHA1`, `MD5`  |  總和檢查演算法的清單。 您可以指定一值或逗號分隔的值清單。如果您使用逗號，請不要在逗號後面插入空格；否則，您會收到 `InvalidParameterValue` 錯誤。 此參數和 `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT` 必須有一個共同的密碼。  | 
|  `SQLNET.ENCRYPTION_CLIENT`  |  `Accepted`, `Rejected`, `Requested`, `Required`   |  `Requested`  |  用戶端或充當用戶端的伺服器連線至資料庫執行個體時用戶端的加密行為。當資料庫執行個體使用資料庫連結時，它會充當用戶端。 `Requested` 表示用戶端不需要加密來自伺服器的流量。  | 
|  `SQLNET.ENCRYPTION_SERVER`  |  `Accepted`, `Rejected`, `Requested`, `Required`   |  `Requested`  |  用戶端或充當用戶端的伺服器連線至資料庫執行個體時伺服器的加密行為。當資料庫執行個體使用資料庫連結時，它會充當用戶端。 `Requested` 表示資料庫執行個體不需要將來自用戶端的流量進行加密。  | 
|  `SQLNET.ENCRYPTION_TYPES_CLIENT`  |  `RC4_256`, `AES256`, `AES192`, `3DES168`, `RC4_128`, `AES128`, `3DES112`, `RC4_56`, `DES`, `RC4_40`, `DES40`  |  `RC4_256`, `AES256`, `AES192`, `3DES168`, `RC4_128`, `AES128`, `3DES112`, `RC4_56`, `DES`, `RC4_40`, `DES40`  |  用戶端所使用之加密演算法的清單。用戶端會依序嘗試每一種演算法來試圖解密伺服器輸入，直到演算法成功或達到清單結尾為止。 Amazon RDS 會使用來自 Oracle 的下列預設清單。RDS 會從 `RC4_256` 開始，並依序向下處理清單。您可以變更順序或限制資料庫執行個體將接受的演算法。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Oracle.Options.NNE.Options.html) 您可以指定一值或逗號分隔的值清單。如果您使用逗號，請不要在逗號後面插入空格；否則，您會收到 `InvalidParameterValue` 錯誤。 此參數和 `SQLNET.SQLNET.ENCRYPTION_TYPES_SERVER` 必須有一個共同的密碼。  | 
|  `SQLNET.ENCRYPTION_TYPES_SERVER`  |  `RC4_256`, `AES256`, `AES192`, `3DES168`, `RC4_128`, `AES128`, `3DES112`, `RC4_56`, `DES`, `RC4_40`, `DES40`  |  `RC4_256`, `AES256`, `AES192`, `3DES168`, `RC4_128`, `AES128`, `3DES112`, `RC4_56`, `DES`, `RC4_40`, `DES40`  |  資料庫執行個體所使用之加密演算法的清單。資料庫執行個體會依序使用每一個演算法，以嘗試解密用戶端輸入，直到演算法成功或直到達到清單結尾。 Amazon RDS 會使用來自 Oracle 的下列預設清單。您可以變更順序或限制用戶端將接受的演算法。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Oracle.Options.NNE.Options.html) 您可以指定一值或逗號分隔的值清單。如果您使用逗號，請不要在逗號後面插入空格；否則，您會收到 `InvalidParameterValue` 錯誤。 此參數和 `SQLNET.SQLNET.ENCRYPTION_TYPES_SERVER` 必須有一個共同的密碼。  | 

# 新增 NATIVE\$1NETWORK\$1ENCRYPTION 選項
<a name="Oracle.Options.NNE.Add"></a>

將 `NATIVE_NETWORK_ENCRYPTION` 選項新增至資料庫執行個體的一般程序如下：

1. 建立新的選項群組，或是複製或修改現有選項群組。

1. 將選項新增至選項群組。

1. 將選項群組與資料庫執行個體建立關聯。

當選項群組為作用中時，NNE 就會是作用中的狀態。

**使用 將 NATIVE\$1NETWORK\$1ENCRYPTION 選項新增至資料庫執行個體 AWS 管理主控台**

1. 針對 **Engine (引擎)**，選擇您想要使用的 Oracle 版本。所有版本都支援 NNE。

1. 針對 **Major engine version (主要引擎版本)**，請選擇您資料庫執行個體的版本。

   如需詳細資訊，請參閱[建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 **NATIVE\$1NETWORK\$1ENCRYPTION** 選項新增至選項群組。如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。
**注意**  
新增 **NATIVE\$1NETWORK\$1ENCRYPTION** 選項後，您不需要重新啟動資料庫執行個體。只要選項群組為作用中，NNE 就會是作用中的狀態。

1. 將選項群組套用至新的或現有的資料庫執行個體：
   + 針對新的資料庫執行個體，您會在啟動執行個體時套用選項群組。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
   + 針對現有的資料庫執行個體，您可以透過修改執行個體並附加新的選項群組來套用選項群組。新增 **NATIVE\$1NETWORK\$1ENCRYPTION** 選項後，您不需要重新啟動資料庫執行個體。只要選項群組為作用中，NNE 就會是作用中的狀態。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

# 在 sqlnet.ora 中設定 NNE 值
<a name="Oracle.Options.NNE.Using"></a>

您可以透過 Oracle 原生網路加密，在伺服器端和用戶端設定網路加密。用戶端是用來連線至資料庫執行個體的電腦。您可以在 sqlnet.ora 中指定下列用戶端設定：
+ `SQLNET.ALLOW_WEAK_CRYPTO`
+ `SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS`
+ `SQLNET.CRYPTO_CHECKSUM_CLIENT`
+ `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`
+ `SQLNET.ENCRYPTION_CLIENT`
+ `SQLNET.ENCRYPTION_TYPES_CLIENT`

如需相關資訊，請參閱 Oracle 文件中的[配置 Oracle 伺服器和用戶端的網路資料加密和完整性](http://docs.oracle.com/cd/E11882_01/network.112/e40393/asoconfg.htm)。

有時，資料庫執行個體會拒絕來自應用程式的連線請求。例如，當用戶端和伺服器上的加密演算法不相符時，可能會出現拒絕情況。若要測試 Oracle 原生網路加密，請將下列幾行新增至用戶端上的 sqlnet.ora 檔案：

```
DIAG_ADR_ENABLED=off
TRACE_DIRECTORY_CLIENT=/tmp
TRACE_FILE_CLIENT=nettrace
TRACE_LEVEL_CLIENT=16
```

嘗試連線時，上述幾行會在用戶端上產生一個稱為 `/tmp/nettrace*` 的追蹤檔。追蹤檔案會包含連線的相關資訊。如需您在使用 Oracle 原生網路加密時所發生之連線相關問題的詳細資訊，請參閱 Oracle 資料庫文件中的[關於溝通加密和完整性](http://docs.oracle.com/cd/E11882_01/network.112/e40393/asoconfg.htm#autoId12)。

# 修改 NATIVE\$1NETWORK\$1ENCRYPTION 選項設定
<a name="Oracle.Options.NNE.ModifySettings"></a>

啟用 `NATIVE_NETWORK_ENCRYPTION` 選項後，您可以修改其設定。目前，您只能使用 AWS CLI 或 RDS API 修改`NATIVE_NETWORK_ENCRYPTION`選項設定。您無法使用主控台。下列範例會修改選項中的兩項設定。

```
aws rds add-option-to-option-group \
    --option-group-name my-option-group \
    --options "OptionName=NATIVE_NETWORK_ENCRYPTION,OptionSettings=[{Name=SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER,Value=SHA256},{Name=SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER,Value=SHA256}]" \
    --apply-immediately
```

若要了解如何使用 CLI 修改選項設定，請參閱 [AWS CLI](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption.CLI)。如需每項設定的詳細資訊，請參閱[NATIVE\$1NETWORK\$1ENCRYPTION 選項設定](Oracle.Options.NNE.Options.md)。

**Topics**
+ [

## 修改 CRYPTO\$1CHECKSUM\$1\$1 值
](#Oracle.Options.NNE.ModifySettings.checksum)
+ [

## 修改 ALLOW\$1WEAK\$1CRYPTO\$1 設定
](#Oracle.Options.NNE.ModifySettings.encryption)

## 修改 CRYPTO\$1CHECKSUM\$1\$1 值
<a name="Oracle.Options.NNE.ModifySettings.checksum"></a>

如果您修改 **NATIVE\$1NETWORK\$1ENCRYPTION** 選項設定，請確定下列選項設定至少有一個共同的密碼：
+ `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`
+ `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`

下列範例顯示您可以修改 `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER` 的情況。此組態有效，因為 `CRYPTO_CHECKSUM_TYPES_CLIENT` 和 `CRYPTO_CHECKSUM_TYPES_SERVER` 兩者皆使用 `SHA256`。


| 選項設定 | 修改前的值 | 修改後的值 | 
| --- | --- | --- | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`  |  `SHA256`, `SHA384`, `SHA512`  |  未變更  | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`  |  `SHA256`, `SHA384`, `SHA512`, `SHA1`, `MD5`  | SHA1,MD5,SHA256 | 

另一個範例，假設您想要將 `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER` 從其預設設定修改為 `SHA1,MD5`。在這種情況下，請確認您將 `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT` 設定為 `SHA1` 或 `MD5`。這些演算法不會包含在 `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT` 的預設值中。

## 修改 ALLOW\$1WEAK\$1CRYPTO\$1 設定
<a name="Oracle.Options.NNE.ModifySettings.encryption"></a>

要將 `SQLNET.ALLOW_WEAK_CRYPTO*` 選項從預設值設定為 `FALSE`，請確保符合下列條件：
+ `SQLNET.ENCRYPTION_TYPES_SERVER` 和 `SQLNET.ENCRYPTION_TYPES_CLIENT` 具有一個相符的安全加密方法。如果方法不是 `DES`、`3DES` 或 `RC4` (所有金鑰長度)，則該方法被認為是安全的。
+ `SQLNET.CHECKSUM_TYPES_SERVER` 和 `SQLNET.CHECKSUM_TYPES_CLIENT` 具有一個相符的檢查總和方法。如果方法不是 `MD5`，則該方法被認為是安全的。
+ 用戶端已使用 2021 年 7 月 PSU 修補。如果用戶端未修補，則用戶端會失去連線並接收到 `ORA-12269` 錯誤。

下列範例顯示範例 NNE 設定。假定將 `SQLNET.ENCRYPTION_TYPES_SERVER` 和 `SQLNET.ENCRYPTION_TYPES_CLIENT` 設定為 FALSE，從而阻止非安全連線。檢查總和選項設定滿足先決條件，因為它們都具有 `SHA256`。但是，`SQLNET.ENCRYPTION_TYPES_CLIENT` 和 `SQLNET.ENCRYPTION_TYPES_SERVER` 使用 `DES`、`3DES` 以及 `RC4` 加密方法，這些方法是不安全的。因此，要將 `SQLNET.ALLOW_WEAK_CRYPTO*` 選項設定為 `FALSE`，請先將 `SQLNET.ENCRYPTION_TYPES_SERVER` 和 `SQLNET.ENCRYPTION_TYPES_CLIENT` 設為安全加密方法，例如 `AES256`。


| 選項設定 | 值 | 
| --- | --- | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`  |  `SHA256`, `SHA384`, `SHA512`  | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`  | SHA1,MD5,SHA256 | 
|  `SQLNET.ENCRYPTION_TYPES_CLIENT`  |  `RC4_256`, `3DES168`, `DES40`  | 
|  `SQLNET.ENCRYPTION_TYPES_SERVER`  |  `RC4_256`, `3DES168`, `DES40`  | 

# 移除 NATIVE\$1NETWORK\$1ENCRYPTION 選項
<a name="Oracle.Options.NNE.Remove"></a>

您可以從資料庫執行個體中移除 NNE。

若要從資料庫執行個體中移除 `NATIVE_NETWORK_ENCRYPTION` 選項，請執行下列其中一個動作：
+ 若要從多個資料庫執行個體中移除選項，請從所屬的選項群組中移除 `NATIVE_NETWORK_ENCRYPTION` 選項。此變更會影響使用選項群組的所有資料庫執行個體。移除 `NATIVE_NETWORK_ENCRYPTION` 選項之後，您不需要重新啟動資料庫執行個體。如需詳細資訊，請參閱 [從選項群組移除選項](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)。
+ 若要從單一資料庫執行個體中移除選項，請修改資料庫執行個體，並指定不含 `NATIVE_NETWORK_ENCRYPTION` 選項的不同選項群組。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。移除 `NATIVE_NETWORK_ENCRYPTION` 選項之後，就不需要重新啟動資料庫執行個體。如需詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

# Oracle OLAP
<a name="Oracle.Options.OLAP"></a>

Amazon RDS 會使用 `OLAP` 選項，藉此支援 Oracle OLAP。此選項提供 Oracle 資料庫執行個體的線上分析處理 (OLAP)。您可以使用 Oracle OLAP，依據 OLAP 標準建立維度物件和立方體來分析大量的資料。如需詳細資訊，請參閱 [Oracle 文件](https://docs.oracle.com/en/database/oracle/oracle-database/19/olaug/index.html)。

**重要**  
如果您使用 Oracle OLAP，如果有通用漏洞評估系統 (CVSS) 分數 9 分以上的安全漏洞或其他公布的安全漏洞，Amazon RDS 會將您的資料庫執行個體自動更新為最新的 Oracle PSU。

Amazon RDS 支援將 Oracle OLAP 用於 Oracle Database 19c 和更高版本的 Enterprise Edition。

## Oracle OLAP 的先決條件
<a name="Oracle.Options.OLAP.PreReqs"></a>

下列是使用 Oracle OLAP 的先決條件：
+ 您必須擁有來自 Oracle 的 Oracle OLAP 授權。如需詳細資訊，請參閱 Oracle 文件中的 [授權資訊](https://docs.oracle.com/en/database/oracle/oracle-database/19/dblic/Licensing-Information.html#GUID-B6113390-9586-46D7-9008-DCC9EDA45AB4)。
+ 您的資料庫執行個體必須具有足夠的執行個體類別。db.t3.small 資料庫執行個體類別不支援 Oracle OLAP。如需詳細資訊，請參閱 [RDS for Oracle 資料庫執行個體類別](Oracle.Concepts.InstanceClasses.md)。
+ 您的資料庫執行個體必須將**自動次要版本升級**啟用。此選項可讓資料庫執行個體自動接收可用的次要資料庫引擎版本升級，而且是安裝 Oracle Java Virtual Machine (JVM) 之任何選項的必要項目。Amazon RDS 使用此選項將您的資料庫執行個體更新為最新版 Oracle 修補程式集更新 (PSU) 或版本更新 (RU)。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。
+ 您的資料庫執行個體不能有名為 `OLAPSYS` 的使用者。如果是，OLAP 選項安裝就會失敗。

## Oracle OLAP 的最佳實務
<a name="Oracle.Options.OLAP.BestPractces"></a>

下列是使用 Oracle OLAP 的最佳實務：
+ 為了將安全性提升至最高，請使用 `OLAP` 選項搭配 Secure Sockets Layer (SSL)。如需更多詳細資訊，請參閱 [Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md)。
+ 設定資料庫執行個體以限制對資料庫執行個體的存取。如需更多詳細資訊，請參閱 [在 VPC 中存取資料庫執行個體的案例](USER_VPC.Scenarios.md) 及 [在 VPC 中使用資料庫執行個體](USER_VPC.WorkingWithRDSInstanceinaVPC.md)。

## 新增 Oracle OLAP 選項
<a name="Oracle.Options.OLAP.Add"></a>

下列是將 `OLAP` 選項新增至資料庫執行個體的一般程序：

1. 建立新的選項群組，或是複製或修改現有選項群組。

1. 將選項新增至選項群組。

1. 將選項群組與資料庫執行個體建立關聯。

如果 Oracle Java Virtual Machine (JVM) *未*安裝在資料庫執行個體上，則在新增 `OLAP` 選項時，會發生短暫當機現象。如果已經在資料庫執行個體上安裝 Oracle Java Virtual Machine (JVM)，則不會發生停機現象。在您新增選項之後，就不需要重新啟動資料庫執行個體。只要選項群組為作用中，Oracle OLAP 就可使用。

**將 OLAP 選項新增至資料庫執行個體**

1. 判斷要使用的選項群組。您可以建立新的選項群組或使用現有的選項群組。如果您要使用現有的選項群組，請跳到下一個步驟。否則請使用下列設定來建立自訂資料庫選項群組：
   + 針對 **Engine (引擎)**，選擇適用於資料庫執行個體的 Oracle 版本。
   + 針對 **Major engine version (主要引擎版本)**，請選擇您資料庫執行個體的版本。

   如需更多詳細資訊，請參閱 [建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 **OLAP** 選項新增至選項群組。如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

1. 將選項群組套用至新的或現有的資料庫執行個體：
   + 針對新的資料庫執行個體，在啟動執行個體時套用選項群組。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
   + 針對現有的資料庫執行個體，可以透過修改執行個體並附加新的選項群組來套用選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## 使用 Oracle OLAP
<a name="Oracle.Options.OLAP.Using"></a>

在啟用 Oracle OLAP 選項之後，您可以開始使用它。如需 Oracle OLAP 支援的功能清單，請參閱 [Oracle 文件](https://docs.oracle.com/en/database/oracle/oracle-database/19/olaug/overview.html#GUID-E2056FE4-C623-4D29-B7D8-C4762F941966)。

## 移除 Oracle OLAP 選項
<a name="Oracle.Options.OLAP.Remove"></a>

捨棄使用該 `OLAP` 選項提供之資料類型的所有物件後，您可以從資料庫執行個體移除該選項。如果 Oracle Java Virtual Machine (JVM) *未*安裝在資料庫執行個體上，則在移除 `OLAP` 選項時，會發生短暫當機現象。如果已經在資料庫執行個體上安裝 Oracle Java Virtual Machine (JVM)，則不會發生停機現象。移除 `OLAP` 選項之後，就不需要重新啟動資料庫執行個體。

**捨棄 `OLAP` 選項**

1. 備份您的資料。
**警告**  
如果執行個體使用已啟用做為選項一部分的資料類型，而且如果您移除該 `OLAP` 選項，則可能會遺失資料。如需更多詳細資訊，請參閱 [備份、還原和匯出資料](CHAP_CommonTasks.BackupRestore.md)。

1. 檢查是否有任何現有物件參考資料類型或 `OLAP` 選項的功能。

1. 捨棄參考資料類型或 `OLAP` 選項功能的所有物件。

1. 請執行下列其中一項：
   + 從其所屬的選項群組中移除 `OLAP` 選項。此變更會影響使用選項群組的所有資料庫執行個體。如需更多詳細資訊，請參閱 [從選項群組移除選項](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)。
   + 修改資料庫執行個體，並指定不包括 `OLAP` 選項的不同選項群組。此變更會影響單一資料庫執行個體。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

# Oracle Secure Sockets Layer
<a name="Appendix.Oracle.Options.SSL"></a>

在與資料庫執行個體相關聯的選項群組中新增 Oracle SSL 選項，就能對 RDS for Oracle 資料庫執行個體啟用 SSL 加密。Amazon RDS 會使用第二個連接埠 (依 Oracle 要求) 作為 SSL 連線用途。此方法可讓資料庫執行個體與 SQL\$1Plus 之間同時進行純文字和 SSL 加密的通訊。例如，您可以使用連接埠搭配純文字通訊與 VPC 內的其他資源通訊，同時使用連接埠搭配 SSL 加密的通訊與 VPC 外部的資源通訊。

**注意**  
您可以在相同的 RDS for Oracle 資料庫執行個體上使用 SSL 或原生網路加密 (NNE)，但不能同時使用這兩者。如果您使用 SSL 加密，請務必關閉任何其他連線加密。如需詳細資訊，請參閱[Oracle 原生網路加密](Appendix.Oracle.Options.NetworkEncryption.md)。

SSL/TLS 和 NNE 不再是 Oracle 進階安全性的一部分。您可以對下列 Oracle 資料庫版本的所有版本使用 SSL 加密：
+ Oracle Database 21c (21.0.0)
+ Oracle 資料庫 19c (19.0.0)

**Topics**
+ [

## Oracle SSL 選項的 TLS 版本
](#Appendix.Oracle.Options.SSL.TLS)
+ [

## Oracle SSL 選項的密碼套件
](#Appendix.Oracle.Options.SSL.CipherSuites)
+ [

## FIPS 支援
](#Appendix.Oracle.Options.SSL.FIPS)
+ [

## 憑證與密碼套件的相容性
](#Appendix.Oracle.Options.SSL.CertificateCompatibility)
+ [

# 新增 SSL 選項
](Appendix.Oracle.Options.SSL.OptionGroup.md)
+ [

# 設定 SQL\$1Plus 以使用 SSL 搭配 RDS for Oracle 資料庫執行個體
](Appendix.Oracle.Options.SSL.ClientConfiguration.md)
+ [

# 使用 SSL 連線至 RDS for Oracle 資料庫執行個體
](Appendix.Oracle.Options.SSL.Connecting.md)
+ [

# 設定透過 JDBC 的 SSL 連線
](Appendix.Oracle.Options.SSL.JDBC.md)
+ [

# 使用 SSL 連線強制執行 DN 比對
](Appendix.Oracle.Options.SSL.DNMatch.md)
+ [

# 對 SSL 連線進行疑難排解
](Appendix.Oracle.Options.SSL.troubleshooting.md)

## Oracle SSL 選項的 TLS 版本
<a name="Appendix.Oracle.Options.SSL.TLS"></a>

Amazon RDS for Oracle 現已支援 Transport Layer Security (TLS) 版本 1.0 和 1.2。新增 Oracle SSL 選項時，請明確地將 `SQLNET.SSL_VERSION` 設為有效值。此選項設定允許下列值：
+ `"1.0"` – 用戶端只能使用 TLS 1.0 版連線至資料庫執行個體。若為現有的 Oracle SSL 選項，`SQLNET.SSL_VERSION` 會自動設為 `"1.0"`。您可以視需要變更此設定。
+ `"1.2"`– 用戶端只能使用 TLS 1.2 來連線至資料庫執行個體。
+ `"1.2 or 1.0"`– 用戶端可以使用 TLS 1.2 或 1.0 來連線至資料庫執行個體。

## Oracle SSL 選項的密碼套件
<a name="Appendix.Oracle.Options.SSL.CipherSuites"></a>

Amazon RDS for Oracle 支援多個 SSL 密碼套件。根據預設，Oracle SSL 選項設定為使用 `SSL_RSA_WITH_AES_256_CBC_SHA` 密碼套件。若要指定在 SSL 連線上使用不同的密碼套件，請使用 `SQLNET.CIPHER_SUITE` 選項設定。

您可以為 `SQLNET.CIPHER_SUITE` 指定多個值。如果您在資料庫執行個體之間有資料庫連結，並決定更新密碼套件，則此技術非常有用。

下表摘要說明 Oracle Database 19c 和 21c 所有版本中 RDS for Oracle 的 SSL 支援。


| 密碼套件 (SQLNET.CIPHER\$1SUITE) | TLS 版本支援 (SQLNET.SSL\$1VERSION) | FIPS 支援 | FedRAMP 合規 | 
| --- | --- | --- | --- | 
| SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA (預設) | 1.0 和 1.2 | 是 | 否 | 
| SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA256 | 1.2 | 是 | 否 | 
| SSL\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 | 1.2 | 是 | 否 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 | 1.2 | 是 | 是 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 | 1.2 | 是 | 是 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 | 1.2 | 是 | 是 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 | 1.2 | 是 | 是 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 1.2 | 是 | 是 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 1.2 | 是 | 是 | 
| TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 | 1.2 | 是 | 是 | 
| TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 | 1.2 | 是 | 是 | 

## FIPS 支援
<a name="Appendix.Oracle.Options.SSL.FIPS"></a>

RDS for Oracle 可讓您針對 140-2 使用美國聯邦資訊處理標準 (FIPS)。FIPS 140-2 是定義加密模組安全性要求的美國政府標準。您可以針對 Oracle SSL 選項，將設定 `FIPS.SSLFIPS_140` 設為 `TRUE`，來開啟 FIPS 標準。針對 SSL 設定 FIPS 140-2 時，密碼編譯程式庫會在用戶端與 RDS for Oracle 資料庫執行個體之間加密資料。

用戶端必須使用符合 FIPS 規定的密碼套件。建立連線時，用戶端和 RDS for Oracle 資料庫執行個體會協商來回傳輸訊息時所使用的密碼套件。[Oracle SSL 選項的密碼套件](#Appendix.Oracle.Options.SSL.CipherSuites) 中的資料表會顯示適用於每個 TLS 版本的 FIPS 相容 SSL 密碼套件。如需詳細資訊，請參閱 Oracle 資料庫文件中的 [Oracle 資料庫 FIPS 140-2 設定](https://docs.oracle.com/en/database/oracle/oracle-database/12.2/dbseg/oracle-database-fips-140-settings.html#GUID-DDBEB3F9-B216-44BB-8C18-43B5E468CBBB)。

## 憑證與密碼套件的相容性
<a name="Appendix.Oracle.Options.SSL.CertificateCompatibility"></a>

RDS for Oracle 支援 RSA 和橢圓曲線數位簽章演算法 (ECDSA) 憑證。當您為資料庫執行個體設定 SSL 時，必須確保您在 `SQLNET.CIPHER_SUITE` 選項設定中指定的密碼套件與資料庫執行個體所使用的憑證類型相容。

下表顯示憑證類型與密碼套件之間的相容性：


| 憑證類型 | 相容的密碼套件 | 不相容的密碼套件 | 
| --- | --- | --- | 
| RSA 憑證 (rds-ca-2019、rds-ca-rsa2048-g1、rds-ca-rsa4096-g1) |  SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA256 SSL\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA  |  TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  | 
| ECDSA 憑證 (rds-ca-ecc384-g1) |  TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  |  SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA256 SSL\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA  | 

當您在 `SQLNET.CIPHER_SUITE` 選項設定中指定多個密碼套件時，請務必包含至少一個與資料庫執行個體使用的憑證類型相容的密碼套件。如果您使用的選項群組具有多個具有不同憑證類型的資料庫執行個體，請針對每個憑證類型至少包含一個密碼套件。

如果您嘗試將選項群組與一個 SSL 選項建立關聯，但其中只包含一個與資料庫執行個體的憑證類型不相容的密碼套件，則操作將會失敗，並出現指出不相容的錯誤訊息。

# 新增 SSL 選項
<a name="Appendix.Oracle.Options.SSL.OptionGroup"></a>

若要使用 SSL，您的 RDS for Oracle 資料庫執行個體必須與包含 `SSL` 選項的選項群組建立關聯。

## 主控台
<a name="Appendix.Oracle.Options.SSL.OptionGroup.Console"></a>

**將 SSL 選項新增至選項群組**

1. 建立新的選項群組，或識別現有的選項群組，以便在其中新增 `SSL` 選項。

   如需建立選項群組的相關資訊，請參閱[建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 `SSL` 選項新增至選項群組。

   如果您只想針對 SSL 連線使用經 FIPS 驗證的密碼套件，請將選項 `FIPS.SSLFIPS_140` 設定為 `TRUE`。如需 FIPS 標準的相關資訊，請參閱 [FIPS 支援](Appendix.Oracle.Options.SSL.md#Appendix.Oracle.Options.SSL.FIPS)。

   如需將選項新增至選項群組的相關資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

1. 建立新的 RDS for Oracle 資料庫執行個體，將其與選項群組建立關聯，或修改 RDS for Oracle 資料庫執行個體，使其與選項群組建立關聯。

   如需建立資料庫執行個體的相關資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。

   如需修改資料庫執行個體的相關資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## AWS CLI
<a name="Appendix.Oracle.Options.SSL.OptionGroup.CLI"></a>

**將 SSL 選項新增至選項群組**

1. 建立新的選項群組，或識別現有的選項群組，以便在其中新增 `SSL` 選項。

   如需建立選項群組的相關資訊，請參閱[建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 `SSL` 選項新增至選項群組。

   指定下列選項設定：
   + `Port` – SSL 連接埠號碼
   + `VpcSecurityGroupMemberships` – 已啟用選項的 VPC 安全群組
   + `SQLNET.SSL_VERSION` – 用戶端可用來連線至資料庫執行個體的 TLS 版本

   例如下列 AWS CLI 命令可將 `SSL` 選項新增至名為 `ora-option-group` 的選項群組。  
**Example**  

   對於 Linux、macOS 或 Unix：

   ```
   aws rds add-option-to-option-group --option-group-name ora-option-group \
     --options 'OptionName=SSL,Port=2484,VpcSecurityGroupMemberships="sg-68184619",OptionSettings=[{Name=SQLNET.SSL_VERSION,Value=1.0}]'
   ```

   在 Windows 中：

   ```
   aws rds add-option-to-option-group --option-group-name ora-option-group ^
     --options 'OptionName=SSL,Port=2484,VpcSecurityGroupMemberships="sg-68184619",OptionSettings=[{Name=SQLNET.SSL_VERSION,Value=1.0}]'
   ```

1. 建立新的 RDS for Oracle 資料庫執行個體，將其與選項群組建立關聯，或修改 RDS for Oracle 資料庫執行個體，使其與選項群組建立關聯。

   如需建立資料庫執行個體的相關資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。

   如需修改資料庫執行個體的相關資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

# 設定 SQL\$1Plus 以使用 SSL 搭配 RDS for Oracle 資料庫執行個體
<a name="Appendix.Oracle.Options.SSL.ClientConfiguration"></a>

在可以連線至使用 Oracle SSL 選項的 RDS for Oracle 資料庫執行個體之前，您必須先設定 SQL\$1Plus，然後才能連線。

**注意**  
若要允許從適當的用戶端存取資料庫執行個體，請確定您的安全群組已正確設定。如需更多詳細資訊，請參閱 [使用安全群組控制存取](Overview.RDSSecurityGroups.md)。此外，這些指示僅適用於 SQL\$1Plus 和其他直接使用 Oracle 主目錄的用戶端。如需了解 JDBC 連線，請參閱 [設定透過 JDBC 的 SSL 連線](Appendix.Oracle.Options.SSL.JDBC.md)。

**設定 SQL\$1Plus 以使用 SSL 連線至 RDS for Oracle 資料庫執行個體**

1. 將 `ORACLE_HOME` 環境變數設為 Oracle 主目錄的位置。

   Oracle 主目錄的路徑取決於您的安裝。下列範例設定 `ORACLE_HOME` 環境變數。

   ```
   prompt>export ORACLE_HOME=/home/user/app/user/product/19.0.0/dbhome_1
   ```

   如需有關設定 Oracle 環境變數的資訊，請參閱 Oracle 文件中的 [SQL\$1Plus 環境變數](http://docs.oracle.com/database/121/SQPUG/ch_two.htm#SQPUG331)，以及您的作業系統適用的 Oracle 安裝指南。

1. 將 `$ORACLE_HOME/lib` 附加至 `LD_LIBRARY_PATH` 環境變數。

   下列範例設定 LD\$1LIBRARY\$1PATH 環境變數。

   ```
   prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib 
   ```

1. 在 `$ORACLE_HOME/ssl_wallet` 建立 Oracle 錢包的目錄。

   下列範例建立 Oracle 錢包目錄。

   ```
   prompt>mkdir $ORACLE_HOME/ssl_wallet
   ```

1. 下載適用於所有 的憑證套件 .pem 檔案，並將檔案 AWS 區域 放在 ssl\$1wallet 目錄中。如需相關資訊，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。

1. 在 `$ORACLE_HOME/network/admin` 目錄中，修改或建立 `tnsnames.ora` 檔案，並包含下列項目。

   ```
   net_service_name = 
     (DESCRIPTION = 
       (ADDRESS_LIST = 
         (ADDRESS = 
           (PROTOCOL = TCPS) 
           (HOST = endpoint) 
           (PORT = ssl_port_number)
         )
       )
       (CONNECT_DATA = 
         (SID = database_name)
       )
       (SECURITY = 
         (SSL_SERVER_CERT_DN = "C=US,ST=Washington,L=Seattle,O=Amazon.com,OU=RDS,CN=endpoint")
       )
     )
   ```

1. 在相同的目錄中，修改或建立 sqlnet.ora 檔案，並加入下列參數。
**注意**  
若要透過 TLS 安全連線與實體之間進行通訊，Oracle 需要擁有必要憑證的錢包以進行身分驗證。您可以使用 Oracle 的 ORAPKI 公用程式來建立並維護 Oracle 錢包，如步驟 7 所示。如需詳細資訊，請參閱 Oracle 文件中的[使用 ORAPKI 設定 Oracle 錢包](https://docs.oracle.com/cd/E92519_02/pt856pbr3/eng/pt/tsvt/task_SettingUpOracleWalletUsingORAPKI.html)。

   ```
   WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = $ORACLE_HOME/ssl_wallet))) 
   SSL_CLIENT_AUTHENTICATION = FALSE 
   SSL_VERSION = 1.0 
   SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA) 
   SSL_SERVER_DN_MATCH = ON
   ```
**注意**  
若資料庫執行個體支援，您可將 `SSL_VERSION` 設為較高的值。

1. 執行下列命令來建立 Oracle 錢包。

   ```
   prompt>orapki wallet create -wallet $ORACLE_HOME/ssl_wallet -auto_login_only
   ```

1. 使用 OS 公用程式，將 .pem 套件檔案中的每個憑證解壓縮至個別的 .pem 檔案。

1. 使用個別 `orapki` 命令將每個憑證新增至您的錢包，將 `certificate-pem-file` 取代為 .pem 檔案的絕對檔案名稱。

   ```
   prompt>orapki wallet add -wallet $ORACLE_HOME/ssl_wallet -trusted_cert -cert
         certificate-pem-file -auto_login_only
   ```

   如需詳細資訊，請參閱[輪換您的 SSL/TLS 憑證](UsingWithRDS.SSL-certificate-rotation.md)。

# 使用 SSL 連線至 RDS for Oracle 資料庫執行個體
<a name="Appendix.Oracle.Options.SSL.Connecting"></a>

依先前所述將 SQL\$1Plus 設定為使用 SSL 之後，即可採用 SSL 選項連線至 RDS for Oracle 資料庫執行個體。(選用) 您可以先匯出指向包含 tnsnames.ora 和 sqlnet.ora 檔案目錄的 `TNS_ADMIN` 值。如此將確保 SQL\$1Plus 可一直找到這些檔案。以下範例將匯出 `TNS_ADMIN` 值。

```
export TNS_ADMIN=${ORACLE_HOME}/network/admin
```

連線到資料庫執行個體。例如，您可以使用 SQL\$1Plus 和 tnsnames.ora 檔案中的 *<net\$1service\$1name>* 進行連線。

```
sqlplus mydbuser@net_service_name          
```

您也可以使用以下命令，只利用 SQL\$1Plus 連線至資料庫執行個體，而不需要用到 tnsnames.ora 檔案。

```
sqlplus 'mydbuser@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCPS)(HOST = endpoint) (PORT = ssl_port_number))(CONNECT_DATA = (SID = database_name)))'          
```

您也可以不使用 SSL 就連線至 RDS for Oracle 資料庫執行個體。例如，以下命令透過純文字連接埠來連線至資料庫執行個體，而不使用 SSL 加密。

```
sqlplus 'mydbuser@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = endpoint) (PORT = port_number))(CONNECT_DATA = (SID = database_name)))'          
```

如果您要禁止傳輸控制通訊協定 (TCP) 連接埠存取，請建立不含 IP 地址傳入的安全群組，並新增至執行個體。如此新增之後就會關閉透過 TCP 連接埠的連線，但仍允許透過 SSL 連接埠的連線 (從 SSL 選項安全群組所允許範圍內的 IP 地址指定)。

# 設定透過 JDBC 的 SSL 連線
<a name="Appendix.Oracle.Options.SSL.JDBC"></a>

若要透過 JDBC 使用 SSL 連線，您必須建立金鑰存放區、信任 Amazon RDS 根 CA 憑證，以及使用如下指定的程式碼片段。

若要建立 JKS 格式的金鑰存放區，您可以使用下列命令。如需有關建立金鑰存放區的詳細資訊，請參閱 Oracle 文件中的[建立金鑰存放區](https://docs.oracle.com/cd/E35822_01/server.740/es_admin/src/tadm_ssl_jetty_keystore.html)。如需詳細資訊，請參閱 *Java 平台，標準版本工具參考*中的 [keytool](https://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html)。

```
keytool -genkey -alias client -validity 365 -keyalg RSA -keystore clientkeystore         
```

採取下列步驟來信任 Amazon RDS 根 CA 憑證。

**信任 Amazon RDS 根 CA 憑證**

1. 下載適用於所有 AWS 區域 的憑證套件 .pem 檔案，並將檔案放置在 ssl\$1wallet 目錄中。

   如需有關下載憑證的詳細資訊，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。

1. 使用 OS 公用程式，將 .pem 檔案中的每個憑證解壓縮至個別檔案。

1. 使用個別 `openssl` 命令將每個憑證轉換為 .der 格式，將 *certificate-pem-file* 取代為憑證 .pem 檔案的名稱 (不含 .pem 副檔名)。

   ```
   openssl x509 -outform der -in certificate-pem-file.pem -out certificate-pem-file.der                
   ```

1. 使用下列命令將每個憑證匯入金鑰存放區。

   ```
   keytool -import -alias rds-root -keystore clientkeystore.jks -file certificate-pem-file.der                
   ```

   如需更多詳細資訊，請參閱 [輪換您的 SSL/TLS 憑證](UsingWithRDS.SSL-certificate-rotation.md)。

1. 確認金鑰存放區已成功建立。

   ```
   keytool -list -v -keystore clientkeystore.jks                                            
   ```

   在提示出現時，請輸入金鑰存放區密碼。

下列程式碼範例示範如何使用 JDBC 來設定 SSL 連線。

```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
 
public class OracleSslConnectionTest {
    private static final String DB_SERVER_NAME = "dns-name-provided-by-amazon-rds";
    private static final Integer SSL_PORT = "ssl-option-port-configured-in-option-group";
    private static final String DB_SID = "oracle-sid";
    private static final String DB_USER = "user-name";
    private static final String DB_PASSWORD = "password";
    // This key store has only the prod root ca.
    private static final String KEY_STORE_FILE_PATH = "file-path-to-keystore";
    private static final String KEY_STORE_PASS = "keystore-password";
 
    public static void main(String[] args) throws SQLException {
        final Properties properties = new Properties();
        final String connectionString = String.format(
                "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=%s)(PORT=%d))(CONNECT_DATA=(SID=%s)))",
                DB_SERVER_NAME, SSL_PORT, DB_SID);
        properties.put("user", DB_USER);
        properties.put("password", DB_PASSWORD);
        properties.put("oracle.jdbc.J2EE13Compliant", "true");
        properties.put("javax.net.ssl.trustStore", KEY_STORE_FILE_PATH);
        properties.put("javax.net.ssl.trustStoreType", "JKS");
        properties.put("javax.net.ssl.trustStorePassword", KEY_STORE_PASS);
        final Connection connection = DriverManager.getConnection(connectionString, properties);
        // If no exception, that means handshake has passed, and an SSL connection can be opened
    }
}
```

**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

# 使用 SSL 連線強制執行 DN 比對
<a name="Appendix.Oracle.Options.SSL.DNMatch"></a>

您可以使用 Oracle 參數 `SSL_SERVER_DN_MATCH`，以強制資料庫伺服器的辨別名稱 (DN) 比對其服務名稱。如果強制使用比對驗證，則 SSL 會確保憑證來自伺服器。如果不強制使用比對驗證，則 SSL 會執行檢查，但無論是否符合都允許連線。如果不強制使用比對，則伺服器很可能偽造其身分。

若要強制使用 DN 比對，請新增 DN 比對屬性，並使用如下指定的連線字串。

將此屬性新增至用戶端連線，以強制使用 DN 比對。

```
properties.put("oracle.net.ssl_server_dn_match", "TRUE");            
```

使用下列連線字串，即可在使用 SSL 時強制使用 DN 比對。

```
final String connectionString = String.format(
    "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=%s)(PORT=%d))" +
    "(CONNECT_DATA=(SID=%s))" +
    "(SECURITY = (SSL_SERVER_CERT_DN = 
\"C=US,ST=Washington,L=Seattle,O=Amazon.com,OU=RDS,CN=%s\")))",
    DB_SERVER_NAME, SSL_PORT, DB_SID, DB_SERVER_NAME);
```

# 對 SSL 連線進行疑難排解
<a name="Appendix.Oracle.Options.SSL.troubleshooting"></a>

您可能會查詢資料庫並收到 `ORA-28860` 錯誤。

```
ORA-28860: Fatal SSL error
28860. 00000 - "Fatal SSL error"
*Cause: An error occurred during the SSL connection to the peer. It is likely that this side sent data which the peer rejected.
*Action: Enable tracing to determine the exact cause of this error.
```

當用戶端嘗試使用伺服器不支援的 TLS 版本進行連線時，就會發生這個錯誤。若要避免此錯誤，請編輯 sqlnet.ora 並將 `SSL_VERSION` 設定為正確的 TLS 版本。如需詳細資訊，請參閱「My Oracle 支援」中的 [My Oracle 支援文件 2748438.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2748438.1)。

# Oracle Spatial
<a name="Oracle.Options.Spatial"></a>

Amazon RDS 會使用 `SPATIAL` 選項，藉此支援 Oracle Spatial。Oracle Spatial 提供的 SQL 結構描述和函數，有助於 Oracle 資料庫中空間資料集合的儲存、擷取、更新和查詢。如需詳細資訊，請參閱 Oracle 文件中的 [Spatial 概念](http://docs.oracle.com/database/121/SPATL/spatial-concepts.htm#SPATL010)。Amazon RDS 在所有支援的版本中都支援 Oracle Spatial。

## 空間修補程式套件 (SPB) 的運作方式
<a name="Oracle.Options.Spatial.SPBs"></a>

RDS for Oracle 每季都會為每個支援的主要引擎發行新的次要引擎版本。版本更新 (RU) 引擎版本會包含指定季度的 RU 修補程式，藉此併入來自 Oracle 的錯誤修正。空間修補程式套件 (SPB) 引擎版本包含 RU 修補程式，以及 Oracle Spatial 專用的修補程式。例如，19.0.0.0.ru-2025-01.spb-1.r1 是一個次要引擎版本，其中包含引擎版本 19.0.0.0.ru-2025-01.rur-2025-01.r1 中的 RU 修補程式，以及 Spatial 修補程式。僅支援將 SPB 用於 Oracle Database 19c。

SPB 的運作方式與 RU 相同，雖然其名稱有所不同。RU 使用命名格式 19.0.0.0.ru-2025-01.rur-2025-01.r1。SPB 名稱包含 "spb" 一字，例如 19.0.0.0.ru-2025-01.spb-1.r1。一般而言，SPB 會在其對應的每季 RU 之後的 2-3 週發行。例如，19.0.0.0.ru-2025-01.spb-1.r1 會在 19.0.0.0.ru-2025-01.rur-2025-01.r1 之後發行。

RDS for Oracle 的 RU 和 SPB 自動次要版本升級採用不同的路徑。如果您的資料庫執行個體使用 RU，則 RDS 會自動將您的執行個體升級至 RU。如果您的資料庫執行個體使用 SPB，則 RDS 會將您的執行個體升級至 SPB。

如需 RU 和 SPB 的詳細資訊，請參閱 [Oracle 次要版本升級](USER_UpgradeDBInstance.Oracle.Minor.md)。如需 Oracle Database 19c 支援的 RU 和 SPB 清單，請參閱 *Amazon RDS for Oracle 版本備註*中的 [Amazon RDS for Oracle Database 19c (19.0.0.0)](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html)。

## Oracle Spatial 的先決條件
<a name="Oracle.Options.Spatial.PreReqs"></a>

下列是使用 Oracle Spatial 的先決條件：
+ 確認您的資料庫執行個體有足夠的執行個體類別。db.t3.small 資料庫執行個體類別不支援 Oracle Spatial。如需詳細資訊，請參閱[RDS for Oracle 資料庫執行個體類別](Oracle.Concepts.InstanceClasses.md)。
+ 確認您的資料庫執行個體已啟用**自動次要版本升級**。此選項可讓資料庫執行個體自動接收可用的次要資料庫引擎版本升級，而且是安裝 Oracle Java Virtual Machine (JVM) 之任何選項的必要項目。Amazon RDS 使用此選項將您的資料庫執行個體更新為最新版 Oracle 修補程式集更新 (PSU) 或版本更新 (RU)。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## Oracle Spatial 的最佳實務
<a name="Oracle.Options.Spatial.BestPractces"></a>

下列是使用 Oracle Spatial 的最佳實務：
+ 為了將安全性提升至最高，請使用 `SPATIAL` 選項搭配 Secure Sockets Layer (SSL)。如需更多詳細資訊，請參閱 [Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md)。
+ 設定資料庫執行個體以限制對資料庫執行個體的存取。如需更多詳細資訊，請參閱 [在 VPC 中存取資料庫執行個體的案例](USER_VPC.Scenarios.md) 及 [在 VPC 中使用資料庫執行個體](USER_VPC.WorkingWithRDSInstanceinaVPC.md)。

## 新增 Oracle Spatial 選項
<a name="Oracle.Options.Spatial.Add"></a>

下列是將 `SPATIAL` 選項新增至資料庫執行個體的一般程序：

1. 建立新的選項群組，或是複製或修改現有選項群組。

1. 將選項新增至選項群組。

1. 將選項群組與資料庫執行個體建立關聯。

如果 Oracle Java Virtual Machine (JVM) *未*安裝在資料庫執行個體上，則在新增 `SPATIAL` 選項時，會發生短暫當機現象。如果已經在資料庫執行個體上安裝 Oracle Java Virtual Machine (JVM)，則不會發生停機現象。在您新增選項之後，就不需要重新啟動資料庫執行個體。只要選項群組為作用中，Oracle Spatial 就會可用。

**注意**  
在中斷過程中，密碼驗證功能將會短暫停用。在中斷過程中，您也可以預期將會看到與密碼驗證功能相關的事件。在 Oracle 資料庫執行個體可用之前，密碼驗證功能將會再次啟用。

**將 `SPATIAL` 選項新增至資料庫執行個體**

1. 判斷要使用的選項群組。您可以建立新的選項群組或使用現有的選項群組。如果您要使用現有的選項群組，請跳到下一個步驟。否則請使用下列設定來建立自訂資料庫選項群組：

   1. 針對 **Engine (引擎)**，選擇適用於資料庫執行個體的 Oracle 版本。

   1. 針對 **Major engine version (主要引擎版本)**，請選擇您資料庫執行個體的版本。

   如需更多詳細資訊，請參閱 [建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 **SPATIAL** 選項新增至選項群組。如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

1. 將選項群組套用至新的或現有的資料庫執行個體：
   + 針對新的資料庫執行個體，您會在啟動執行個體時套用選項群組。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
   + 針對現有的資料庫執行個體，您可以透過修改執行個體並附加新的選項群組來套用選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## 移除 Oracle Spatial 選項
<a name="Oracle.Options.Spatial.Remove"></a>

捨棄使用 `SPATIAL` 選項所提供之資料類型的所有物件之後，您可以將該選項從資料庫執行個體捨棄。如果 Oracle Java Virtual Machine (JVM) *未*安裝在資料庫執行個體上，則在移除 `SPATIAL` 選項時，會發生短暫當機現象。如果已經在資料庫執行個體上安裝 Oracle Java Virtual Machine (JVM)，則不會發生停機現象。移除 `SPATIAL` 選項之後，就不需要重新啟動資料庫執行個體。

**捨棄 `SPATIAL` 選項**

1. 備份您的資料。
**警告**  
如果執行個體使用已啟用做為選項一部分的資料類型，而且如果您移除該 `SPATIAL` 選項，則可能會遺失資料。如需更多詳細資訊，請參閱 [備份、還原和匯出資料](CHAP_CommonTasks.BackupRestore.md)。

1. 檢查是否有任何現有物件參考資料類型或 `SPATIAL` 選項的功能。

   如果 `SPATIAL` 選項存在，則在套用沒有 `SPATIAL` 選項的新選項群組時，執行個體可能會停滯。您可以使用下列查詢以識別物件：

   ```
   SELECT OWNER, SEGMENT_NAME, TABLESPACE_NAME, BYTES/1024/1024 mbytes
   FROM   DBA_SEGMENTS
   WHERE  SEGMENT_TYPE LIKE '%TABLE%'
   AND    (OWNER, SEGMENT_NAME) IN
          (SELECT DISTINCT OWNER, TABLE_NAME 
           FROM   DBA_TAB_COLUMNS
           WHERE  DATA_TYPE='SDO_GEOMETRY'
           AND    OWNER <> 'MDSYS')
   ORDER BY 1,2,3,4;
   
   SELECT OWNER, TABLE_NAME, COLUMN_NAME
   FROM   DBA_TAB_COLUMNS 
   WHERE  DATA_TYPE = 'SDO_GEOMETRY' 
   AND    OWNER <> 'MDSYS' 
   ORDER BY 1,2,3;
   ```

1. 捨棄參考資料類型或 `SPATIAL` 選項功能的所有物件。

1. 請執行下列其中一項：
   + 從其所屬的選項群組中移除 `SPATIAL` 選項。此變更會影響使用選項群組的所有資料庫執行個體。如需更多詳細資訊，請參閱 [從選項群組移除選項](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)。
   + 修改資料庫執行個體，並指定不包括 `SPATIAL` 選項的不同選項群組。此變更會影響單一資料庫執行個體。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

# Oracle SQLT
<a name="Oracle.Options.SQLT"></a>

Amazon RDS 透過使用 SQLT 選項來支援 Oracle SQLTXPLAIN (SQLT)。您可以將 SQLT 搭配用於任何版本的 Oracle Database 19c 和更高版本。

Oracle `EXPLAIN PLAN` 陳述式可以決定 SQL 陳述式的執行計劃。它可以驗證 Oracle 最佳化工具是否選擇特定的執行計劃，例如巢狀迴圈聯結。還可協助您了解最佳化工具的決策，例如，為何選擇巢狀迴圈聯結，而非雜湊聯結。因此，`EXPLAIN PLAN` 協助您了解陳述式的效能。

SQLT 是可產生報告的 Oracle 公用程式。報告包含物件統計資料、物件中繼資料、最佳化工具相關的初始化參數，以及其他資訊，供資料庫管理員用來微調 SQL 陳述式以獲得最佳效能。SQLT 會產生 HTML 報告，內含報告中所有區段的超連結。

不同於「自動工作負載儲存區域」或 Statspack 報告，SQLT 以個別 SQL 陳述式為處理對象。SQLT 是 SQL、PL/SQL 和 SQL\$1Plus 檔案的集合，這些檔案收集、儲存並顯示效能資料。

以下是每個 SQLT 版本支援的 Oracle 版本。


****  

| SQLT 版本 | Oracle Database 21c | Oracle 資料庫 19c | 
| --- | --- | --- | 
|  2018-07-25.v1  |  支援  |  支援  | 
|  2018-03-31.v1  |  不支援  |  不支援  | 
|  2016-04-29.v1  |  不支援  |  不支援  | 

若要下載 SQLT 並取得使用的說明：
+ 登入您的「我的 Oracle 支援」帳戶，並開啟下列文件：
+ 若要下載 SQLT：[文件 215187.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=215187.1)
+ 關於 SQLT 使用指示：[文件 1614107.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1614107.1)
+ 關於 SQLT 的常見問答集：[文件 1454160.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1454160.1)
+ 有關如何閱讀 SQLT 輸出的相關資訊：[文件 1456176.1](https://support.oracle.com/epmos/main/downloadattachmentprocessor?parent=DOCUMENT&sourceId=1456176.1&attachid=1456176.1:58&clickstream=yes)
+ 如需解譯主要報告：[文件 1922234.1](https://support.oracle.com/epmos/faces/DocumentDisplay?parent=DOCUMENT&sourceId=215187.1&id=1922234.1)

Amazon RDS 不支援下列 SQLT 方法：
+ `XPLORE` 
+ `XHUME` 

## SQLT 先決條件
<a name="Oracle.Options.SQLT.PreReqs"></a>

下列是使用 SQLT 的先決條件：
+ 您必須移除 SQLT 所需的使用者和角色 (若存在)。

  SQLT 選項會在資料庫執行個體上建立下列使用者和角色：
  + `SQLTXPLAIN` 使用者
  + `SQLTXADMIN` 使用者
  + `SQLT_USER_ROLE` 角色

  如果您的資料庫執行個體有任何這些使用者或角色，請透過 SQL 用戶端登入資料庫執行個體，然後使用下列陳述式捨棄這些使用者或角色：

  ```
  DROP USER SQLTXPLAIN CASCADE;
  DROP USER SQLTXADMIN CASCADE;   
  DROP ROLE SQLT_USER_ROLE CASCADE;
  ```
+ 您必須移除 SQLT 所需的資料表空間 (若存在)。

  SQLT 選項會在資料庫執行個體上建立下列資料表空間：
  + `RDS_SQLT_TS`
  + `RDS_TEMP_SQLT_TS`

  如果您的資料庫執行個體有這些資料表空間，請使用 SQL 用戶端登入資料庫執行個體，然後捨棄這些資料表空間。

## SQLT 選項設定
<a name="Oracle.Options.SQLT.Options"></a>

 SQLT 可以搭配「Oracle 調校套件」和「Oracle 診斷套件」所提供的授權功能來使用。Oracle 調校套件包含 SQL Tuning Advisor，Oracle 診斷套件包含「自動工作負載儲存區域」。SQLT 設定可允許或禁止從 SQLT 存取這些功能。

Amazon RDS 支援 SQLT 選項的下列設定。


****  

| 選項設定 | 有效值 | 預設值 | 描述 | 
| --- | --- | --- | --- | 
|  `LICENSE_PACK`  |  `T`, `D`, `N`  |  `N`   |  您想要透過 SQLT 來存取的 Oracle 管理套件。輸入下列其中一個值： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Oracle.Options.SQLT.html)  Amazon RDS 不提供這些 Oracle 管理套件的授權。如果您指出想要使用的套件不在資料庫執行個體中，您可以對資料庫執行個體使用 SQLT。不過，SQLT 無法存取此套件，而 SQLT 報告也不含此套件的資料。例如，若您指定 `T`，但資料庫執行個體不含 Oracle 調校套件，則 SQLT 可處理資料庫執行個體，但所產生的報告不含 Oracle 調校套件相關的資料。   | 
|  `VERSION`  |  `2016-04-29.v1` `2018-03-31.v1` `2018-07-25.v1`  |  `2016-04-29.v1`   |  您要安裝的 SQLT 版本。  對於 Oracle Database 19c 和 21c，唯一支援的版本是 `2018-07-25.v1`。此版本是這些版本的預設版本。   | 

## 新增 SQLT 選項
<a name="Oracle.Options.SQLT.Add"></a>

下列是將 SQLT 選項新增至資料庫執行個體的一般程序：

1. 建立新的選項群組，或是複製或修改現有選項群組。

1. 將 SQLT 選項新增至選項群組。

1. 將選項群組與資料庫執行個體建立關聯。

在新增 SQLT 選項之後，只要選項群組為作用中，SQLT 就立即變成作用中。

**將 SQLT 選項新增至資料庫執行個體**

1. 判斷要使用的選項群組。您可以建立新的選項群組或使用現有的選項群組。如果您要使用現有的選項群組，請跳到下一個步驟。否則請使用下列設定來建立自訂資料庫選項群組：

   1. 針對 **Engine (引擎)**，選擇您想要使用的 Oracle 版本。所有版本都支援 SQLT 選項。

   1. 針對 **Major engine version (主要引擎版本)**，請選擇您資料庫執行個體的版本。

   如需更多詳細資訊，請參閱 [建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 **SQLT** 選項新增至選項群組。如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

1. 將選項群組套用至新的或現有的資料庫執行個體：
   + 針對新的資料庫執行個體，您會在啟動執行個體時套用選項群組。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。

      
   + 針對現有的資料庫執行個體，您可以透過修改執行個體並附加新的選項群組來套用選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

1. (選用) 在每一個含有 SQLT 選項的資料庫執行個體上驗證 SQLT 安裝。

   1. 以主要使用者身分使用 SQL 用戶端來連接到資料庫執行個體。

      如需使用 SQL 用戶端連接至 Oracle 資料庫執行個體的相關資訊，請參閱[連線至 Oracle 資料庫執行個體](USER_ConnectToOracleInstance.md)。

   1. 執行下列查詢：

      ```
      SELECT sqltxplain.sqlt$a.get_param('tool_version') sqlt_version FROM DUAL;                        
      ```

      該查詢會傳回 Amazon RDS 上 SQLT 選項的目前版本。`12.1.160429` 即為 Amazon RDS 上可用 SQLT 版本的範例。

1. 變更 SQLT 選項所建立之使用者的密碼。

   1. 以主要使用者身分使用 SQL 用戶端來連接到資料庫執行個體。

   1. 執行下列 SQL 陳述式來變更 `SQLTXADMIN` 使用者的密碼：

      ```
      ALTER USER SQLTXADMIN IDENTIFIED BY new_password ACCOUNT UNLOCK;                         
      ```
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

   1. 執行下列 SQL 陳述式來變更 `SQLTXPLAIN` 使用者的密碼：

      ```
      ALTER USER SQLTXPLAIN IDENTIFIED BY new_password ACCOUNT UNLOCK;                         
      ```
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

**注意**  
升級 SQLT 需要先解除安裝舊版的 SQLT，然後安裝新版本。因此，升級 SQLT 時會遺失所有 SQLT 中繼資料。資料庫的主要版本升級也會解除安裝並重新安裝 SQLT。例如，從 Oracle Database 19c 升級至 Oracle Database 21c 即為主要版本升級。

## 使用 SQLT
<a name="Oracle.Options.SQLT.Using"></a>

SQLT 可搭配 Oracle SQL\$1Plus 公用程式一起使用。

**使用 SQLT**

1.  從「我的 Oracle 支援」網站上的[文件 215187.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=215187.1) 下載 SQLT .zip 檔案。
**注意**  
您無法從「我的 Oracle 支援」網站下載 SQLT 12.1.160429。Oracle 已廢除這個較舊的版本。

1.  解壓縮 SQLT .zip 檔案。

1.  從命令列提示字元中，切換到檔案系統上的 `sqlt/run` 目錄。

1.  從命令提示字元中，開啟 SQL\$1Plus，並以主要使用者身分連接到資料庫執行個體。

   如需使用 SQL\$1Plus 連接到資料庫執行個體的相關資訊，請參閱[連線至 Oracle 資料庫執行個體](USER_ConnectToOracleInstance.md)。

1.  取得 SQL 陳述式的 SQL ID：

   ```
   SELECT SQL_ID FROM V$SQL WHERE SQL_TEXT='sql_statement';                               
   ```

   輸出類似如下：

   ```
   SQL_ID
   -------------
   chvsmttqjzjkn
   ```

1. 使用 SQLT 來分析 SQL 陳述式：

   ```
   START sqltxtract.sql sql_id sqltxplain_user_password                    
   ```

   例如，若為 SQL ID `chvsmttqjzjkn`，請輸入下列陳述式：

   ```
   START sqltxtract.sql chvsmttqjzjkn sqltxplain_user_password                    
   ```

   SQLT 會在執行 SQLT 命令的目錄中產生 HTML 報告及相關的資源，並全部壓縮成一個 .zip 檔案。

1.  (選用) 若要讓應用程式使用者利用 SQLT 來診斷 SQL 陳述式，請執行下列陳述式，將 `SQLT_USER_ROLE` 授予每個應用程式使用者：

   ```
   GRANT SQLT_USER_ROLE TO application_user_name;                
   ```
**注意**  
Oracle 不建議以 `SYS` 使用者或具備 `DBA` 角色的使用者來執行 SQLT。最好將 `SQLT_USER_ROLE` 授予應用程式使用者，再以應用程式使用者的帳戶來執行 SQLT 診斷。

## 升級 SQLT 選項
<a name="Oracle.Options.SQLT.Upgrading"></a>

使用 Amazon RDS for Oracle 之後，可以將 SQLT 選項從您現有的版本升級到更新版本。若要升級 SQLT 選項，請為新版 SQLT 完成 [使用 SQLT](#Oracle.Options.SQLT.Using) 中的步驟 1–3。另外，如果您在該節的步驟 7 中授予舊版 SQLT 的權限，請再次對於新版 SQLT 授予該權限。

升級 SQLT 選項會導致失去舊版 SQLT 的中繼資料。舊版 SQLT 的結構描述和相關物件都會被捨棄，並安裝較新版的 SQLT。如需 SQLT 最新版變更的詳細資訊，請參閱「My Oracle Support」網站上的[文件 1614201.1](https://support.oracle.com/epmos/faces/DocumentDisplay?parent=DOCUMENT&sourceId=215187.1&id=1614201.1)。

**注意**  
不支援版本降級。

## 修改 SQLT 設定
<a name="Oracle.Options.SQLT.ModifySettings"></a>

在啟用 SQLT 之後，您可以修改該選項的 `LICENSE_PACK` 和 `VERSION` 設定。

如需如何修改選項設定的詳細資訊，請參閱[修改選項設定](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption)。如需每項設定的詳細資訊，請參閱[SQLT 選項設定](#Oracle.Options.SQLT.Options)。

## 移除 SQLT 選項
<a name="Oracle.Options.SQLT.Remove"></a>

您可以從資料庫執行個體中移除 SQLT。

若要從資料庫執行個體中移除 SQLT，請執行下列其中一個動作：
+ 若要從多個資料庫執行個體中移除 SQLT，請從資料庫執行個體所屬的選項群組中移除 SQLT 選項。此變更會影響使用選項群組的所有資料庫執行個體。如需更多詳細資訊，請參閱 [從選項群組移除選項](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)。

   
+ 若要從單一資料庫執行個體中移除 SQLT，請修改資料庫執行個體，並指定不包括 SQLT 選項的不同選項群組。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。如需詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

# Oracle Statspack
<a name="Appendix.Oracle.Options.Statspack"></a>

Oracle Statspack 選項會安裝和啟用 Oracle Statspack 效能統計資料功能。Oracle Statspack 是 SQL、PL/SQL 和 SQL\$1Plus 指令碼的集合，這些指令碼會收集、存放並顯示效能資料。如需有關使用 Oracle Statspack 的資訊，請參閱 Oracle 文件中的 [Oracle Statspack](http://docs.oracle.com/cd/E13160_01/wli/docs10gr3/dbtuning/statsApdx.html)。

**注意**  
Oracle Statspack 不再由 Oracle 所支援，已替換為更進階的「自動工作負載資料儲存器 (AWR)」。只有已購買診斷套件的 Oracle Enterprise Edition 客戶才能使用 AWR。您可以將 Oracle Statspack 與 Amazon RDS 上的任何 Oracle 資料庫引擎搭配使用。您無法在 Amazon RDS 讀取複本上執行 Oracle Statspack。

## 設定 Oracle Statspack
<a name="Appendix.Oracle.Options.Statspack.setting-up"></a>

若要執行 Statspack 指令碼，您必須新增 Statspack 選項。

**設定 Oracle Statspack**

1. 在 SQL 用戶端中，使用管理帳戶登入 Oracle 資料庫。

1. 根據是否已安裝 Statspack，執行下列其中一個動作：
   + 如果已安裝 Statspack，且 `PERFSTAT` 帳戶與 Statspack 相關聯，請跳至步驟 4。
   + 如果沒有安裝 Statspack，且 `PERFSTAT` 帳戶存在，請按以下方式捨棄帳戶：

     ```
     DROP USER PERFSTAT CASCADE;
     ```

     否則，嘗試新增 Statspack 選項會產生錯誤和 `RDS-Event-0058`。

1. 將 Statspack 選項新增至選項群組。請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

   Amazon RDS 會自動在資料庫執行個體上安裝 Statspack 指令碼，然後設定 `PERFSTAT` 帳戶。

1. 使用以下 SQL 陳述式重設密碼，用新密碼替換 *pwd*：

   ```
   ALTER USER PERFSTAT IDENTIFIED BY pwd ACCOUNT UNLOCK;
   ```

   您可以使用 `PERFSTAT` 使用者帳戶登入並執行 Statspack 指令碼。

1. 請使用下列陳述式將 `CREATE JOB` 權限授予 `PERFSTAT` 帳戶：

   ```
   GRANT CREATE JOB TO PERFSTAT;
   ```

1. 確定已填入 `PERFSTAT.STATS$IDLE_EVENT` 表格中的閒置等待事件。

   由於 Oracle 錯誤 28523746，`PERFSTAT.STATS$IDLE_EVENT` 中的閒置等待事件可能不會填入。若要確保所有閒置事件都可用，請執行下列陳述式：

   ```
   INSERT INTO PERFSTAT.STATS$IDLE_EVENT (EVENT)
   SELECT NAME FROM V$EVENT_NAME WHERE WAIT_CLASS='Idle'
   MINUS
   SELECT EVENT FROM PERFSTAT.STATS$IDLE_EVENT;
   COMMIT;
   ```

## 產生 Statspack 報告
<a name="Appendix.Oracle.Options.Statspack.generating-reports"></a>

Statspack 報告會比較兩個快照。

**產生 Statspack 報告**

1. 在 SQL 用戶端中，使用 `PERFSTAT` 帳戶登入 Oracle 資料庫。

1. 使用下列其中一種技巧建立快照：
   + 手動建立 Statspack 快照。
   + 建立在指定時間間隔之後建立 Statspack 快照的任務。例如，下列工作每小時會建立一個 Statspack 快照：

     ```
     VARIABLE jn NUMBER;
     exec dbms_job.submit(:jn, 'statspack.snap;',SYSDATE,'TRUNC(SYSDATE+1/24,''HH24'')');
     COMMIT;
     ```

1. 使用下列查詢檢視快照：

   ```
   SELECT SNAP_ID, SNAP_TIME FROM STATS$SNAPSHOT ORDER BY 1;
   ```

1. 執行 Amazon RDS 程序 `rdsadmin.rds_run_spreport`，以快照 ID 取代 *begin\$1snap* 和 *end\$1snap* 快照：

   ```
   exec rdsadmin.rds_run_spreport(begin_snap,end_snap);
   ```

   例如，下列命令會根據 Statspack 快照 1 和 2 之間的間隔建立報告：

   ```
   exec rdsadmin.rds_run_spreport(1,2);
   ```

   Statspack 報告的檔案名稱包含兩個快照的數目。例如，使用 Statspack 快照 1 和 2 所建立的報告檔案會命名為 `ORCL_spreport_1_2.lst`。

1. 監控輸出是否有錯誤。

   Oracle Statspack 會在執行報表之前執行檢查。因此，您也可能會在命令輸出中看到錯誤訊息。例如，您可能會嘗試根據無效範圍產生報告，其中 Statspack 快照集的開始值大於結束值。在這種情況下，輸出會顯示錯誤訊息，但資料庫引擎不會產生錯誤檔案。

   ```
   exec rdsadmin.rds_run_spreport(2,1);
   *
   ERROR at line 1:
   ORA-20000: Invalid snapshot IDs. Find valid ones in perfstat.stats$snapshot.
   ```

   如果您使用 Statspack 快照的無效數字，則輸出會顯示錯誤。例如，如果您嘗試產生快照 1 和 50 的報告，但快照 50 不存在，則輸出會顯示錯誤。

   ```
   exec rdsadmin.rds_run_spreport(1,50);
   *
   ERROR at line 1:
   ORA-20000: Could not find both snapshot IDs
   ```

1. (選用) 

   若要擷取報表，請呼叫追蹤檔程序，如 [使用 Oracle 追蹤檔案](USER_LogAccess.Concepts.Oracle.md#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles) 中所述。

   或者，從 RDS 主控台下載 Statspack 報告。移至資料庫執行個體詳細資訊的**日誌**區段，然後選擇**下載**。下列範例會顯示 `trace/ORCL_spreport_1_2.lst`  
![\[在 RDS 主控台中顯示 Oracle 日誌檔案的清單。系統會圈出下列追蹤檔案：trace/ORCL_spreport_1_2.lst。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/statspack1.png)

   如果在產生報告時發生錯誤，則資料庫引擎使用相同的命名慣例做為報告，但擁有 `.err` 的副檔名。例如，若使用 Statspack 快照 1 和 7 建立報告時發生錯誤，則報告檔案會命名為 `ORCL_spreport_1_7.err`。您可以使用與標準快照報告相同的技巧來下載錯誤報告。

## 移除 Statspack 快照
<a name="Appendix.Oracle.Options.Statspack.removing-files"></a>

若要移除 Oracle Statspack 快照的範圍，請使用下列命令：

```
exec statspack.purge(begin snap, end snap); 
```

# Oracle 時區
<a name="Appendix.Oracle.Options.Timezone"></a>

若要變更您 Oracle 資料庫執行個體所使用的系統時區，請使用時區選項。例如，您可以變更資料庫執行個體的時區，以與現場部署環境或舊型應用程式相容。時區選項會變更主機層級的時區。變更時區會影響所有日期欄和值，包括 `SYSDATE` 和 `SYSTIMESTAMP`。

時區選項不同於 `rdsadmin_util.alter_db_time_zone` 命令。`alter_db_time_zone` 命令只會變更特定資料類型的時區。時區選項會變更所有日期欄和值的時區。如需有關 `alter_db_time_zone` 的詳細資訊，請參閱 [設定資料庫時區](Appendix.Oracle.CommonDBATasks.TimeZoneSupport.md)。如需升級考量的詳細資訊，請參閱[時區考量](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.DST)。

## 設定時區的限制
<a name="Appendix.Oracle.Options.Timezone.Restrictions"></a>

時區選項是永久且持續的選項。因此，您無法執行以下動作：
+ 在新增時區選項之後，從選項群組中將該選項移除。
+ 在新增選項群組之後，從資料庫執行個體中將其移除。
+ 將選項的時區設定修改為其他時區。

## 設定時區的建議
<a name="Appendix.Oracle.Options.Timezone.PreReqs"></a>

在您將時區選項新增至生產資料庫之前，強烈建議您執行下列動作：
+ 拍攝您資料庫執行個體的快照。如果您不小心設定為錯誤的時區，則必須將您的資料庫執行個體復原為先前的時區設定。如需詳細資訊，請參閱[為 Amazon RDS 的單一可用區域資料庫執行個體建立資料庫快照](USER_CreateSnapshot.md)。
+ 將時區選項新增至測試資料庫執行個體。新增時區選項可能導致資料表使用系統日期來新增日期或時間的問題。建議您在測試執行個體上分析資料和應用程式。如此一來，您就可以評估變更時區對生產執行個體的影響。

如果您的資料庫執行個體使用預設選項群組，請遵循下列步驟：

1. 拍攝您資料庫執行個體的快照。

1. 將時區選項新增至您的資料庫執行個體。

如果您的資料庫執行個體目前使用非預設選項群組，請遵循下列步驟：

1. 拍攝您資料庫執行個體的快照。

1. 建立新的選項群組。

1. 新增時區選項至其中，以及目前與現有選項群組相關聯的所有其他選項。

   這可防止在啟用時區選項時解除安裝現有選項。

1. 將選項群組新增至您的資料庫執行個體。

## 時區選項設定
<a name="Appendix.Oracle.Options.Timezone.Options"></a>

Amazon RDS 支援時區選項的下列設定。


****  

| 選項設定 | 有效值 | 描述 | 
| --- | --- | --- | 
| `TIME_ZONE` |  其中一個可用的時區。如需完整清單，請參閱[可用時區](#Appendix.Oracle.Options.Timezone.Zones)。  |  資料庫執行個體的新時區。  | 

## 新增時區選項
<a name="Appendix.Oracle.Options.Timezone.Add"></a>

完成下列步驟，將時區選項新增至資料庫執行個體：

1. (建議) 擷取您資料庫執行個體的快照。

1. 執行以下其中一個任務：
   + 從頭開始建立新的選項群組。如需詳細資訊，請參閱[建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。
   + 使用 AWS CLI 或 API 複製現有的選項群組。如需詳細資訊，請參閱[刪除選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Copy)。
   + 重複使用現有的非預設選項群組。最佳實務是使用目前未與任何資料庫執行個體或快照相關聯的選項群組。

1. 將新選項新增至上一個步驟的選項群組。

1. 如果目前與資料庫執行個體相關聯的選項群組已啟用選項，請將這些選項新增至新的選項群組。此策略可防止在啟用新選項時解除安裝現有選項。

1. 將新選項群組新增至您的資料庫執行個體。

當您新增時區選項時，在資料庫執行個體自動重新啟動時會發生短暫的中斷。

### 主控台
<a name="Appendix.Oracle.Options.Timezone.Console"></a>

**將時區選項新增至選項群組，並將其與資料庫執行個體建立關聯**

1. 在 RDS 主控台中，選擇**選項群組**。

1. 選擇您要新增選項的選項群組名稱。

1. 選擇 **Add option (新增選項)**。

1. 對於**選項名稱**，選擇 **Timezone**，然後設定選項設定。

1. 將選項群組與新的或現有的資料庫執行個體建立關聯：
   + 針對新的資料庫執行個體，在啟動執行個體時套用選項群組。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
   + 針對現有的資料庫執行個體，可以透過修改執行個體並附加新的選項群組來套用選項群組。當您將新選項新增至現有的資料庫執行個體時，在資料庫執行個體自動重新啟動時會發生短暫的中斷。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

### AWS CLI
<a name="Appendix.Oracle.Options.Timezone.CLI"></a>

下列範例使用 AWS CLI [add-option-to-option-group](https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html) 命令，將 `Timezone`選項和 `TIME_ZONE`選項設定新增至名為 的選項群組`myoptiongroup`。時區會設為 `Africa/Cairo`。

對於 Linux、macOS 或 Unix：

```
aws rds add-option-to-option-group \
    --option-group-name "myoptiongroup" \
    --options "OptionName=Timezone,OptionSettings=[{Name=TIME_ZONE,Value=Africa/Cairo}]" \
    --apply-immediately
```

在 Windows 中：

```
aws rds add-option-to-option-group ^
    --option-group-name "myoptiongroup" ^
    --options "OptionName=Timezone,OptionSettings=[{Name=TIME_ZONE,Value=Africa/Cairo}]" ^
    --apply-immediately
```

## 修改時區設定
<a name="Appendix.Oracle.Options.Timezone.ModifySettings"></a>

時區選項是永久且持續的選項。在新增此選項之後，您無法從選項群組中移除它。在新增選項群組之後，您無法從資料庫執行個體中移除它。您無法將選項的時區設定修改為不同的時區。如果您未正確地設定時區，則可以使用您在新增時區選項之前所取得的快照來復原資料庫執行個體。

## 移除時區選項
<a name="Appendix.Oracle.Options.Timezone.Remove"></a>

時區選項是永久且持續的選項。在新增此選項之後，您無法從選項群組中移除它。在新增選項群組之後，您無法從資料庫執行個體中移除它。若要移除設定時區選項，請使用您在新增時區選項之前所取得的快照來復原資料庫執行個體。

## 可用時區
<a name="Appendix.Oracle.Options.Timezone.Zones"></a>

您可對時區選項使用下列值。


****  

| 區域 | 時區 | 
| --- | --- | 
|  非洲  |  非洲/開羅，非洲/卡薩布蘭卡，非洲/哈拉雷，非洲/拉哥斯，非洲/魯安達，非洲/蒙羅維亞，非洲/奈洛比，非洲/的黎波里，非洲/溫吐克   | 
|  美洲  |  美洲/阿拉瓜伊納，美洲/阿根廷/布宜諾斯艾利斯，美洲/亞松森，美洲/波哥大，美洲/卡拉卡斯，美洲/芝加哥，美洲/赤瓦瓦州，美洲/古雅巴，美洲/丹佛，美洲/底特律，美洲/福塔力沙，美洲/哥特哈布，美洲/瓜地馬拉，美洲/哈利法克斯，美洲/利馬，美洲/洛杉磯，美洲/瑪瑙斯，美洲/馬塔莫羅斯，美洲/墨西哥市，美洲/蒙特利，美洲/蒙特維多，美洲/紐約州，美洲/鳳凰城，美洲/聖地牙哥，美洲/聖保羅，美洲/提華納，美洲/多倫多   | 
|  亞洲  |  亞洲/安曼，亞洲/阿什哈巴德，亞洲/巴格達，亞洲/巴庫，亞洲/曼谷，亞洲/貝魯特，亞洲/加爾各答，亞洲/大馬士革，亞洲/達卡，亞洲/香港，亞洲/伊爾庫次克，亞洲/雅加達，亞洲/耶路撒冷，亞洲/喀布爾，亞洲/喀拉蚩，亞洲/加德滿都，亞洲/加爾各答，亞洲/克拉斯諾雅斯克，亞洲/馬加丹，亞洲/馬尼拉，亞洲/馬斯喀特，亞洲/新西伯利亞，亞洲/仰光，亞洲/利雅德，亞洲/首爾，亞洲/上海，亞洲/新加坡，亞洲/台北，亞洲/德黑蘭，亞洲/東京，亞洲/庫倫，亞洲/海參崴，亞洲/雅庫次克，亞洲/葉里溫   | 
|  大西洋  |  大西洋/亞速爾群島，大西洋/維德角群島   | 
|  澳大利亞  |  澳洲/阿德萊德，澳洲/布利斯班，澳洲/達爾文，澳洲/尤克拉，澳洲/荷巴特，澳洲/羅豪，澳洲/伯斯，澳洲/雪梨   | 
|  巴西  |  巴西/迪諾羅尼亞，巴西/東部   | 
|  加拿大  |  加拿大/紐芬蘭，加拿大/薩克其萬省   | 
|  等等  |  等等/GMT-3  | 
|  歐洲  |  歐洲/阿姆斯特丹，歐洲/雅典，歐洲/柏林，歐洲/都柏林，歐洲/赫爾辛基，歐洲/加里寧格勒，歐洲/倫敦，歐洲/馬德里，歐洲/莫斯科，歐洲/巴黎，歐洲/布拉格，歐洲/羅馬，歐洲/塞拉耶佛   | 
|  太平洋  |  太平洋/亞庇，太平洋/奧克蘭，太平洋/查塔姆，太平洋/斐濟，太平洋/關島，太平洋/檀香山，太平洋/刻里提瑪斯，太平洋/馬克沙斯，太平洋/薩摩亞，太平洋/東加塔普，太平洋/威克   | 
|  美國  |  美國/阿拉斯加，美國/中部，美國/東印第安納州，美國/東部，美國/太平洋   | 
|  UTC  |  UTC  | 

# Oracle 時區檔案自動升級
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade"></a>

利用 `TIMEZONE_FILE_AUTOUPGRADE` 選項，您可在您的 RDS for Oracle 資料庫執行個體上將目前的時區檔案升級為最新版本。

**Topics**
+ [

# Oracle 時區檔案的概觀
](Appendix.Oracle.Options.Timezone-file-autoupgrade.tz-overview.md)
+ [

# 更新時區檔案的策略
](Appendix.Oracle.Options.Timezone-file-autoupgrade.strategies.md)
+ [

# 時區檔案更新期間的停機時間
](Appendix.Oracle.Options.Timezone-file-autoupgrade.considerations.md)
+ [

# 準備更新時區檔案
](Appendix.Oracle.Options.Timezone-file-autoupgrade.preparing.md)
+ [

# 新增時區檔案自動升級選項
](Appendix.Oracle.Options.Timezone-file-autoupgrade.adding.md)
+ [

# 更新時區檔案後，檢查您的資料
](Appendix.Oracle.Options.Timezone-file-autoupgrade.checking.md)

# Oracle 時區檔案的概觀
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.tz-overview"></a>

Oracle Database *時區檔案*存放下列資訊：
+ 與國際標準時間 (UTC) 的偏移
+ 日光節約時間 (DST) 的轉換時間
+ 標準時間和 DST 的縮寫

Oracle Database 提供多個版本的時區檔案。當您在內部部署環境中建立 Oracle 資料庫時，請選擇時區檔案版本。如需詳細資訊，請參閱《Oracle Database 全球化支援指南》**中的[選擇時區檔案](https://docs.oracle.com/en/database/oracle/oracle-database/19/nlspg/datetime-data-types-and-time-zone-support.html#GUID-805AB986-DE12-4FEA-AF56-5AABCD2132DF)。

如果 DST 的規則變更，Oracle 會發佈新的時區檔案。Oracle 會獨立於每季版本更新 (RU) 和版本更新修訂版 (RUR) 的排程，發行這些新的時區檔案。時區檔案位於資料庫主機上的目錄 `$ORACLE_HOME/oracore/zoneinfo/` 中。時區檔案名稱使用格式 DSTv*version*，如 DSTv35 中所示。

## 時區檔案如何影響資料傳輸
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.data-transfer"></a>

在 Oracle 資料庫中，`TIMESTAMP WITH TIME ZONE` 資料類型儲存時間戳記和時區資料。具 `TIMESTAMP WITH TIME ZONE` 資料類型的資料會使用相關聯時區檔案版本中的規則。因此，當您更新時區檔案時，現有的 `TIMESTAMP WITH TIME ZONE` 資料會受到影響。

當您在使用不同版本時區檔案的資料庫之間傳輸資料時，可能會發生問題。例如，若您從具有較目標資料庫更高之時區檔案版本的來源資料庫匯入資料，資料庫會發出 `ORA-39405` 錯誤。在以前，您必須使用下列任一技術來解決此錯誤：
+ 利用所需的時區檔案建立一個 RDS for Oracle 資料庫執行個體，從來源資料庫匯出資料，接著將其匯入新的資料庫。
+ 使用 AWS DMS 或邏輯複寫來遷移您的資料。

## 使用 TIMEZONE\$1FILE\$1AUTOUPGRADE 選項自動更新
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.option-overview"></a>

當連接至 RDS for Oracle 資料庫執行個體的選項群組包含 `TIMEZONE_FILE_AUTOUPGRADE` 選項時，RDS 會自動更新您的時區檔案。藉由確保 Oracle 資料庫使用相同的時區檔案版本，您可以在不同環境之間移動資料時避免耗費時間的手動技術。容器資料庫 (CDB) 和非 CDB 都支援 `TIMEZONE_FILE_AUTOUPGRADE` 選項。

將 `TIMEZONE_FILE_AUTOUPGRADE` 選項新增至選項群組時，您可以選擇立即新增選項還是在維護時段新增選項。在資料庫執行個體套用新選項之後，RDS 會檢查是否可以安裝較新的 DSTv*version* 檔案。目標 DSTv*version* 取決於下列項目：
+ 您的資料庫執行個體目前正在執行的次要引擎版本
+ 您要將資料庫執行個體升級至其中的次要引擎版本

例如，您目前的時區檔案版本可能是 DSTv33。當 RDS 將更新套用至您的選項群組時，可能會判斷 DSTv34 目前可在您的資料庫執行個體檔案系統上使用。然後，RDS 會自動將您的時區檔案更新為 DSTv34。

若要在支援的 RDS 版本更新中尋找可用的 DST 版本，請查看[適用於 Oracle 的 Amazon Relational Database Service (Amazon RDS) 版本備註](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/Welcome.html)中的修補程式。例如，[版本 19.0.0.0.ru-2022-10.rur-2022-10.r1](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html#oracle-version-RU-RUR.19.0.0.0.ru-2022-10.rur-2022-10.r1) 列出修補程式 34533061: RDBMS - DSTV39 UPDATE - TZDATA2022C。

# 更新時區檔案的策略
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.strategies"></a>

升級資料庫引擎並將 `TIMEZONE_FILE_AUTOUPGRADE` 選項新增至選項群組是個別的操作。如果有更新的時區檔案可用，新增 `TIMEZONE_FILE_AUTOUPGRADE` 選項會初始化時區檔案的更新。您可以立即或在下一個維護時段執行下列命令 (僅顯示相關選項)：
+ 僅使用下列 RDS CLI 命令升級資料庫引擎：

  ```
  modify-db-instance --engine-version name ...
  ```
+ 僅使用下列 CLI 命令新增 `TIMEZONE_FILE_AUTOUPGRADE` 選項：

  ```
  add-option-to-option-group --option-group-name name --options OptionName=TIMEZONE_FILE_AUTOUPGRADE ...
  ```
+ 使用以下 CLI 命令升級資料庫引擎，並將新的選項群組新增至執行個體：

  ```
  modify-db-instance --engine-version name --option-group-name name ...
  ```

您的更新策略取決於您要一起升級資料庫和時區檔案，還是只執行其中一個操作。請注意，如果您更新選項群組，然後在不同的 API 操作中升級資料庫引擎，則升級資料庫引擎時，時區檔案更新可能正在進行中。

本節中的範例假設如下情況：
+ 您尚未將 `TIMEZONE_FILE_AUTOUPGRADE` 新增至目前與資料庫執行個體相關聯的選項群組。
+ 您的資料庫執行個體使用資料庫版本 19.0.0.0.ru-2019-07.rur-2019-07.r1 和時區檔案 DSTv33。
+ 您的資料庫執行個體檔案系統包含檔案 DSTv34。
+ 版本更新 19.0.0.0.ru-2022-10.rur-2022-10.r1 包含 DSTv35。

若要更新您的時區檔案，您可以使用下列策略。

**Topics**
+ [

## 更新時區檔案，而不升級引擎
](#Appendix.Oracle.Options.Timezone-file-autoupgrade.strategies.no-upgrade)
+ [

## 升級時區檔案和資料庫引擎版本
](#Appendix.Oracle.Options.Timezone-file-autoupgrade.strategies.upgrade)
+ [

## 升級您的資料庫引擎版本，而不更新時區檔案
](#Appendix.Oracle.Options.Timezone-file-autoupgrade.strategies.upgrade-only)

## 更新時區檔案，而不升級引擎
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.strategies.no-upgrade"></a>

在這個案例中，您的資料庫使用的是 DSTv33，但 DSTv34 可在資料庫執行個體檔案系統上使用。您想要將資料庫執行個體所使用的時區檔案從 DSTv33 更新為 DSTv34，但不想要將您的引擎升級至次要版本，其中包括 DSTv35。

在 `add-option-to-option-group` 命令中，將 `TIMEZONE_FILE_AUTOUPGRADE` 新增至資料庫執行個體所使用的選項群組。指定要立即新增選項還是將其延遲至維護時段。套用 `TIMEZONE_FILE_AUTOUPGRADE` 選項後，RDS 會執行下列操作：

1. 檢查是否有新的 DST 版本。

1. 判斷 DSTv34 是否可在檔案系統上使用。

1. 立即更新時區檔案。

## 升級時區檔案和資料庫引擎版本
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.strategies.upgrade"></a>

在這個案例中，您的資料庫使用的是 DSTv33，但 DSTv34 可在資料庫執行個體檔案系統上使用。您想要將資料庫引擎升級至次要版本 19.0.0.0.ru-2022-10.rur-2022-10.r1 (其中包括 DSTv35)，並在引擎升級期間將時區檔案更新為 DSTv35。因此，您的目標是跳過 DSTv34 並將您的時區檔案直接更新為 DSTv35。

若要一起升級引擎和時區檔案，請搭配 `--option-group-name` 和 `--engine-version` 選項執行 `modify-db-instance`。您可以立即執行命令，或將其延遲至維護時段。`In --option-group-name`，請指定包含 `TIMEZONE_FILE_AUTOUPGRADE` 選項的選項群組。例如：

```
aws rds modify-db-instance 
    --db-instance-identifier my-instance \
    --engine-version new-version \
    ----option-group-name og-with-timezone-file-autoupgrade \    
    --apply-immediately
```

RDS 開始將您的引擎升級至 19.0.0.0.ru-2022-10.rur-2022-10.r1。套用 `TIMEZONE_FILE_AUTOUPGRADE` 選項之後，RDS 會檢查是否有新的 DST 版本、查看 DSTv35 是否可在 19.0.0.0.ru-2022-10.rur-2022-10.r1 取得，並立即開始更新至 DSTv35。

若要立即升級您的引擎，然後升級時區檔案，請依序執行操作：

1. 僅使用下列 CLI 命令升級資料庫引擎：

   ```
   aws rds modify-db-instance \
       --db-instance-identifier my-instance \
       --engine-version new-version \
       --apply-immediately
   ```

1. 使用下列 CLI 命令，將 `TIMEZONE_FILE_AUTOUPGRADE` 選項新增到連接至執行個體的選項群組：

   ```
   aws rds add-option-to-option-group \
       --option-group-name og-in-use-by-your-instance \
       --options OptionName=TIMEZONE_FILE_AUTOUPGRADE \
       --apply-immediately
   ```

## 升級您的資料庫引擎版本，而不更新時區檔案
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.strategies.upgrade-only"></a>

在這個案例中，您的資料庫使用的是 DSTv33，但 DSTv34 可在資料庫執行個體檔案系統上使用。您想要將資料庫引擎升級到版本 19.0.0.0.ru-2022-10.rur-2022-10.r1 (其中包括 DSTv35)，但保留時區檔案 DSTv33。您可能會因下列原因選擇此策略：
+ 您的資料不使用 `TIMESTAMP WITH TIME ZONE` 資料類型。
+ 您的資料會使用 `TIMESTAMP WITH TIME ZONE` 資料類型，但您的資料不會受到時區變更的影響。
+ 您想要延遲更新時區檔案，因為您無法容忍額外的停機時間。

您的策略取決於下列哪個可能性是真的：
+ 您的資料庫執行個體並未與包含 `TIMEZONE_FILE_AUTOUPGRADE` 的選項群組相關聯。在您的 `modify-db-instance` 命令中，請勿指定新的選項群組，這樣 RDS 就不會更新您的時區檔案。
+ 您的資料庫執行個體目前與包含 `TIMEZONE_FILE_AUTOUPGRADE` 的選項群組相關聯。在單一 `modify-db-instance` 命令中，將您的資料庫執行個體與未包含 `TIMEZONE_FILE_AUTOUPGRADE` 的選項群組建立關聯，然後將您的資料庫引擎升級至 19.0.0.0.ru-2022-10.rur-2022-10.r1。

# 時區檔案更新期間的停機時間
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.considerations"></a>

當 RDS 更新您的時區檔案時，使用 `TIMESTAMP WITH TIME ZONE` 的現有資料可能會變更。在此情況下，您的主要考量是停機時間。

**警告**  
若您新增 `TIMEZONE_FILE_AUTOUPGRADE` 選項，則您的引擎升級可能會延長停機時間。更新大型資料庫的時區資料可能需要花費數小時或數天。

時區檔案更新的長度視下列因素而定：
+ 您資料庫中 `TIMESTAMP WITH TIME ZONE` 資料的總量
+ 資料庫執行個體組態
+ DB instance class (資料庫執行個體類別)
+ 儲存組態
+ 資料庫組態
+ 資料庫參數設定

當您執行下列動作時，可能會出現額外的停機時間：
+ 資料庫執行個體使用過期時區檔案時，請將選項新增至選項群組
+ 當新引擎版本包含一個新版本的時區檔案時，請升級 Oracle 資料庫引擎

**注意**  
於時區檔案更新期間，RDS for Oracle 會呼叫 `PURGE DBA_RECYCLEBIN`。

# 準備更新時區檔案
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.preparing"></a>

時區檔案升級有兩個不同的階段：準備和升級。雖然並非必要，但強烈建議您執行準備步驟。於此步驟中，您可以找出將受執行 PL/SQL 程序 `DBMS_DST.FIND_AFFECTED_TABLES` 影響的資料。如需準備視窗的詳細資訊，請參閱 Oracle 資料庫文件中的[使用時區資料升級時區檔案和時間戳記](https://docs.oracle.com/en/database/oracle/oracle-database/19/nlspg/datetime-data-types-and-time-zone-support.html#GUID-B0ACDB2E-4B49-4EB4-B4CC-9260DAE1567A)。

**如要準備更新時區檔案**

1. 使用 SQL 用戶端連線至您的 Oracle 資料庫。

1. 決定目前使用的時區檔案版本。

   ```
   SELECT * FROM V$TIMEZONE_FILE;
   ```

1. 決定您資料庫執行個體上可用的最新時區檔案版本。

   ```
   SELECT DBMS_DST.GET_LATEST_TIMEZONE_VERSION FROM DUAL;
   ```

1. 決定具有類型 `TIMESTAMP WITH LOCAL TIME ZONE` 或 `TIMESTAMP WITH TIME ZONE` 資料欄的資料表總大小。

   ```
   SELECT SUM(BYTES)/1024/1024/1024 "Total_size_w_TSTZ_columns_GB"
   FROM   DBA_SEGMENTS
   WHERE  SEGMENT_TYPE LIKE 'TABLE%'
   AND    (OWNER, SEGMENT_NAME) IN
            (SELECT OWNER, TABLE_NAME
             FROM   DBA_TAB_COLUMNS
             WHERE  DATA_TYPE LIKE 'TIMESTAMP%TIME ZONE');
   ```

1. 決定具有類型 `TIMESTAMP WITH LOCAL TIME ZONE` 或 `TIMESTAMP WITH TIME ZONE` 資料欄的區段名稱和大小。

   ```
   SELECT OWNER, SEGMENT_NAME, SUM(BYTES)/1024/1024/1024 "SEGMENT_SIZE_W_TSTZ_COLUMNS_GB"
   FROM   DBA_SEGMENTS
   WHERE  SEGMENT_TYPE LIKE 'TABLE%'
   AND    (OWNER, SEGMENT_NAME) IN
            (SELECT OWNER, TABLE_NAME
             FROM   DBA_TAB_COLUMNS
             WHERE  DATA_TYPE LIKE 'TIMESTAMP%TIME ZONE')
   GROUP BY OWNER, SEGMENT_NAME;
   ```

1. 執行準備步驟。
   + 程序 `DBMS_DST.CREATE_AFFECTED_TABLE` 會建立資料表，來儲存任何受影響的資料。您將此資料表的名稱傳遞給 `DBMS_DST.FIND_AFFECTED_TABLES` 程序。如需詳細資訊，請參閱 Oracle 資料庫文件中的 [CREATE\$1AFFECTED\$1TABLE 程序](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DST.html#GUID-C53BAABA-914A-404C-9CD5-823257BE0B00)。
   + 此程序 `CREATE_ERROR_TABLE` 會建立一個資料表來記錄錯誤。如需詳細資訊，請參閱 Oracle 資料庫文件中的 [CREATE\$1ERROR\$1TABLE 程序](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DST.html#GUID-6A7EA024-B02D-4486-B1D6-EF6ABF5DE507)。

   下列範例會建立受影響的資料和錯誤資料表，並找出所有受影響的資料表。

   ```
   EXEC DBMS_DST.CREATE_ERROR_TABLE('my_error_table')
   EXEC DBMS_DST.CREATE_AFFECTED_TABLE('my_affected_table')
   
   EXEC DBMS_DST.BEGIN_PREPARE(new_version);
   EXEC DBMS_DST.FIND_AFFECTED_TABLES('my_affected_table', TRUE, 'my_error_table');
   EXEC DBMS_DST.END_PREPARE;
   
   SELECT * FROM my_affected_table;
   SELECT * FROM my_error_table;
   ```

1. 查詢受影響和錯誤資料表。

   ```
   SELECT * FROM my_affected_table;
   SELECT * FROM my_error_table;
   ```

# 新增時區檔案自動升級選項
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.adding"></a>

當您將選項新增至選項群組時，選項群組會處於下列其中一種狀態：
+ 現有的選項群組目前連接至少一個資料庫執行個體。當您新增選項時，使用此選項群組的所有資料庫執行個體都會自動重新啟動。這會導致短暫的中斷。
+ 現有的選項群組未連接至任何資料庫執行個體。您計劃新增選項，然後將現有選項群組與現有資料庫執行個體或新的資料庫執行個體建立關聯。
+ 您可以建立新的選項群組並新增選項。您計劃將新的選項群組與現有的資料庫執行個體或與新的資料庫執行個體建立關聯。

## 主控台
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.console"></a>

**如要將時區檔案自動升級新增至資料庫執行個體**

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

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 判斷要使用的選項群組。您可以建立新的選項群組或使用現有的選項群組。如果您要使用現有的選項群組，請跳到下一個步驟。否則請使用下列設定來建立自訂資料庫選項群組：

   1. 針對 **Engine** (引擎)，選擇適用於資料庫執行個體的 Oracle Database 版本。

   1. 針對 **Major engine version (主要引擎版本)**，請選擇適用於資料庫執行個體的版本。

   如需詳細資訊，請參閱[建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 選擇您要修改的選項群組，然後選擇 **Add option (新增選項)**。

1. 在 **Add option (新增選項)** 視窗中，執行下列作業：

   1. 選擇 **TIMEZONE\$1FILE\$1AUTOUPGRADE**。

   1. 若要在所有關聯的資料庫執行個體新增選項時隨即啟用選項，請在 **Apply Immediately (立即套用)**​ 選擇 **​Yes (是)**。如果您選擇了 **No (不)** (預設)，選項將會在下一個維護時段為每個關聯的資料庫執行個體啟用。

1. 當您滿意設定後，選擇 **Add option (新增選項)**。

## AWS CLI
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.CLI"></a>

下列範例使用 AWS CLI [add-option-to-option-group](https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html) 命令，將 `TIMEZONE_FILE_AUTOUPGRADE`選項新增至名為 的選項群組`myoptiongroup`。

針對 Linux、macOS 或 Unix：

```
aws rds add-option-to-option-group \
    --option-group-name "myoptiongroup" \
    --options "OptionName=TIMEZONE_FILE_AUTOUPGRADE" \
    --apply-immediately
```

在 Windows 中：

```
aws rds add-option-to-option-group ^
    --option-group-name "myoptiongroup" ^
    --options "OptionName=TIMEZONE_FILE_AUTOUPGRADE" ^
    --apply-immediately
```

# 更新時區檔案後，檢查您的資料
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.checking"></a>

我們建議您於更新時區檔案後檢查您的資料。在準備步驟期間，RDS for Oracle 會自動建立下列表格：
+ `rdsadmin.rds_dst_affected_tables` - 列出包含受更新影響之資料的表格
+ `rdsadmin.rds_dst_error_table` - 列出更新期間產生的錯誤

這些表格獨立於您在準備視窗中建立的任何表格。如要查看更新的結果，請查詢資料表，如下所示。

```
SELECT * FROM rdsadmin.rds_dst_affected_tables;
SELECT * FROM rdsadmin.rds_dst_error_table;
```

如需有關受影響資料和錯誤資料表結構描述的詳細資訊，請參閱 Oracle 文件中的 [FIND\$1AFFECTED\$1TABLES 程序](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DST.html#GUID-1F977505-671C-4D5B-8570-86956F136199)。

# Oracle 透明資料加密
<a name="Appendix.Oracle.Options.AdvSecurity"></a>

Amazon RDS 支援 Oracle Transparent Data Encryption (TDE)，此為 Oracle Enterprise Edition 中所提供「Oracle 進階安全性」選項的一項功能。此功能會在資料寫入至儲存體之前自動將其加密，並在從儲存體中讀取資料時自動將其解密。此選項僅支援自帶授權 (BYOL) 模型。

TDE 在您需要加密敏感資料的情況下非常有用，以防資料檔案和備份被第三方取得。當您需要遵守安全性相關法規時，TDE 也很有用。

Oracle Database 中 TDE 的詳細說明不在本指南的討論範圍內。如需詳細資訊，請參閱下列 Oracle Database 資源：
+ Oracle Database 文件中的[透明資料加密簡介](https://docs.oracle.com/en/database/oracle/oracle-database/19/asoag/introduction-to-transparent-data-encryption.html#GUID-62AA9447-FDCD-4A4C-B563-32DE04D55952)
+ Oracle Database 文件中的 [Oracle 進階安全性](https://www.oracle.com/security/database-security/)
+ [Oracle 進階安全性透明資料加密最佳實務](https://www.oracle.com/br/a/tech/docs/technical-resources/twp-transparent-data-encryption-bestpractices.pdf)，這是 Oracle 白皮書

如需搭配 RDS for Oracle 使用 TDE 的詳細資訊，請參閱下列部落格：
+ [Amazon RDS 上的 Oracle Database 加密選項](https://aws.amazon.com/blogs/apn/oracle-database-encryption-options-on-amazon-rds/)
+ [使用 遷移啟用跨帳戶 TDE 的 Amazon RDS for Oracle 資料庫執行個體，減少停機時間 AWS DMS](https://aws.amazon.com/blogs/database/migrate-a-cross-account-tde-enabled-amazon-rds-for-oracle-db-instance-with-reduced-downtime-using-aws-dms/)

## TDE 加密模式
<a name="Appendix.Oracle.Options.AdvSecurity.Modes"></a>

「Oracle 透明資料加密」支援兩種加密模式：TDE 資料表空間加密和 TDE 欄加密。TDE 資料表空間加密用於加密全部的應用程式資料表。TDE 欄加密用於加密包含敏感性資料的個別資料元素。您也可以套用混合加密解決方案，即可同時使用 TDE 資料表空間和欄加密。

**注意**  
Amazon RDS 會管理資料庫執行個體的 Oracle 錢包和 TDE 主金鑰。您不需要使用命令 `ALTER SYSTEM set encryption key` 來設定加密金鑰。

啟用 `TDE` 選項後，您可以使用以下命令來檢查 Oracle Wallet 的狀態：

```
SELECT * FROM v$encryption_wallet;
```

若要建立加密的資料表空間，請使用下列命令：

```
CREATE TABLESPACE encrypt_ts ENCRYPTION DEFAULT STORAGE (ENCRYPT);
```

若要指定加密演算法，請使用下列命令：

```
CREATE TABLESPACE encrypt_ts ENCRYPTION USING 'AES256' DEFAULT STORAGE (ENCRYPT);
```

先前用於加密資料表空間的陳述式與您在內部部署 Oracle 資料庫上使用的陳述式相同。

## TDE 選項的限制
<a name="Appendix.Oracle.Options.Timezone.Restrictions"></a>

TDE 選項是永久且持久的。將資料庫執行個體與已啟用 TDE 選項的選項群組建立關聯之後，您就無法執行下列動作：
+ 在目前相關聯的選項群組中停用 `TDE` 選項。
+ 將您的資料庫執行個體與不包含 `TDE` 的不同選項群組建立關聯。
+ 共用使用 `TDE` 選項的資料庫快照。如需共用資料庫快照的詳細資訊，請參閱 [共用 Amazon RDS 的資料庫快照](USER_ShareSnapshot.md)。

如需持久和永久選項的詳細資訊，請參閱 [持久性與永久性選項](USER_WorkingWithOptionGroups.md#Overview.OptionGroups.Permanent)。

## 判斷資料庫執行個體是否使用 TDE
<a name="Appendix.Oracle.Options.AdvSecurity.Querying"></a>

您可能想要判斷資料庫執行個體是否與已啟用 `TDE` 選項的選項群組相關聯。若要檢視資料庫執行個體相關聯的選項群組，請使用 RDS 主控台、 [describe-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) AWS CLI 命令或 API 操作 [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html)。

## 新增 TDE 選項
<a name="Appendix.Oracle.Options.AdvSecurity.Add"></a>

若要將 `TDE` 選項新增至資料庫執行個體，請完成下列步驟：

1. (建議) 擷取您資料庫執行個體的快照。

1. 執行以下其中一個任務：
   + 從頭開始建立新的選項群組。如需詳細資訊，請參閱[建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。
   + 使用 AWS CLI 或 API 複製現有的選項群組。如需詳細資訊，請參閱[刪除選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Copy)。
   + 重複使用現有的非預設選項群組。最佳實務是使用目前未與任何資料庫執行個體或快照相關聯的選項群組。

1. 將新選項新增至上一個步驟的選項群組。

1. 如果目前與資料庫執行個體相關聯的選項群組已啟用選項，請將這些選項新增至新的選項群組。此策略可防止在啟用新選項時解除安裝現有選項。

1. 將新選項群組新增至您的資料庫執行個體。

### 主控台
<a name="Appendix.Oracle.Options.TDE.Console"></a>

**將 TDE 選項新增至選項群組，並將其與您的資料庫執行個體建立關聯**

1. 在 RDS 主控台中，選擇**選項群組**。

1. 選擇您要新增選項的選項群組名稱。

1. 選擇 **Add option (新增選項)**。

1. 對於**選項名稱**，選擇 **TDE**，然後設定選項設定。

1. 選擇 **Add option (新增選項)**。
**重要**  
若您將 **TDE** 選項新增至目前連接至一或多個資料庫執行個體的選項群組，則在所有資料庫執行個體自動重新啟動時會發生短暫的中斷。

   如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

1. 將選項群組與新的或現有的資料庫執行個體建立關聯：
   + 針對新的資料庫執行個體，在啟動執行個體時套用選項群組。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
   + 針對現有的資料庫執行個體，可以透過修改執行個體並附加新的選項群組來套用選項群組。資料庫執行個體不會在此操作中重新啟動。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

### AWS CLI
<a name="Appendix.Oracle.Options.TDE.CLI"></a>

在下列範例中，您可以使用 AWS CLI [add-option-to-option-group](https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html) 命令，將 `TDE`選項新增至名為 的選項群組`myoptiongroup`。如需詳細資訊，請參閱[開始使用：Flink 1.13.2](https://docs.aws.amazon.com/managed-flink/latest/java/earlier.html#getting-started-1-13)。

對於 Linux、macOS 或 Unix：

```
aws rds add-option-to-option-group \
    --option-group-name "myoptiongroup" \
    --options "OptionName=TDE" \
    --apply-immediately
```

在 Windows 中：

```
aws rds add-option-to-option-group ^
    --option-group-name "myoptiongroup" ^
    --options "OptionName=TDE" ^
    --apply-immediately
```

## 將您的資料複製到不包含 TDE 選項的資料庫執行個體
<a name="Appendix.Oracle.Options.AdvSecurity.Remove"></a>

您無法從資料庫執行個體移除 TDE 選項，或將其與不包含 TDE 選項的選項群組建立關聯。若要將資料遷移至不包含 TDE 選項的執行個體，請執行下列操作：

1.  解密資料庫執行個體上的資料。

1.  將資料複製到未與已啟用 `TDE` 之選項群組相關聯的新資料庫執行個體。

1.  刪除您的原始資料庫執行個體。

您可以針對新執行個體，使用與上述資料庫執行個體相同的名稱。

## 搭配 Oracle Data Pump 使用 TDE 時的考量事項
<a name="Appendix.Oracle.Options.AdvSecurity.Pump"></a>

您可以使用 Oracle Data Pump 來匯入或匯出加密的傾印檔案。Amazon RDS 支援針對 Oracle Data Pump 使用密碼加密模式 `(ENCRYPTION_MODE=PASSWORD)`。Amazon RDS 不支援針對 Oracle Data Pump 使用透明加密模式 `(ENCRYPTION_MODE=TRANSPARENT)`。如需詳細資訊，請參閱[使用 Oracle Data Pump 匯入](Oracle.Procedural.Importing.DataPump.md)。

# Oracle UTL\$1MAIL
<a name="Oracle.Options.UTLMAIL"></a>

Amazon RDS 透過使用 UTL\$1MAIL 選項和 SMTP 伺服器支援 Oracle UTL\$1MAIL。您可以利用 UTL\$1MAIL 套件，直接從資料庫傳送電子郵件。Amazon RDS 支援下列 Oracle 版本的 UTL\$1MAIL：
+ Oracle Database 21c (21.0.0.0)，所有版本
+ Oracle 資料庫 19c (19.0.0.0)，所有版本

下列是使用 UTL\$1MAIL 時的一些限制：
+ UTL\$1MAIL 不支援 Transport Layer Security (TLS)，因此電子郵件不會加密。

  若要建立及上傳自訂 Oracle 錢包，以安全地連線至遠端 SSL/TLS 資源，請遵循 [使用憑證和 Oracle 錢包設定 UTL\$1HTTP 存取](Oracle.Concepts.ONA.md) 之中的指示。

  您錢包所需的特定憑證視服務而異。若採用 AWS 服務，您通常可以在 [Amazon Trust Services 儲存庫](https://www.amazontrust.com/repository/)找到這些憑證。
+ UTL\$1MAIL 不支援使用 SMTP 伺服器進行身分驗證。
+ 您只能在電子郵件中傳送單一附件。
+ 您無法傳送大於 32 K 的附件。
+ 您只能使用 ASCII 和延伸二進制編碼十進交換碼 (EBCDIC) 字元編碼。
+ SMTP 連接埠 (25) 是根據彈性網路界面擁有者的政策進行調節。

當您啟用 UTL\$1MAIL 時，僅資料庫執行個體的主要使用者會獲授予執行權限。必要時，主要使用者可將執行權限授予其他使用者，以便他們可以使用 UTL\$1MAIL。

**重要**  
建議您啟用 Oracle 的內建稽核功能來追蹤 UTL\$1MAIL 程序的使用。

## Oracle UTL\$1MAIL 的先決條件
<a name="Oracle.Options.UTLMAIL.PreReqs"></a>

下列是使用 Oracle UTL\$1MAIL 的先決條件：
+ 一部或多部 SMTP 伺服器，以及對應 IP 位址，或者公有或私有網域名稱伺服器 (DNS) 名稱。如需透過自訂 DNS 伺服器解析之私有 DNS 名稱的詳細資訊，請參閱[設定自訂 DNS 伺服器](Appendix.Oracle.CommonDBATasks.System.md#Appendix.Oracle.CommonDBATasks.CustomDNS)。

## 新增 Oracle UTL\$1MAIL 選項
<a name="Oracle.Options.UTLMAIL.Add"></a>

將 Oracle UTL\$1MAIL 選項新增至資料庫執行個體的一般程序如下：

1. 建立新的選項群組，或是複製或修改現有選項群組。

1. 將選項新增至選項群組。

1. 將選項群組與資料庫執行個體建立關聯。

在新增 UTL\$1MAIL 選項之後，只要選項群組為作用中狀態，UTL\$1MAIL 就會為作用中狀態。

**將 UTL\$1MAIL 選項新增至資料庫執行個體**

1. 判斷要使用的選項群組。您可以建立新的選項群組或使用現有的選項群組。如果您要使用現有的選項群組，請跳到下一個步驟。否則請使用下列設定來建立自訂資料庫選項群組：

   1. 針對 **Engine (引擎)**，選擇您想要使用的 Oracle 版本。

   1. 針對 **Major engine version (主要引擎版本)**，請選擇您資料庫執行個體的版本。

   如需更多詳細資訊，請參閱 [建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 **UTL\$1MAIL** 選項新增至選項群組。如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

1. 將選項群組套用至新的或現有的資料庫執行個體：
   + 針對新的資料庫執行個體，您會在啟動執行個體時套用選項群組。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
   + 針對現有的資料庫執行個體，您可以透過修改執行個體並附加新的選項群組來套用選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## 使用 Oracle UTL\$1MAIL
<a name="Oracle.Options.UTLMAIL.Using"></a>

在啟用 UTL\$1MAIL 選項之後，您必須先設定 SMTP 伺服器，然後才能開始使用該選項。

您可以將 SMTP\$1OUT\$1SERVER 參數設定為有效的 IP 位址或公有 DNS 名稱，來設定 SMTP 伺服器。對於 SMTP\$1OUT\$1SERVER 參數，您可以指定逗號分隔的清單，列出多個伺服器的位址。如果第一部伺服器無法使用，則 UTL\$1MAIL 會嘗試下一部伺服器，依此類推。

您可以使用[資料庫參數群組](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html)，來設定資料庫執行個體的預設 SMTP\$1OUT\$1SERVER。您可以在資料庫執行個體的資料庫上執行下列程式碼，來設定工作階段的 SMTP\$1OUT\$1SERVER 參數。

```
1. ALTER SESSION SET smtp_out_server = mailserver.domain.com:25;
```

在啟用 UTL\$1MAIL 選項，且設定 SMTP\$1OUT\$1SERVER 之後，您就可以使用 `SEND` 程序傳送郵件。如需詳細資訊，請參閱 Oracle 文件中的 [UTL\$1MAIL](http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/u_mail.htm#BABFJJBD)。

## 移除 Oracle UTL\$1MAIL 選項
<a name="Oracle.Options.UTLMAIL.Remove"></a>

您可以從資料庫執行個體中移除 Oracle UTL\$1MAIL。

若要從資料庫執行個體中移除 UTL\$1MAIL，請執行下列其中一個動作：
+ 若要從多個資料庫執行個體中移除 UTL\$1MAIL，請從其所屬的選項群組中移除 UTL\$1MAIL 選項。此變更會影響使用選項群組的所有資料庫執行個體。如需更多詳細資訊，請參閱 [從選項群組移除選項](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)。
+ 若要從單一資料庫執行個體中移除 UTL\$1MAIL，請修改資料庫執行個體，並指定不包括 UTL\$1MAIL 選項的不同選項群組。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## 疑難排解
<a name="Oracle.Options.UTLMAIL.Troubleshooting"></a>

下列是您使用 UTL\$1MAIL 與 Amazon RDS 搭配時可能遇到的問題。
+ 調節。SMTP 連接埠 (25) 是根據彈性網路界面擁有者的政策進行調節。如果您可以使用 UTL\$1MAIL 成功傳送電子郵件，而且看到錯誤 `ORA-29278: SMTP transient error: 421 Service not available`，可能是因為正在進行調節。如果您在傳輸電子郵件時經歷調節，則建議您實作退避演算法。如需輪詢演算法的詳細資訊，請參閱[AWS 中的錯誤重試與指數退避](https://docs.aws.amazon.com/general/latest/gr/api-retries.html)和[如何處理「調節 – 超過最大傳送速率」錯誤](https://aws.amazon.com/blogs/ses/how-to-handle-a-throttling-maximum-sending-rate-exceeded-error/)。

  您可以要求移除此調節。如需詳細資訊，請參閱[如何從我的 EC2 執行個體中移除連接埠 25 上的調節？](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-port-25-throttle/)。

# Oracle XML 資料庫
<a name="Appendix.Oracle.Options.XMLDB"></a>

Oracle XML 資料庫將原生 XML 支援新增至您的資料庫執行個體。XML 資料庫可讓您儲存和擷取結構化或非結構化 XML 與關聯式資料。RDS for Oracle 不支援 XML 資料庫通訊協定伺服器。

XML 資料庫預先安裝在 Oracle Database 12c 及更新版本上。因此，您不需要使用選項群組來明確安裝 XML 資料庫做為額外的功能。

若要了解如何設定和使用 XML 資料庫，請參閱 Oracle Database 文件中的 [Oracle XML 資料庫開發人員指南](https://docs.oracle.com/en/database/oracle/oracle-database/19/adxdb/)。