

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

# Amazon RDS for Oracle
<a name="CHAP_Oracle"></a>

Amazon RDS 會支援執行下列版本和 Oracle 資料庫版本的資料庫執行個體：
+ Oracle Database 21c (21.0.0.0)
+ Oracle 資料庫 19c (19.0.0.0)

**注意**  
Oracle Database 11g、Oracle Database 12c 和 Oracle Database 18c 是 Amazon RDS 中已不再支援的舊版。

建立資料庫執行個體之前，請先完成本指南的[設定您的 Amazon RDS 環境](CHAP_SettingUp.md)一節中的步驟。當您使用主帳戶建立資料庫執行個體時，該帳戶會獲得 DBA 權限，但有一些限制。將此帳戶用於管理任務，例如建立其他資料庫帳戶。您無法使用 SYS、SYSTEM 或其他 Oracle 提供的管理帳戶。

您可以建立下列作業：
+ 資料庫執行個體
+ 資料庫快照
+ 時間點還原
+ 自動備份
+ 手動備份

您可在 VPC 內使用執行 Oracle Database 的資料庫執行個體。您也可以透過啟用各種選項，例如 Oracle Spatial 或 Oracle Statspack，新增功能至資料庫執行個體。Amazon RDS 支援 Oracle 的多個可用區部署，做為高可用性、容錯移轉解決方案。

**重要**  
為了提供受管理的服務體驗，Amazon RDS 並不會提供資料庫執行個體的殼層存取權。而且會將存取權限制在某些需要進階權限的系統程序和資料表。您可以使用 Oracle SQL \$1Plus 等標準 SQL 用戶端存取資料庫。不過，您無法使用 Telnet 或 Secure Shell (SSH) 直接存取主機。

**Topics**
+ [Oracle on Amazon RDS 概觀](Oracle.Concepts.overview.md)
+ [連線至 Oracle 資料庫執行個體](USER_ConnectToOracleInstance.md)
+ [保護 Oracle 資料庫執行個體連線的安全](Oracle.Concepts.RestrictedDBAPrivileges.md)
+ [在 RDS for Oracle 中使用 CDB](oracle-multitenant.md)
+ [管理您的 RDS for Oracle 資料庫執行個體](Appendix.Oracle.CommonDBATasks.md)
+ [在 RDS for Oracle 中使用儲存](User_Oracle_AdditionalStorage.md)
+ [設定進階 RDS for Oracle 功能](CHAP_Oracle.advanced-features.md)
+ [將資料匯入 Amazon RDS 上的 Oracle](Oracle.Procedural.Importing.md)
+ [使用適用於 Amazon RDS for Oracel 的僅供讀取複本](oracle-read-replicas.md)
+ [將選項新增至 Oracle 資料庫執行個體](Appendix.Oracle.Options.md)
+ [升級 RDS for Oracle 資料庫引擎](USER_UpgradeDBInstance.Oracle.md)
+ [將 RDS for Oracle 資料庫執行個體與第三方軟體搭配使用](Oracle.Resources.md)
+ [Oracle Database 引擎版本備註](USER_Oracle_Releases.md)

# Oracle on Amazon RDS 概觀
<a name="Oracle.Concepts.overview"></a>

您可以閱讀以下各節以取得 RDS for Oracle 的概觀。

**Topics**
+ [RDS for Oracle 功能](Oracle.Concepts.FeatureSupport.md)
+ [RDS for Oracle 版本](Oracle.Concepts.database-versions.md)
+ [RDS for Oracle 授權選項](Oracle.Concepts.Licensing.md)
+ [RDS for Oracle 的使用者和權限](Oracle.Concepts.Privileges.md)
+ [RDS for Oracle 資料庫執行個體類別](Oracle.Concepts.InstanceClasses.md)
+ [RDS for Oracle 資料庫架構](oracle-multi-architecture.md)
+ [RDS for Oracle 初始化參數](Oracle.Concepts.FeatureSupport.Parameters.md)
+ [RDS for Oracle 字元集](Appendix.OracleCharacterSets.md)
+ [RDS for Oracle 限制](Oracle.Concepts.limitations.md)

# RDS for Oracle 功能
<a name="Oracle.Concepts.FeatureSupport"></a>

Amazon RDS for Oracle 支援 Oracle 資料庫的大多數特性和功能。部分功能的支援或權限可能有所限制。某些功能僅在 Enterprise Edition 中提供，有些功能則需要其他授權。如需特定 Oracle 資料庫版本的 Oracle 資料庫功能詳細資訊，請參閱您所使用版本的 *Oracle 資料庫授權資訊使用者手冊*。

**Topics**
+ [RDS for Oracle 中的新功能](#Oracle.Concepts.FeatureSupport.new)
+ [RDS for Oracle 中支援的功能](#Oracle.Concepts.FeatureSupport.supported)
+ [RDS for Oracle 中不支援的功能](#Oracle.Concepts.FeatureSupport.unsupported)

## RDS for Oracle 中的新功能
<a name="Oracle.Concepts.FeatureSupport.new"></a>

若要查看 RDS for Oracle 中的新功能，請在 [文件歷史記錄](WhatsNew.md) 中搜尋關鍵字 **Oracle**。

## RDS for Oracle 中支援的功能
<a name="Oracle.Concepts.FeatureSupport.supported"></a>

Amazon RDS for Oracle 支援以下 Oracle 資料庫功能：

**注意**  
以下並非詳盡清單。
+ 進階壓縮
+ Oracle Application Express (APEX)

  如需詳細資訊，請參閱[Oracle Application Express (APEX)](Appendix.Oracle.Options.APEX.md)。
+ 自動記憶體管理
+ 自動復原管理
+ 自動工作負載儲存庫 (AWR)

  如需詳細資訊，請參閱[使用自動工作負載儲存庫 (AWR) 產生效能報告。](Appendix.Oracle.CommonDBATasks.AWR.md)。
+ 在同一 AWS 區域或跨 AWS 區域中具有最高效能的作用中 Data Guard

  如需詳細資訊，請參閱[使用適用於 Amazon RDS for Oracel 的僅供讀取複本](oracle-read-replicas.md)。
+ Blockchain 資料表 (Oracle Database 21c 及更新版本)

  如需詳細資訊，請參閱 Oracle Database 文件中的[管理 Blockchain 資料表](https://docs.oracle.com/en/database/oracle/oracle-database/21/admin/managing-tables.html#GUID-43470B0C-DE4A-4640-9278-B066901C3926)。
+ 連續查詢通知

  如需詳細資訊，請參閱 Oracle 文件中的[使用持續查詢通知 (CQN)](https://docs.oracle.com/en/database/oracle/oracle-database/19/adfns/cqn.html#GUID-373BAF72-3E63-42FE-8BEA-8A2AEFBF1C35)。
+ Data Redaction
+ 連續查詢通知

  如需詳細資訊，請參閱 Oracle 文件中的[資料庫變更通知](https://docs.oracle.com/cd/E11882_01/java.112/e16548/dbchgnf.htm#JJDBC28815)。
+ 記憶體內資料庫
+ 分散式查詢和交易
+ 版本式重新定義

  如需詳細資訊，請參閱[設定資料庫執行個體的預設版本](Appendix.Oracle.CommonDBATasks.DefaultEdition.md)。
+ EM Express (12c 及更新版本)

  如需詳細資訊，請參閱[Oracle Enterprise Manager](Oracle.Options.OEM.md)。
+ 精細稽核
+ Flashback 資料表、Flashback 查詢、Flashback 交易查詢
+ 應用程式的逐步密碼輪替 (Oracle Database 21c 及更新版本)

  如需詳細資訊，請參閱 Oracle Database 文件中的[管理應用程式的逐步資料庫密碼輪替](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/configuring-authentication.html#GUID-ACBA8DAE-C5B4-4811-A31D-53B97C50249B)。
+ HugePages

  如需更多詳細資訊，請參閱 [對 RDS for Oracle 執行個體開啟巨型分頁](Oracle.Concepts.HugePages.md)。
+ 匯入/匯出 (舊版和 Data Pump) 和 SQL\$1Loader

  如需更多詳細資訊，請參閱 [將資料匯入 Amazon RDS 上的 Oracle](Oracle.Procedural.Importing.md)。
+ Java 虛擬機器 (JVM)

  如需詳細資訊，請參閱[Oracle Java 虛擬機器](oracle-options-java.md)。
+ JavaScript (Oracle Database 21c 及更新版本)

  如需詳細資訊，請參閱 Oracle Database 文件中的 [DBMS\$1MLE](https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/dbms_mle.html#GUID-3F5B47A5-2C73-4317-ACD7-E93AE8B8E301)。
+ Label Security

  如需詳細資訊，請參閱[Oracle Label Security](Oracle.Options.OLS.md)。
+ Locator

  如需更多詳細資訊，請參閱 [Oracle Locator](Oracle.Options.Locator.md)。
+ 具體化檢視
+ 多租用戶

  所有 Oracle Database 19c 及更新版本都支援 Oracle 多租戶架構。如需詳細資訊，請參閱[在 RDS for Oracle 中使用 CDB](oracle-multitenant.md)。
+ 網路加密

  如需更多詳細資訊，請參閱 [Oracle 原生網路加密](Appendix.Oracle.Options.NetworkEncryption.md) 和 [Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md)。
+ 分割
+ 實際應用程式測試

  若要使用完整擷取和重播功能，您必須使用 Amazon Elastic File System (Amazon EFS) 存取 Oracle Real Application Testing 所產生的檔案。如需詳細資訊，請參閱 [Amazon EFS 整合](oracle-efs-integration.md) 和部落格文章[使用 Oracle Real Application Testing 功能搭配 Amazon RDS for Oracle](https://aws.amazon.com/blogs/database/use-oracle-real-application-testing-features-with-amazon-rds-for-oracle/)。
+ 應用程式層級的分片 (但不是 Oracle Sharding 功能)
+ 空間和圖表

  如需更多詳細資訊，請參閱 [Oracle Spatial](Oracle.Options.Spatial.md)。
+ Star 查詢最佳化
+ 串流與進階佇列
+ 摘要管理 – 具體化的檢視查詢改寫
+ 文字 (不支援檔案與 URL 資料存放區類型)
+ 全面調用
+ 透明資料加密 (TDE)

  如需詳細資訊，請參閱[Oracle 透明資料加密](Appendix.Oracle.Options.AdvSecurity.md)。
+ Unified Auditing，混合模式

  如需詳細資訊，請參閱 Oracle 文件中的[混合模式稽核](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/introduction-to-auditing.html#GUID-4A3AEFC3-5422-4320-A048-8219EC96EAC1)。
+ XML 資料庫 (無 XML 資料庫通訊協定伺服器)

  如需更多詳細資訊，請參閱 [Oracle XML 資料庫](Appendix.Oracle.Options.XMLDB.md)。
+ 虛擬私有資料庫

## RDS for Oracle 中不支援的功能
<a name="Oracle.Concepts.FeatureSupport.unsupported"></a>

Amazon RDS for Oracle 不支援以下 Oracle 資料庫功能：

**注意**  
以下並非詳盡清單。
+ 自動儲存體管理 (ASM)
+ 資料庫保存庫
+ Flashback 資料庫
**注意**  
如需替代解決方案，請參閱 Amazon RDS for Oracle 中的 AWS 資料庫部落格項目 Oracle 快閃記憶體資料庫功能的替代項目。 [https://aws.amazon.com/blogs/database/alternatives-to-the-oracle-flashback-database-feature-in-amazon-rds-for-oracle/](https://aws.amazon.com/blogs/database/alternatives-to-the-oracle-flashback-database-feature-in-amazon-rds-for-oracle/)
+ FTP 和 SFTP
+ 混合式分割資料表
+ 簡訊閘道
+ Oracle Enterprise Manager Cloud Control 管理儲存庫
+ Real Application Clusters (Oracle RAC)
+ 實際應用程式安全性 (RAS)
+ Unified Auditing，純模式
+ Workspace Manager (WMSYS) 結構描述

**警告**  
一般而言，Amazon RDS 不會阻止您為不支援的功能建立資料架構。不過，如果您為需要 SYSDBA 權限的 Oracle 功能和元件建立結構描述，則可能會損壞資料說明並影響資料庫執行個體的使用狀態。僅使用在 [將選項新增至 Oracle 資料庫執行個體](Appendix.Oracle.Options.md) 中可用的支援功能和結構描述。

# RDS for Oracle 版本
<a name="Oracle.Concepts.database-versions"></a>

RDS for Oracle 支援多個 Oracle Database 版本。

**注意**  
如需升級版本的相關資訊，請參閱 [升級 RDS for Oracle 資料庫引擎](USER_UpgradeDBInstance.Oracle.md)。

**Topics**
+ [Amazon RDS Oracle Database 21c](#Oracle.Concepts.FeatureSupport.21c)
+ [Amazon RDS Oracle 資料庫 19c](#Oracle.Concepts.FeatureSupport.19c)

## Amazon RDS Oracle Database 21c
<a name="Oracle.Concepts.FeatureSupport.21c"></a>

Amazon RDS 支援 Oracle 資料庫 21c，其中包括 Oracle Enterprise Edition 和 Oracle Standard Edition 2。相較於舊版，Oracle Database 21c (21.0.0.0) 包含許多新功能和更新。一個關鍵的變更是 Oracle Database 21c 僅支援多重租用架構：您不能再將資料庫建立為傳統的非 CDB。若要進一步瞭解 CDB 和非 CDB 之間的區別，請參閱 [RDS for Oracle CDB 的限制](Oracle.Concepts.CDBs.md#Oracle.Concepts.single-tenant-limitations)。

在此小節中，您可以找到在 Amazon RDS 上使用 Oracle Database 21c (21.0.0.0) 的重要功能和變更。如需變更的完整清單，請參閱 [Oracle Database 21c](https://docs.oracle.com/en/database/oracle/oracle-database/21/index.html) 文件。如需每個 Oracle Database 21c 版本支援的完整功能清單，請參閱 Oracle 文件中 [Oracle 資料庫產品允許的功能、選項和管理套件](https://docs.oracle.com/en/database/oracle/oracle-database/21/dblic/Licensing-Information.html)。

### Oracle Database 21c (21.0.0.0) 的 Amazon RDS 參數變更
<a name="Oracle.Concepts.FeatureSupport.21c.parameters"></a>

Oracle Database 21c (21.0.0.0) 包括數個新參數以及具有新範圍和新預設值的參數。

**Topics**
+ [新參數](#Oracle.Concepts.FeatureSupport.21c.parameters.new)
+ [相容參數的變更](#Oracle.Concepts.FeatureSupport.21c.parameters.compatible)
+ [已移除的參數](#Oracle.Concepts.FeatureSupport.21c.parameters.removed)

#### 新參數
<a name="Oracle.Concepts.FeatureSupport.21c.parameters.new"></a>

下表顯示 Oracle Database 21c (21.0.0.0) 的新 Amazon RDS 參數。


****  

|  名稱  |  值範圍  | 預設值 |  可修改  |  Description  | 
| --- | --- | --- | --- | --- | 
|    [blockchain\$1table\$1max\$1no\$1drop](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/BLOCKCHAIN_TABLE_MAX_NO_DROP.html#GUID-26AF15B2-5621-4602-AA6E-D92842E4285C)    |  `NONE \| 0`  |  `NONE`  |  Y  |  可讓您控制在建立區塊鏈表時可指定的最大閒置時間長度。  | 
|  [dbnest\$1enable](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DBNEST_ENABLE.html#GUID-2F30C9D3-808E-42CD-ADA6-595FAE518A60)  |  `NONE \| CDB_RESOURCE_PDB_ALL`  |  `NONE`  |  N  |  允許您啟用或停用 dbNest。DbNest 為 PDB 提供作業系統資源隔離和管理、檔案系統隔離及安全運算。  | 
|  [dbnest\$1pdb\$1fs\$1conf](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DBNEST_PDB_FS_CONF.html)  |  `NONE \| pathname`  |  `NONE`  |  N  |  為 PDB 指定 dbNest 檔案系統組態檔案。  | 
|  [diagnostics\$1control](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DIAGNOSTICS_CONTROL.html)  |  `ERROR \| WARNING \| IGNORE`  | IGNORE |  Y  |  允許您控制和監視執行潛在不安全的資料庫診斷操作的使用者。  | 
|  [drcp\$1dedicated\$1opt](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DRCP_DEDICATED_OPT.html)  |  `YES \| NO`  | YES |  Y  |  啟用或停用搭配資料庫駐留連線集區 (DRCP) 使用專屬最佳化。  | 
|  [enable\$1per\$1pdb\$1drcp](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/ENABLE_PER_PDB_DRCP.html)  |  `true \| false`  |  `true`  |  N  |  控制資料庫駐留連線集區 (DRCP) 是為整個 CDB 設定一個連線集區，或是為各個 PDB 設定一個隔離的連線集區。  | 
|  [inmemory\$1deep\$1vectorization](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/INMEMORY_DEEP_VECTORIZATION.html#GUID-59E87FDC-1DB4-4ACD-A807-D0C1AE44210D)  |  `true \| false`  |  `true`  |  Y  |  啟用或停用深度向量化框架。  | 
|  [mandatory\$1user\$1profile](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/MANDATORY_USER_PROFILE.html)  |  *profile\$1name*  |  N/A  |  N  |  為 CDB 或 PDB 指定必要的使用者描述檔。  | 
|  [optimizer\$1capture\$1sql\$1quarantine](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/OPTIMIZER_CAPTURE_SQL_QUARANTINE.html)  |  `true \| false`  |  `false`  |  Y  |  啟用或停用深度向量化框架。  | 
|  [optimizer\$1use\$1sql\$1quarantine](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/OPTIMIZER_CAPTURE_SQL_QUARANTINE.html#GUID-9DBBDBD3-2AA3-4627-9D3A-5330F447BEBB)  |  `true \| false`  |  `false`  |  Y  |  啟用或停用 SQL 隔離組態的自動建立。  | 
|  [result\$1cache\$1execution\$1threshold](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/RESULT_CACHE_EXECUTION_THRESHOLD.html)  |  `0` 至 `68719476736`  |  `2`  |  Y  |  指定 PL/SQL 函數在其結果存放於結果快取之前可執行的最大次數。  | 
|  [result\$1cache\$1max\$1temp\$1result](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/RESULT_CACHE_MAX_TEMP_RESULT.html)  |  `0` 至 `100`  |  `5`  |  Y  |  指定任何單一快取的查詢結果都可耗用的 `RESULT_CACHE_MAX_TEMP_SIZE` 百分比。  | 
|  [result\$1cache\$1max\$1temp\$1size](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/RESULT_CACHE_MAX_TEMP_SIZE.html)  |  `0` 至 `2199023255552`  |  `RESULT_CACHE_SIZE * 10`  |  Y  |  指定結果快取可耗用的最大臨時資料表空間數量 (以位元組為單位)。  | 
|  [sga\$1min\$1size](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/SGA_MIN_SIZE.html)  |  `0` 至 `2199023255552` (最大值為 `sga_target` 的 50%)  |  `0`  |  Y  |  指示可插入式資料庫 (PDB) 的 SGA 使用量的可能最小值。  | 
|  [tablespace\$1encryption\$1default\$1algorithm](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM.html)  |  `GOST256 \| SEED128 \| ARIA256 \| ARIA192 \| ARIA128 \| 3DES168 \| AES256 \| AES192 \| AES128`  | AES128 |  Y  |  指定資料庫在加密資料表空間時使用的預設演算法。  | 

#### 相容參數的變更
<a name="Oracle.Concepts.FeatureSupport.21c.parameters.compatible"></a>

對於 Amazon RDS 上的 Oracle Database 21c (21.0.0.0)，`compatible` 參數有新的最大值。下表顯示新的預設值。


****  

|  參數名稱  |  Oracle Database 21c (21.0.0.0) 最大值  | 
| --- | --- | 
|  [compatible](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/COMPATIBLE.html#GUID-6C57EE11-BD06-4BB8-A0F7-D6CDDD086FA9)  |  21.0.0  | 

#### 已移除的參數
<a name="Oracle.Concepts.FeatureSupport.21c.parameters.removed"></a>

Oracle Database 21c (21.0.0.0) 中已移除下列參數：
+ `remote_os_authent`
+ `sec_case_sensitive_logon`
+ `unified_audit_sga_queue_size`

## Amazon RDS Oracle 資料庫 19c
<a name="Oracle.Concepts.FeatureSupport.19c"></a>

Amazon RDS 支援 Oracle 資料庫 19c，其中包括 Oracle Enterprise Edition 和 Oracle Standard Edition Two。

相較於舊版，Oracle 資料庫 19c (19.0.0.0) 包含許多新功能和更新。在此小節中，您可以找到在 Amazon RDS 上使用 Oracle 資料庫 19c (19.0.0.0) 的重要功能和變更。如需變更的完整清單，請參閱 [Oracle Database 19c](https://docs.oracle.com/en/database/oracle/oracle-database/19/index.html) 文件。如需每個 Oracle 資料庫 19c 版本支援的完整功能清單，請參閱 Oracle 文件中 [Oracle 資料庫產品允許的功能、選項和管理套件](https://docs.oracle.com/en/database/oracle/oracle-database/19/dblic/Licensing-Information.html#GUID-0F9EB85D-4610-4EDF-89C2-4916A0E7AC87)。

### Oracle 資料庫 19c (19.0.0.0) 的 Amazon RDS 參數變更
<a name="Oracle.Concepts.FeatureSupport.19c.Parameters"></a>

Oracle 資料庫 19c (19.0.0.0) 包括數個新參數以及具有新範圍和新預設值的參數。

**Topics**
+ [新參數](#Oracle.Concepts.FeatureSupport.19c.Parameters.new)
+ [相容參數的變更](#Oracle.Concepts.FeatureSupport.19c.Parameters.compatible)
+ [已移除的參數](#Oracle.Concepts.FeatureSupport.19c.Parameters.compatible.removed-parameters)

#### 新參數
<a name="Oracle.Concepts.FeatureSupport.19c.Parameters.new"></a>

下表顯示 Oracle 資料庫 19c (19.0.0.0) 的新 Amazon RDS 參數。


****  

|  名稱  |  值  |  可修改  |  Description  | 
| --- | --- | --- | --- | 
|   [ lob\$1signature\$1enable](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/lob_signature_enable.html#GUID-62997AB5-1084-4C9A-8258-8CB695C7A1D6)   |  TRUE、FALSE (預設值)  |  Y  |  啟用或停用 LOB 定位器簽章功能。  | 
|   [ max\$1datapump\$1parallel\$1per\$1job](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/MAX_DATAPUMP_PARALLEL_PER_JOB.html#GUID-33B1F962-B8C3-4DCE-BE68-66FC5D34ECA3)   |  1 至 1024，或 AUTO  |  Y  |  指定每個 Oracle Data Pump 工作允許的平行程序數量上限。  | 

#### 相容參數的變更
<a name="Oracle.Concepts.FeatureSupport.19c.Parameters.compatible"></a>

對於 Amazon RDS 上的 Oracle 資料庫 19c (19.0.0.0)，`compatible` 參數有新的最大值。下表顯示新的預設值。


****  

|  參數名稱  |  Oracle 資料庫 19c (19.0.0.0) 最大值  | 
| --- | --- | 
|  [compatible](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/COMPATIBLE.html#GUID-6C57EE11-BD06-4BB8-A0F7-D6CDDD086FA9)  |  19.0.0  | 

#### 已移除的參數
<a name="Oracle.Concepts.FeatureSupport.19c.Parameters.compatible.removed-parameters"></a>

Oracle 資料庫 19c (19.0.0.0) 中已移除下列參數：
+ `exafusion_enabled`
+ `max_connections`
+ `o7_dictionary_access`

# RDS for Oracle 授權選項
<a name="Oracle.Concepts.Licensing"></a>

Amazon RDS for Oracle 有兩個授權選項：「已包含授權 (LI)」和「使用自有授權 (BYOL)」。在 Amazon RDS 上建立 Oracle 資料庫執行個體之後，您可以修改資料庫執行個體來變更授權模式。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

**重要**  
對於您的資料庫執行個體類別和 Oracle Database 版本，請確定您具有適當的 Oracle Database 授權 (含軟體更新授權和支援)。此外，請確定您對於任何個別授權的 Oracle Database 功能都具有授權。

**Topics**
+ [SE2 的已包含授權模式](#Oracle.Concepts.Licensing.LicenseIncluded)
+ [EE 和 SE2 的自帶授權 (BYOL)](#Oracle.Concepts.Licensing.BYOL)
+ [授權 Oracle 異地同步備份部署](#Oracle.Concepts.Licensing.MAZ)

## SE2 的已包含授權模式
<a name="Oracle.Concepts.Licensing.LicenseIncluded"></a>

在已包含授權模型中，您不需要另外購買 Oracle 資料庫授權。 AWS 保留 Oracle 資料庫軟體的授權。已包含授權模式僅支援 Amazon RDS for Oracle Database Standard Edition 2 (SE2)。

在此模型中，如果您有支援案例 AWS 支援 的帳戶，請聯絡 支援 ，提出 Amazon RDS 和 Oracle Database 服務請求。您對 RDS for Oracle LI 選項的使用受到 [AWS 服務條款](https://aws.amazon.com/service-terms/)第 10.3.1 條的約束。

## EE 和 SE2 的自帶授權 (BYOL)
<a name="Oracle.Concepts.Licensing.BYOL"></a>

在 BYOL 模型中，您可以使用現有 Oracle 資料庫授權在 Amazon RDS 上執行資料庫部署。Amazon RDS 僅針對 Oracle Database Enterprise Edition (EE) 和 Oracle Database Standard Edition 2 (SE2) 支援 BYOL 模式。

對要執行的資料庫執行個體類別和 Oracle 資料庫版本，請確保具有適當的 Oracle 資料庫授權 (含軟體更新授權和支援)。您也必須遵循 Oracle 對雲端運算環境中授權 Oracle 資料庫軟體的政策。如需 Amazon EC2 的 Oracle 授權原則詳細資訊，請參閱[在雲端運算環境中授權 Oracle 軟體](http://www.oracle.com/us/corporate/pricing/cloud-licensing-070579.pdf)。

在此模型中，您會繼續使用作用中 Oracle 支援帳戶，並且針對 Oracle 資料庫的服務請求，請直接聯絡 Oracle。如果您有支援案例 AWS 支援 的帳戶，您可以聯絡 支援 詢問 Amazon RDS 問題。

### 與 整合 AWS License Manager
<a name="oracle-lms-integration"></a>

為了讓您更輕鬆監控 BYOL 模型內的 Oracle 授權用量，[AWS License Manager](https://aws.amazon.com/license-manager/) 可與 Amazon RDS for Oracle 整合。License Manager 會支援追蹤 RDS for Oracle 引擎版本和以虛擬核心 (vCPU) 為基礎的授權套件。您也可以搭配 使用 License Manager AWS Organizations ，集中管理所有組織帳戶。

下表顯示適用於 RDS for Oracle 的產品資訊篩選條件。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Oracle.Concepts.Licensing.html)

若要追蹤 Oracle 資料庫執行個體的授權使用情況，您可以使用 建立自我管理的授權 AWS License Manager。在此情況下，符合產品資訊篩選條件的 RDS for Oracle 資源會自動與自我管理授權相關聯。探索 Oracle 資料庫執行個體最多可能需要 24 小時。您也可以使用 跨帳戶追蹤授權 AWS Resource Access Manager。

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

**在 中建立自我管理授權 AWS License Manager ，以追蹤 RDS for Oracle 資料庫執行個體的授權使用情況**

1. 移至 [https://console.aws.amazon.com/license-manager/](https://console.aws.amazon.com/license-manager/)。

1. 選擇**建立自我管理授權**。

   若要取得指示，請參閱《AWS License Manager 使用者指南》**中的[建立自我管理的授權](https://docs.aws.amazon.com/license-manager/latest/userguide/create-license-configuration.html)。

   在 **Product Information (產品資訊)** 面板中，新增 **RDS Product Information Filter (RDS 產品資訊篩選條件)** 的規則。

   如需詳細資訊，請參閱 *AWS License Manager API 參考*中的 [ProductInformation](https://docs.aws.amazon.com/license-manager/latest/APIReference/API_ProductInformation.html)。

1. （僅限跨帳戶追蹤） 使用 AWS Resource Access Manager 與任何 AWS 帳戶或透過 共用自我管理的授權 AWS Organizations。如需詳細資訊，請參閱[共用您的 AWS 資源](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html)。

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

若要使用 建立自我管理的授權 AWS CLI，請呼叫 [create-license-configuration](https://docs.aws.amazon.com/cli/latest/reference/license-manager/create-license-configuration.html) 命令。使用 `--cli-input-json` 或 `--cli-input-yaml` 參數，將參數傳遞至命令。

**Example**  
下列範例會建立 Oracle Enterprise Edition 的自我管理授權。  

```
aws license-manager create-license-configuration --cli-input-json file://rds-oracle-ee.json
```
下列是範例中使用的範例 `rds-oracle-ee.json` 檔案。  

```
{
    "Name": "rds-oracle-ee",
    "Description": "RDS Oracle Enterprise Edition",
    "LicenseCountingType": "vCPU",
    "LicenseCountHardLimit": false,
    "ProductInformationList": [
        {
            "ResourceType": "RDS",
            "ProductInformationFilterList": [
                {
                    "ProductInformationFilterName": "Engine Edition",
                    "ProductInformationFilterValue": ["oracle-ee"],
                    "ProductInformationFilterComparator": "EQUALS"
                }
            ]
        }
    ]
}
```

如需關於產品資訊的詳細資訊，請參閱《AWS License Manager 使用者指南》**中的[自動化探索資源庫存](https://docs.aws.amazon.com/license-manager/latest/userguide/automated-discovery.html)。

如需 `--cli-input` 參數的詳細資訊，請參閱*AWS CLI 《 使用者指南*》中的[從 JSON AWS CLI 或 YAML 輸入檔案產生骨架和輸入參數](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-skeleton.html)。

### 在不同 Oracle Database 版本之間遷移
<a name="Oracle.Concepts.EditionsMigrating"></a>

如果您有未使用的 BYOL Oracle Database 授權適合用於您計劃要執行的資料庫執行個體版本和類別，您可以從 Standard Edition 2 (SE2) 遷移至 Enterprise Edition (EE)。您無法從 EE 遷移至其他版本。

**變更 Oracle Database 版本並保留您的資料**

1. 建立資料庫執行個體的快照。

   如需更多詳細資訊，請參閱 [為 Amazon RDS 的單一可用區域資料庫執行個體建立資料庫快照](USER_CreateSnapshot.md)。

1. 將快照還原到新的資料庫執行個體，並選取要使用的 Oracle 資料庫版本。

   如需更多詳細資訊，請參閱 [還原至資料庫執行個體](USER_RestoreFromSnapshot.md)。

1. (選用) 刪除舊資料庫執行個體，除非您希望其保持執行並擁有適當的 Oracle 資料庫授權。

   如需更多詳細資訊，請參閱 [刪除資料庫執行個體](USER_DeleteInstance.md)。

## 授權 Oracle 異地同步備份部署
<a name="Oracle.Concepts.Licensing.MAZ"></a>

Amazon RDS 支援 Oracle 的多個可用區部署，做為高可用性、容錯移轉解決方案。對於生產工作負載，建議使用多個可用區。如需更多詳細資訊，請參閱 [設定及管理 Amazon RDS 的多可用區域部署](Concepts.MultiAZ.md)。

如果您使用「使用自有授權」模型，則必須具有多個可用區部署中主要資料庫執行個體和待命資料庫執行個體的授權。

# RDS for Oracle 的使用者和權限
<a name="Oracle.Concepts.Privileges"></a>

當您建立 Amazon RDS for Oracle 資料庫執行個體時，預設主要使用者在資料庫執行個體上擁有大部分的使用者許可上限。請將此主要使用者帳戶用於任何管理任務，例如在您的資料庫中建立額外的使用者帳戶。由於 RDS 是受管服務，因此不允許您以 `SYS` 和 `SYSTEM` 登入，因此沒有 `SYSDBA` 權限。

**Topics**
+ [Oracle DBA 權限的限制](#Oracle.Concepts.dba-limitations)
+ [如何管理 SYS 物件的權限](#Oracle.Concepts.Privileges.SYS-objects)

## Oracle DBA 權限的限制
<a name="Oracle.Concepts.dba-limitations"></a>

在資料庫中，角色是一組權限，您可以用來授予給使用者或撤銷。Oracle 資料庫使用角色來提供安全性。如需詳細資訊，請參閱 Oracle 資料庫說明文件中的[設定權限和角色授權](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/configuring-privilege-and-role-authorization.html#GUID-89CE989D-C97F-4CFD-941F-18203090A1AC)。

預先定義角色 `DBA` 一般會在 Oracle 資料庫上允許所有管理權限。建立資料庫執行個體時，您的主要使用者帳戶會取得 DBA 權限 (有一些限制)。為了提供受管體驗，RDS for Oracle 資料庫不會針對 `DBA` 角色提供下列權限：
+ `ALTER DATABASE`
+ `ALTER SYSTEM`
+ `CREATE ANY DIRECTORY`
+ `DROP ANY DIRECTORY`
+ `GRANT ANY PRIVILEGE`
+ `GRANT ANY ROLE`

如需 RDS for Oracle 權限和角色的詳細資訊，請參閱 [主要使用者帳戶權限](UsingWithRDS.MasterAccounts.md)。

## 如何管理 SYS 物件的權限
<a name="Oracle.Concepts.Privileges.SYS-objects"></a>

您可以透過使用 `rdsadmin.rdsadmin_util` 套件管理 `SYS` 物件上的權限。例如，如果您建立資料庫使用者 `myuser`，您可以使用 `rdsadmin.rdsadmin_util.grant_sys_object` 程序將 `SELECT` 權限授予 `V_$SQLAREA` 至 `myuser`。如需詳細資訊，請參閱下列主題：
+ [將 SELECT 或 EXECUTE 權限授予 SYS 物件](Appendix.Oracle.CommonDBATasks.TransferPrivileges.md)
+ [撤銷 SYS 物件上的 SELECT 或 EXECUTE 權限](Appendix.Oracle.CommonDBATasks.RevokePrivileges.md)
+ [將權限授予非主要使用者](Appendix.Oracle.CommonDBATasks.PermissionsNonMasters.md)

# RDS for Oracle 資料庫執行個體類別
<a name="Oracle.Concepts.InstanceClasses"></a>

RDS for Oracle 資料庫執行個體的運算和記憶體容量取決於其執行個體類別。您需要的資料庫執行個體類別取決於您的處理能力和記憶體需求。



## 支援的 RDS for Oracle 資料庫執行個體類別
<a name="Oracle.Concepts.InstanceClasses.Supported"></a>

支援的 RDS for Oracle 資料庫執行個體類別是 RDS 資料庫執行個體類別的子集。如需 RDS 執行個體類別的完整清單，請參閱 [ 資料庫執行個體類別](Concepts.DBInstanceClass.md)。



### RDS for Oracle 預先設定的資料庫執行個體類別
<a name="Oracle.Concepts.InstanceClasses.Supported.tpc"></a>

RDS for Oracle 也提供針對需要額外記憶體、儲存體和每一 vCPU I/O 的工作負載進行預先設定的執行個體類別。這些執行個體類別使用以下命名慣例。

```
db.r5b.instance_size.tpcthreads_per_core.memratio
db.r5.instance_size.tpcthreads_per_core.memratio
```

以下是預先設定了額外記憶體的執行個體類別範例：

```
db.r5b.4xlarge.tpc2.mem2x
```

上述的執行個體類別的元件如下所示：
+ `db.r5b.4xlarge` – 執行個體類別的名稱。
+ `tpc2` – 每個核心的執行緒。值為 2 表示多執行緒已開啟。值為 1 表示多執行緒已關閉。
+ `mem2x` – 執行個體類別的額外記憶體與標準記憶體的比率。在此範例中，最佳化提供的記憶體數量是標準 db.r5.4xlarge 資料庫執行個體的兩倍。

**注意**  
如需預先設定 RDS for Oracle 資料庫執行個體類別的標準化因素，請參閱 [ 資料庫執行個體類別的硬體規格](Concepts.DBInstanceClass.Summary.md)。

### RDS for Oracle 中支援的版本、執行個體類別和授權組合
<a name="Oracle.Concepts.InstanceClasses.Supported.combo"></a>

如果您使用 RDS 主控台，您可以選擇**建立資料庫**並指定不同的選項，藉以了解特定版本、執行個體類別和授權組合是否受支援。在 中 AWS CLI，您可以執行下列命令：

```
aws rds describe-orderable-db-instance-options --engine engine-type --license-model license-type
```

下表列出 RDS for Oracle 支援的所有版本、執行個體類別和授權類型。如需各類型之記憶體屬性的詳細資訊，請參閱 [RDS for Oracle 執行個體類型](https://aws.amazon.com//rds/oracle/instance-types)。如需定價的相關資訊，請參閱 [Amazon RDS for Oracle 定價模式](https://aws.amazon.com/rds/oracle/pricing/#Pricing_models)。


****  
<a name="rds-oracle-instance-class-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Oracle.Concepts.InstanceClasses.html)

## 已啟用的 RDS for Oracle 資料庫執行個體類別
<a name="Oracle.Concepts.InstanceClasses.Deprecated"></a>

下面是 RDS for Oracle 取代的資料庫執行個體類別︰
+ db.m1、db.m2、db.m3、db.m4
+ db.t1、db.t2
+ db.r1、db.r2、db.r3、db.r4
+ db.x1、db.x1e

上述資料庫執行個體類別已由全面供應、價格更低且效能更好的資料庫執行個體類別取代。如果您有資料庫執行個體使用已棄用的資料庫執行個體類別，則具有下列選項：
+ 允許 Amazon RDS 自動修改每個資料庫執行個體，以使用類似的非棄用資料庫執行個體類別。如需棄用時間軸，請參閱 [資料庫執行個體類別的類型](Concepts.DBInstanceClass.Types.md)。
+ 修改資料庫執行個體來自行變更資料庫執行個體類別。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

**注意**  
如果您有資料庫執行個體的資料庫快照而該資料庫執行個體使用已取代的資料庫執行個體類別，則您可在還原資料庫快照時，選擇使用尚未取代的資料庫執行個體類別。如需詳細資訊，請參閱[還原至資料庫執行個體](USER_RestoreFromSnapshot.md)。

# RDS for Oracle 資料庫架構
<a name="oracle-multi-architecture"></a>

Oracle 多租戶架構 (也稱為 CDB 架構) 可讓 Oracle 資料庫作為多租戶容器資料庫 (CDB) 運作。CDB 可以包含顧客建立的插入式資料庫 (PDB)。非 CDB 是使用傳統架構的 Oracle 資料庫，無法包含 PDB。如需多租用戶架構的詳細資訊，請參閱 [https://docs.oracle.com/en/database/oracle/oracle-database/19/multi/introduction-to-the-multitenant-architecture.html#GUID-267F7D12-D33F-4AC9-AA45-E9CD671B6F22](https://docs.oracle.com/en/database/oracle/oracle-database/19/multi/introduction-to-the-multitenant-architecture.html#GUID-267F7D12-D33F-4AC9-AA45-E9CD671B6F22)。

對於 Oracle Database 19c 和更新版本，您可以建立一個使用 CDB 架構的 RDS for Oracle 資料庫執行個體。在 RDS for Oracle 中，PDB 稱為租用戶資料庫。您的用戶端應用程式會在租用戶資料庫 (PDB) 層級 (而非 CDB 層級) 連線。RDS for Oracle 支援 CDB 架構的下列組態：

**多租戶組態**  
Amazon RDS 允許 CDB 執行個體包含 1–30 個租用戶資料庫，具體取決於資料庫版本和任何必要的選項授權。您可以使用 RDS API 來新增、修改和移除租戶資料庫。RDS for Oracle 中的多租用戶組態不支援應用程式 PDB 或代理 PDB，這是特殊類型的 PDB。如需應用程式 PDB 和代理 PDB 的詳細資訊，請參閱 Oracle Database 文件中的 [PDB 類型](https://docs.oracle.com/en/database/oracle/oracle-database/19/multi/overview-of-the-multitenant-architecture.html#GUID-D0F40745-FC70-4BE0-85D3-3745DE3312AC)。  
Amazon RDS 組態稱為 "multi-tenant" 而不是 "multitenant"，因為它是 Amazon RDS 的功能，而不只是 Oracle 資料庫引擎。同樣地，RDS 的 "tenant" 一詞是指 RDS 組態中的任何租用戶，而不只是 Oracle PDB。在 RDS 文件中，無連字號的 "Oracle multitenant" 一詞專指與內部部署和 RDS 部署相容的 Oracle 資料庫 CDB 架構。

**單一租戶組態**  
Amazon RDS 將 RDS for Oracle CDB 執行個體限制為 1 個租用戶資料庫 (PDB)。您無法使用 RDS API 新增更多的 PDB。單一租戶組態會使用與非 CDB 架構相同的 RDS API。因此，在單一租戶組態中使用 CDB 的體驗大多與使用非 CDB 相同。  
您可以將使用單一租用戶組態的 CDB 轉換為多租用戶組態，以便您可將 PDB 新增至 CDB。此架構變更是永久且不可復原。如需詳細資訊，請參閱 [將單一租戶組態轉換為多租戶](oracle-single-tenant-converting.md)。

**注意**  
您無法存取 CDB。

在 Oracle 資料庫 21c 以上版本中，所有資料庫皆為 CDB。反之，您可以將 Oracle 資料庫 19c 資料庫執行個體建立為 CDB 或非 CDB。您無法將非 CDB 升級為 CDB，但可將 Oracle 資料庫 19c 非 CDB 轉換為 CDB，然後再加以升級。您無法將 CDB 轉換為非 CDB。

如需詳細資訊，請參閱下列資源：
+ [在 RDS for Oracle 中使用 CDB](oracle-multitenant.md)
+ [RDS for Oracle CDB 的限制](Oracle.Concepts.CDBs.md#Oracle.Concepts.single-tenant-limitations)
+ [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)

# RDS for Oracle 初始化參數
<a name="Oracle.Concepts.FeatureSupport.Parameters"></a>

在 Amazon RDS 中，您可以使用資料庫參數群組來管理參數。使用此群組，可以自訂初始化參數。例如，您可以使用 `sort_area_size` 來設定排序區域大小。所有與特定資料庫參數群組相關聯的 RDS for Oracle 資料庫執行個體，都會使用相同的參數設定。如需詳細資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

## RDS for Oracle 中支援的初始化參數
<a name="Oracle.Concepts.FeatureSupport.Parameters.individual"></a>

資料庫執行個體支援的參數取決於您的 Oracle Database 版本。若要檢視特定 Oracle Database 版本和版本的支援初始化參數，請執行 AWS CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-engine-default-parameters.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-engine-default-parameters.html)。例如，若要列出 Oracle Database 19c Enterprise Edition 支援的初始化參數名稱，請執行下列命令 (包含範例輸出)。

```
aws rds describe-engine-default-parameters \
    --db-parameter-group-family oracle-ee-19 \
    --output json | jq -r '.EngineDefaults.Parameters[].ParameterName'

_add_col_optim_enabled
_adg_parselock_timeout
_allow_insert_with_update_check
_allow_level_without_connect_by
_always_semi_join
_autotask_max_window
_awr_disabled_flush_tables
_awr_mmon_cpuusage
_awr_mmon_deep_purge_all_expired
_b_tree_bitmap_plans
_bct_bitmaps_per_file
_bloom_filter_enabled
_buffered_publisher_flow_control_threshold
_bug29394014_allow_triggers_on_vpd_table
_cleanup_rollback_entries
_client_enable_auto_unregister
_clusterwide_global_transactions
_complex_view_merging
_connect_by_use_union_all
_cost_equality_semi_join
_cursor_features_enabled
_cursor_obsolete_threshold
_datafile_write_errors_crash_instance
_db_block_buffers
...
```

若要描述單一初始化參數，請使用下列命令；請將 `sga_max_size` 取代為您的參數名稱 (包含範例輸出)。

```
aws rds describe-engine-default-parameters \
    --db-parameter-group-family oracle-ee-19 \
    --query 'EngineDefaults.Parameters[?ParameterName==`sga_max_size`]' \
    --output json

[
    {
        "ParameterName": "sga_max_size",
        "Description": "max total SGA size",
        "Source": "engine-default",
        "ApplyType": "static",
        "DataType": "integer",
        "AllowedValues": "0-2199023255552",
        "IsModifiable": true
    }
]
```

若要尋找 Oracle Database 初始化參數的一般文件，請參閱 Oracle Database 文件中的[初始化參數](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/initialization-parameters.html#GUID-6F1C3203-0AA0-4AF1-921C-A027DD7CB6A9)。請注意，參數 `ARCHIVE_LAG_TARGET` 在 RDS for Oracle 中有其特殊考量。此參數會在指定的時間經過後強制執行線上重做日誌切換。在 RDS for Oracle 中，`ARCHIVE_LAG_TARGET` 會設定為 `300`，因為復原點目標 (RPO) 為 5 分鐘。為了實現此目標，RDS for Oracle 每隔 5 分鐘就會切換線上重做日誌，並將其存放在 Amazon S3 儲存貯體中。

如果線上重做日誌切換太頻繁而降低了 RDS for Oracle 資料庫的效能，您可以擴展資料庫執行個體和儲存體，以使用更高的 IOPS 和輸送量。或者，如果您使用 RDS Custom for Oracle，或是在 Amazon EC2 上部署了 Oracle Database，您可以調整 `ARCHIVE_LAG_TARGET` 初始化參數的設定。

## RDS for Oracle 中的有效參數值
<a name="oracle-valid-parameter-values"></a>

在 RDS for Oracle 中，只有下列字元是有效的參數值：
+ 字母 (`A-Z` 和 `a-z`)
+ 數字 (`0-9`)
+ 空白字元 (空格、tab 鍵和換行)
+ 下列特殊字元：`_ / . : + = ( ) ' * , % $ -` (連字號)

# RDS for Oracle 字元集
<a name="Appendix.OracleCharacterSets"></a>

RDS for Oracle 支援兩種類型的字元集：資料庫字元集和國家字元集。

## 資料庫字元集
<a name="Appendix.OracleCharacterSets.db-character-set"></a>

Oracle 資料庫字元集用於 `CHAR`、`VARCHAR2` 和 `CLOB` 資料類型。資料庫也會將此字元集用於中繼資料，例如資料表名稱、資料欄名稱，以及 SQL 陳述式。Oracle 資料庫字元集通常稱為資料庫字元集。

當您建立資料庫執行個體時，可設定字元集。建立資料庫之後，即無法變更資料庫字元集。

### 支援的資料庫字元集
<a name="Appendix.OracleCharacterSets.db-character-set.supported"></a>

下表列出 Amazon RDS 中支援的 Oracle 資料庫字元集。您可以使用此表格中的值搭配 AWS CLI [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 命令的 `--character-set-name` 參數，或搭配 Amazon RDS API [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) 操作的 `CharacterSetName` 參數。

**注意**  
CDB 的字元集始終是 AL32UTF8。您只能為 PDB 設定不同的字元集。


****  

| Value | 描述 | 
| --- | --- | 
|  AL32UTF8  |  Unicode 5.0 UTF-8 通用字元集 (預設值)  | 
|  AR8ISO8859P6  |  ISO 8859-6 拉丁/阿拉伯文  | 
|  AR8MSWIN1256  |  Microsoft Windows 字碼頁 1256 8 位元拉丁/阿拉伯文  | 
|  BLT8ISO8859P13  |  ISO 8859-13 波羅的海文  | 
|  BLT8MSWIN1257  |  Microsoft Windows 字碼頁 1257 8 位元波羅的海文  | 
|  CL8ISO8859P5  |  ISO 88559-5 拉丁/斯拉夫文  | 
|  CL8MSWIN1251  |  Microsoft Windows 字碼頁 1251 8 位元拉丁/斯拉夫文  | 
|  EE8ISO8859P2  |  ISO 8859-2 東歐  | 
|  EL8ISO8859P7  |  ISO 8859-7 拉丁/希臘文  | 
|  EE8MSWIN1250  |  Microsoft Windows 字碼頁 1250 8 位元東歐  | 
|  EL8MSWIN1253  |  Microsoft Windows 字碼頁 1253 8 位元拉丁/希臘文  | 
|  IW8ISO8859P8  |  ISO 8859-8 拉丁/希伯來文  | 
|  IW8MSWIN1255  |  Microsoft Windows 字碼頁 1255 8 位元拉丁/希伯來文  | 
|  JA16EUC  |  EUC 24 位元日文  | 
|  JA16EUCTILDE  |  同於 JA16EUC，差別在於往返 Unicode 對應波浪線和波狀符號  | 
|  JA16SJIS  |  Shift-JIS 16 位元日文  | 
|  JA16SJISTILDE  |  同於 JA16SJIS，差別在於往返 Unicode 對應波浪線和波狀符號  | 
|  KO16MSWIN949  |  Microsoft Windows 字碼頁 949 韓文  | 
|  NE8ISO8859P10  |  ISO 8859-10 北歐  | 
|  NEE8ISO8859P4  |  ISO 8859-4 北歐和東北歐  | 
|  TH8TISASCII  |  泰文工業標準 620-2533-ASCII 8 位元  | 
|  TR8MSWIN1254  |  Microsoft Windows 字碼頁 1254 8 位元土耳其文  | 
|  US7ASCII  |  ASCII 7 位元美語  | 
|  UTF8  |  Unicode 3.0 UTF-8 通用字元集，CESU-8 相容  | 
|  VN8MSWIN1258  |  Microsoft Windows 字碼頁 1258 8 位元越南文  | 
|  WE8ISO8859P1  |  西歐 8 位元 ISO 8859 第 1 部  | 
|  WE8ISO8859P15  |  ISO 8859-15 西歐  | 
|  WE8ISO8859P9  |  ISO 8859-9 西歐和土耳其文  | 
|  WE8MSWIN1252  |  Microsoft Windows 字碼頁 1252 8 位元西歐  | 
|  ZHS16GBK  |  GBK 16 位元簡體中文  | 
|  ZHT16HKSCS  |  Microsoft Windows 字碼頁 950，含香港增補字元集 HKSCS-2001。字元集轉換根據 Unicode 3.0。  | 
|  ZHT16MSWIN950  |  Microsoft Windows 字碼頁 950 繁體中文  | 
|  ZHT32EUC  |  EUC 32 位元繁體中文  | 

### NLS\$1LANG 環境變數
<a name="Appendix.OracleCharacterSets.db-character-set.nls_lang"></a>

地區設定是處理語言和文化需求的一組資訊，這些資訊對應至特定語言和國家。需要指定 Oracle 的地區設定行為時，最簡單的方法是在用戶端的環境中設定 NLS\$1LANG 環境變數。此變數設定用戶端應用程式和資料庫伺服器所使用的語言和地區。此參數也指出用戶端的字元集，對應於用戶端應用程式所輸入或顯示的字元集。如需 NLS\$1LANG 和字元集的詳細資訊，請參閱 Oracle 文件中的[什麼是字元集或字碼頁？](http://www.oracle.com/technetwork/database/database-technologies/globalization/nls-lang-099431.html#_Toc110410570)。

### NLS 初始化參數
<a name="Appendix.OracleCharacterSets.db-character-set.nls_parameters"></a>

對於 Amazon RDS 中的 Oracle 資料庫執行個體，您也可以在執行個體層級上設定下列國家語言支援 (NLS) 初始化參數：
+ NLS\$1COMP
+ NLS\$1DATE\$1FORMAT
+ NLS\$1LENGTH\$1SEMANTICS
+ NLS\$1NCHAR\$1CONV\$1EXCP
+ NLS\$1SORT
+ NLS\$1TIME\$1FORMAT
+ NLS\$1TIME\$1TZ\$1FORMAT
+ NLS\$1TIMESTAMP\$1FORMAT
+ NLS\$1TIMESTAMP\$1TZ\$1FORMAT

如需修改執行個體參數的相關資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

您可以在 SQL 用戶端設定其他 NLS 初始化參數。例如，下列陳述式在連接 Oracle 資料庫執行個體的 SQL 用戶端，將 NLS\$1LANGUAGE 初始化參數設為 GERMAN：

```
ALTER SESSION SET NLS_LANGUAGE=GERMAN;
```

如需從 SQL 用戶端連接至 Oracle 資料庫執行個體的相關資訊，請參閱[連線至 Oracle 資料庫執行個體](USER_ConnectToOracleInstance.md)。

## 國家字元集
<a name="Appendix.OracleCharacterSets.nchar-character-set"></a>

國家字元集用於 `NCHAR`、`NVARCHAR2` 和 `NCLOB` 資料類型。國家字元集通常稱為 NCHAR 字元集。與資料庫字元集不同，NCHAR 字元集不會影響資料庫中繼資料。

NCHAR 字元集支援下列字元集：
+ AL16UTF16 (預設值)
+ UTF8

您可以使用 [create-db-instance](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/rds/create-db-instance.html) 命令的 `--nchar-character-set-name` 參數指定任一值 （僅限第 2 AWS CLI 版）。如果您使用 Amazon RDS API，請指定 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) 操作的 `NcharCharacterSetName` 參數。建立資料庫之後，您無法變更國家字元集。

如需有關 Unicode in Oracle databases 的詳細資訊，請參閱 Oracle 文件中的[使用 unicode 支援多語言資料庫](https://docs.oracle.com/en/database/oracle/oracle-database/19/nlspg/supporting-multilingual-databases-with-unicode.html)。

# RDS for Oracle 限制
<a name="Oracle.Concepts.limitations"></a>

在下列章節中，你可以找到使用 RDS for Oracle 的重要限制。如需 CDB 的特定限制，請參閱 [RDS for Oracle CDB 的限制](Oracle.Concepts.CDBs.md#Oracle.Concepts.single-tenant-limitations)。

**注意**  
此清單並不詳盡。

**Topics**
+ [Amazon RDS 中的 Oracle 檔案大小限制](#Oracle.Concepts.file-size-limits)
+ [RDS for Oracle 中的區塊大小限制](#Oracle.Concepts.block-size-limits)
+ [Oracle 提供之結構描述的公有同義詞](#Oracle.Concepts.PublicSynonyms)
+ [RDS for Oracle 不支援功能的結構描述](#Oracle.Concepts.unsupported-features)
+ [RDS for Oracle 中的 DBA 權限限制](#Oracle.Concepts.dba-limitations)
+ [在 RDS for Oracle 中棄用 TLS 1.0 和 1.1 Transport Layer Security](#Oracle.Concepts.tls)

## Amazon RDS 中的 Oracle 檔案大小限制
<a name="Oracle.Concepts.file-size-limits"></a>

RDS Oracle 資料庫執行個體上的單一檔案大小上限為 16 TiB。此限制是由執行個體使用的 ext4 檔案系統所施加的。因此，Oracle 大型檔案資料檔案限制為 16 TiB。如果您嘗試將大型檔案資料表空間中的資料檔案大小調整為超過限制的值，您會收到如下的錯誤。

```
ORA-01237: cannot extend datafile 6
ORA-01110: data file 6: '/rdsdbdata/db/mydir/datafile/myfile.dbf'
ORA-27059: could not reduce file size
Linux-x86_64 Error: 27: File too large
Additional information: 2
```

## RDS for Oracle 中的區塊大小限制
<a name="Oracle.Concepts.block-size-limits"></a>

RDS for Oracle 資料庫執行個體的建立預設資料庫區塊大小 (`DB_BLOCK_SIZE`) 為 8 KB。預設資料庫區塊大小會在建立資料庫時設定，且無法變更。`SYSTEM` 和 暫存資料表空間一律使用預設資料庫區塊大小。您可以設定對應的`DB_nK_CACHE_SIZE`參數 （例如 `DB_16K_CACHE_SIZE`) 來配置該區塊大小的緩衝區快取，然後在`CREATE TABLESPACE`陳述式中指定 `BLOCKSIZE`子句，以建立具有非預設區塊大小的其他資料表空間。

## Oracle 提供之結構描述的公有同義詞
<a name="Oracle.Concepts.PublicSynonyms"></a>

請不要為 Oracle 提供的結構描述 (包括 `SYS`、`SYSTEM` 和 `RDSADMIN`) 建立或修改公有同義詞。此類動作可能導致核心資料庫元件失效，並影響您資料庫執行個體的可用性。

您可以在自己的結構描述中建立參考物件的公有同義詞。

## RDS for Oracle 不支援功能的結構描述
<a name="Oracle.Concepts.unsupported-features"></a>

一般而言，Amazon RDS 不會阻止您為不支援的功能建立資料架構。不過，如果您為需要 SYS 權限的 Oracle 功能和元件建立結構描述，則可能會損壞資料說明並影響執行個體可用性。僅使用在 [將選項新增至 Oracle 資料庫執行個體](Appendix.Oracle.Options.md) 中可用的支援功能和結構描述。

## RDS for Oracle 中的 DBA 權限限制
<a name="Oracle.Concepts.dba-limitations"></a>

在資料庫中，角色是一組權限，您可以用來授予給使用者或撤銷。Oracle 資料庫使用角色來提供安全性。

預先定義角色 `DBA` 一般會在 Oracle 資料庫上允許所有管理權限。建立資料庫執行個體時，您的主要使用者帳戶會取得 DBA 權限 (有一些限制)。為了提供受管體驗，RDS for Oracle 資料庫不會針對 `DBA` 角色提供下列權限：
+ `ALTER DATABASE`
+ `ALTER SYSTEM`
+ `CREATE ANY DIRECTORY`
+ `DROP ANY DIRECTORY`
+ `GRANT ANY PRIVILEGE`
+ `GRANT ANY ROLE`

請將此主要使用者帳戶用於管理任務，例如在資料庫中建立額外的使用者帳戶。您無法使用 `SYS`、`SYSTEM` 和其他 Oracle 提供的管理帳戶。

## 在 RDS for Oracle 中棄用 TLS 1.0 和 1.1 Transport Layer Security
<a name="Oracle.Concepts.tls"></a>

Transport Layer Security 通訊協定 1.0 版和 1.1 版 (TLS 1.0 和 TLS 1.1) 已被取代。根據安全最佳實務，Oracle 已停用 TLS 1.0 和 TLS 1.1。為了符合您的安全需求，強烈建議您改用 TLS 1.2。

# 連線至 Oracle 資料庫執行個體
<a name="USER_ConnectToOracleInstance"></a>

在 Amazon RDS 佈建您的 Oracle 資料庫執行個體之後，您就可以使用任何標準 SQL 用戶端應用程式來登入您的資料庫執行個體。由於 RDS 是受管理的服務，因此您無法以 SYS 或 SYSTEM 的身分登入。如需更多詳細資訊，請參閱 [RDS for Oracle 的使用者和權限](Oracle.Concepts.Privileges.md)。

在本主題中，您將學習如何使用 Oracle SQL Developer 或 SQL\$1Plus 連線至 RDS for Oracle 資料庫執行個體。如需引導您進行建立和連線至範例資料庫執行個體的程序範例，請參閱 [建立並連線至 Oracle 資料庫執行個體](CHAP_GettingStarted.CreatingConnecting.Oracle.md)。

**Topics**
+ [尋找您的 RDS for Oracle 資料庫執行個體的端點](USER_Endpoint.md)
+ [使用 Oracle SQL Developer 連線至您的資料庫執行個體](USER_ConnectToOracleInstance.SQLDeveloper.md)
+ [使用 SQL\$1Plus 連線至您的資料庫執行個體](USER_ConnectToOracleInstance.SQLPlus.md)
+ [安全群組的考量](USER_ConnectToOracleInstance.Security.md)
+ [程序架構的考量](USER_ConnectToOracleInstance.SharedServer.md)
+ [對您的 Oracle 資料庫執行個體的連線進行故障診斷](USER_ConnectToOracleInstance.Troubleshooting.md)
+ [使用 sqlnet.ora 參數修改連線屬性](USER_ModifyInstance.Oracle.sqlnet.md)

# 尋找您的 RDS for Oracle 資料庫執行個體的端點
<a name="USER_Endpoint"></a>

每個 Amazon RDS 資料庫執行個體會有端點，並且每個端點有資料庫執行個體的 DNS 名稱和連接埠號碼。若要使用 SQL 用戶端應用程式連線至您的資料庫執行個體，您需要資料庫執行個體的 DNS 名稱和連接埠號碼。

您可以使用 Amazon RDS 主控台或 AWS CLI，藉此尋找資料庫執行個體的端點。

**注意**  
如果您是使用 Kerberos 身分驗證，請參閱[使用 Kerberos 身分驗證連接至 Oracle](oracle-kerberos-connecting.md)。

## 主控台
<a name="USER_Endpoint.Console"></a>

**使用主控台尋找端點**

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

1. 在主控台的右上角，選擇資料庫執行個體的 AWS 區域。

1. 尋找您的資料庫執行個體的 DNS 名稱和連接埠號碼。

   1. 選擇 **Databases** (資料庫) 來顯示資料庫執行個體的清單。

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

   1. 在 **Connectivity & security (連線能力和安全性)** 索引標籤上，複製該端點。另外，請記下連接埠號碼。您需要同時有端點和連接埠號碼，才能連線至資料庫執行個體。  
![\[尋找資料庫執行個體的端點和連接埠\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/OracleConnect1.png)

## AWS CLI
<a name="USER_Endpoint.CLI"></a>

若要使用 AWS CLI 來尋找 Oracle 資料庫執行個體的端點，請呼叫 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 命令。

**Example 使用 AWS CLI 尋找端點**  

```
1. aws rds describe-db-instances
```
在輸出中搜尋 `Endpoint` 以尋找資料庫執行個體的 DNS 名稱和連接埠號碼。輸出中的 `Address` 行包含 DNS 名稱。下列是 JSON 端點輸出的範例。  

```
"Endpoint": {
    "HostedZoneId": "Z1PVIF0B656C1W",
    "Port": 3306,
    "Address": "myinstance.123456789012.us-west-2.rds.amazonaws.com"
},
```

**注意**  
輸出可能包含多個資料庫執行個體的資訊。

# 使用 Oracle SQL Developer 連線至您的資料庫執行個體
<a name="USER_ConnectToOracleInstance.SQLDeveloper"></a>

在此程序中，您會使用 Oracle SQL Developer 連接至資料庫執行個體。若要下載此公用程式的獨立版本，請參閱 [Oracle SQL 開發人員下載頁面](https://www.oracle.com/tools/downloads/sqldev-downloads.html)。

若要連接至資料庫執行個體，您需要其 DNS 名稱和連接埠號碼。如需尋找資料庫執行個體的 DNS 名稱和連接埠號碼的詳細資訊，請參閱 [尋找您的 RDS for Oracle 資料庫執行個體的端點](USER_Endpoint.md)。

**使用 SQL Developer 連線至資料庫執行個體**

1. 啟動 Oracle SQL Developer。

1. 在 **Connections (連接)** 標籤上，選擇 **add (\$1) (新增 (\$1))** 圖示。  
![\[Oracle SQL Developer 的新增圖示將反白顯示\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-sqldev-plus.png)

1. 在 **New/Select Database Connection (新增/選取資料庫連接)** 對話方塊中，提供資料庫執行個體的資訊：
   + 針對 **Connection Name (連線名稱)**，輸入可描述連線的名稱，例如 `Oracle-RDS`。
   + 針對 **Username (使用者名稱)**，輸入資料庫執行個體之資料庫管理員的名稱。
   + 針對 **Password (密碼)**，輸入資料庫管理員的密碼。
   + 針對 **Hostname (主機名稱)**，輸入資料庫執行個體的 DNS 名稱。
   + 針對 **Port (連接埠)**，輸入連接埠號碼。
   + 對於 **SID**，輸入資料庫名稱。您可以在資料庫詳細資訊頁面的 **Configuration** (組態) 索引標籤上尋找資料庫名稱。

   完成的對話方塊看起來應與下列類似。  
![\[在 Oracle SQL Developer 中建立新連線\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-sqldev-newcon.png)

1. 選擇 **Connect (連線)**。

1. 您現在可以開始建立您自己的資料庫，並照常對您的資料庫執行個體和資料庫執行查詢。若要對您的資料庫執行個體執行測試查詢，請執行下列動作：

   1. 在連線的 **Worksheet (工作表)** 標籤中，輸入下列 SQL 查詢。

      ```
      SELECT NAME FROM V$DATABASE;
      ```

   1. 選擇 **execute (執行)** 圖示來執行查詢。  
![\[使用執行圖示，以便在 Oracle SQL Developer 中執行查詢\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-sqldev-run.png)

      SQL Developer 會傳回資料庫名稱。  
![\[在 Oracle SQL Developer 中查詢結果\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-sqldev-results.png)

# 使用 SQL\$1Plus 連線至您的資料庫執行個體
<a name="USER_ConnectToOracleInstance.SQLPlus"></a>

您可以使用 SQL\$1Plus 之類的公用程式來連接至執行 Oracle 的 Amazon RDS 資料庫執行個體。若要下載包含獨立版 SQL\$1Plus 的 Oracle 即時用戶端，請參閱 [Oracle 即時用戶端下載](https://www.oracle.com/database/technologies/instant-client/downloads.html)。

若要連接至資料庫執行個體，您需要其 DNS 名稱和連接埠號碼。如需尋找資料庫執行個體的 DNS 名稱和連接埠號碼的詳細資訊，請參閱 [尋找您的 RDS for Oracle 資料庫執行個體的端點](USER_Endpoint.md)。

**Example 使用 SQL\$1Plus 連接至 Oracle 資料庫執行個體**  
在下列範例中，替代資料庫執行個體管理員的使用者名稱。同時，替代資料庫執行個體的 DNS 名稱，然後包含連接埠號碼和 Oracle SID。SID 值為建立資料庫執行個體時所指定之資料庫執行個體的資料庫名稱，而不是資料庫執行個體的名稱。  
針對 Linux、macOS 或 Unix：  

```
1. sqlplus 'user_name@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dns_name)(PORT=port))(CONNECT_DATA=(SID=database_name)))'
```
針對 Windows：  

```
1. sqlplus user_name@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dns_name)(PORT=port))(CONNECT_DATA=(SID=database_name)))
```
您應該會看到類似下列的輸出。  

```
SQL*Plus: Release 12.1.0.2.0 Production on Mon Aug 21 09:42:20 2017
```
輸入使用者的密碼之後，隨即會出現 SQL 提示。  

```
SQL>
```

**注意**  
較短格式連線字串 (EZ connect) (例如 `sqlplus USER/PASSWORD@longer-than-63-chars-rds-endpoint-here:1521/database-identifier`) 可能遇到字元數上限，因此建議您不要將其用來連線。

# 安全群組的考量
<a name="USER_ConnectToOracleInstance.Security"></a>

為了讓您連接至資料庫執行個體，它必須與安全群組關聯，該群組包含必要的 IP 地址和網路組態。您的資料庫執行個體可能會使用預設安全群組。如果在建立資料庫執行個體時指派預設、非設定的安全群組，防火牆會阻止連線。如需建立新安全群組的詳細資訊，請參閱[使用安全群組控制存取](Overview.RDSSecurityGroups.md)。

建立新安全群組之後，您可以修改資料庫執行個體，讓它與該安全群組建立關聯。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

您可以使用 SSL 來加密對資料庫執行個體的連線，藉此增強安全性。如需更多詳細資訊，請參閱 [Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md)。

# 程序架構的考量
<a name="USER_ConnectToOracleInstance.SharedServer"></a>

伺服器程序會處理對 Oracle 資料庫執行個體的使用者連線。依預設，Oracle 資料庫執行個體會使用專用伺服器程序。利用專用伺服器程序，每個伺服器程序只會服務一個使用者程序。您可以選擇性地設定共用伺服器程序。利用共用伺服器程序，每個伺服器程序可以服務多個使用者程序。

當伺服器上大量的使用者工作階段使用太多記憶體時，您可能會考慮使用共用伺服器程序。當工作階段經常連接和中斷連接，而造成效能問題時，您可能也會考慮共用伺服器程序。使用共用伺服器程序也有缺點。例如，它們可能拖累 CPU 資源，且它們的設定和管理較為複雜。

如需專用和共用伺服器程序的詳細資訊，請參閱 Oracle 文件中的[關於專用和共用伺服器程序](https://docs.oracle.com/database/121/ADMIN/manproc.htm#ADMIN11166)。如需在 Oracle 資料庫執行個體上設定共用伺服器程序的詳細資訊，請參閱知識中心的​[如何設定 Amazon RDS for Oracle Database 以搭配使用共用伺服器？](https://aws.amazon.com/premiumsupport/knowledge-center/oracle-db-shared/)一文。

# 對您的 Oracle 資料庫執行個體的連線進行故障診斷
<a name="USER_ConnectToOracleInstance.Troubleshooting"></a>

下列是在您嘗試連接至 Oracle 資料庫執行個體時可能遇到的問題。


****  

| 問題 | 故障診斷建議 | 
| --- | --- | 
|  無法連接至資料庫執行個體。  |  對於新建立的資料庫執行個體，資料庫執行個體的狀態為 **creating (建立中)**，直到它可供使用為止。狀態變更為 **Available (可用)** 時，您便能連線至資料庫執行個體。視資料庫執行個體類別和儲存體數量而定，可能需要最多 20 分鐘的時間，新的資料庫執行個體才會可用。  | 
|  無法連接至資料庫執行個體。  |  如果您無法透過建立資料庫執行個體時指定的連接埠傳送或接收通訊，則無法連接至資料庫執行個體。請洽詢您的網路管理員，以驗證您為資料庫執行個體指定的連接埠可允許傳入和傳出通訊。  | 
|  無法連接至資料庫執行個體。  |  您的本機防火牆強制執行的存取規則，與您獲授權可存取資料庫執行個體安全群組中資料庫執行個體的 IP 地址可能不符。問題很可能是您防火牆上的傳入或傳出規則引起的。 您可以新增或編輯安全群組中的傳入規則。針對 **Source (來源)**，選擇 **My IP (我的 IP)**。此舉允許透過您的瀏覽器中偵測到的 IP 地址存取資料庫執行個體。如需更多詳細資訊，請參閱 [Amazon VPC 和 Amazon RDS](USER_VPC.md)。 如需安全群組的詳細資訊，請參閱[使用安全群組控制存取](Overview.RDSSecurityGroups.md)。 若要逐步進行設定安全群組規則的程序，請參閱 [教學課程：建立要與資料庫執行個體搭配使用的 VPC (僅限 IPv4)](CHAP_Tutorials.WebServerDB.CreateVPC.md)。  | 
|  **Connect failed because target host or object does not exist – Oracle, Error: ORA-12545 (連接失敗，因為目標主機或物件不存在 - Oracle 發生錯誤：ORA-12545)**   |  確定您正確指定伺服器名稱和連接埠號碼。針對 **Server name (伺服器名稱)**，輸入來自主控台的 DNS 名稱。 如需尋找資料庫執行個體的 DNS 名稱和連接埠號碼的詳細資訊，請參閱 [尋找您的 RDS for Oracle 資料庫執行個體的端點](USER_Endpoint.md)。  | 
|  **Invalid username/password; logon denied – Oracle, Error: ORA-01017 (無效的使用者名稱/密碼；登入遭拒 - Oracle 發生錯誤：ORA-01017)**   |  您可以連接資料庫執行個體，但連線被拒。這通常是因為提供了錯誤的使用者名稱或密碼所造成。驗證使用者名稱和密碼，然後重試。  | 
|  **TNS:listener 目前不知道在連線描述項中指定的 SID - Oracle，錯誤：ORA-12505**   |  請確定輸入的 SID 是正確的。SID 與您的資料庫名稱相同。在執行個體之 **Databases** (資料庫) 頁面的 **Configuration** (組態) 索引標籤中尋找資料庫名稱。您也可以使用 AWS CLI尋找資料庫名稱： <pre>aws rds describe-db-instances --query 'DBInstances[*].[DBInstanceIdentifier,DBName]' --output text</pre>  | 

如需連線問題的詳細資訊，請參閱 [無法連線至 Amazon RDS 資料庫執行個體](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)。

# 使用 sqlnet.ora 參數修改連線屬性
<a name="USER_ModifyInstance.Oracle.sqlnet"></a>

sqlnet.ora 檔案包括在 Oracle 資料庫伺服器和用戶端上設定 Oracle Net 功能的參數。使用 sqlnet.ora 檔案中的參數，您可以修改進出資料庫的連線屬性。

如需為何您可能設定 sqlnet.ora 參數的詳細資訊，請參閱 Oracle 文件中的[設定描述檔參數](https://docs.oracle.com/database/121/NETAG/profile.htm#NETAG009)。

## 設定 sqlnet.ora 參數
<a name="USER_ModifyInstance.Oracle.sqlnet.Setting"></a>

Amazon RDS for Oracle 參數群組包括 sqlnet.ora 參數的子集。您可以使用與您設定其他 Oracle 參數相同的方式來設定它們。`sqlnetora.` 字首識別哪些參數是 sqlnet.ora 參數。例如，在 Amazon RDS 的 Oracle 參數群組中，`default_sdu_size` sqlnet.ora 參數是 `sqlnetora.default_sdu_size`。

如需管理參數群組和設定參數值的相關資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

## 支援的 sqlnet.ora 參數
<a name="USER_ModifyInstance.Oracle.sqlnet.Supported"></a>

Amazon RDS 支援下列 sqlnet.ora 參數。動態 sqlnet.ora 參數的變更會立即生效。


****  

| 參數 | 有效值 | 靜態/動態 | Description | 
| --- | --- | --- | --- | 
|  `sqlnetora.default_sdu_size`  |  `512` 至 `2097152`   |  動態  |  工作階段資料單位 (SDU) 大小，以位元組為單位。 SDU 是一次放入緩衝區並跨網路傳送的資料數量。  | 
|  `sqlnetora.diag_adr_enabled`  |  `ON`, `OFF`   |  動態  |  啟用或停用自動診斷儲存庫 (ADR) 追蹤。 `ON` 指定使用 ADR 檔案追蹤。 `OFF` 指定使用非 ADR 檔案追蹤。  | 
|  `sqlnetora.recv_buf_size`  |  `8192` 至 `268435456`   |  動態  |  工作階段之接收操作的緩衝區空間限制，受 TCP/IP、TCP/IP (含 SSL) 和 SDP 通訊協定支援。  | 
|  `sqlnetora.send_buf_size`  |  `8192` 至 `268435456`   |  動態  |  工作階段之傳送操作的緩衝區空間限制，受 TCP/IP、TCP/IP (含 SSL) 和 SDP 通訊協定支援。  | 
|  `sqlnetora.sqlnet.allowed_logon_version_client`  |  `8`, `10`, `11`, `12`   |  動態  |  為了讓用戶端及扮演用戶端的伺服器對 Oracle 資料庫執行個體建立連線，所允許的最低驗證通訊協定版本。  | 
|  `sqlnetora.sqlnet.allowed_logon_version_server`  |  `8`, `9`, `10`, `11`, `12`, `12a`   |  動態  |  允許對 Oracle 資料庫執行個體建立連線的最低驗證通訊協定版本。  | 
|  `sqlnetora.sqlnet.expire_time`  |  `0` 至 `1440`   |  動態  |  傳送檢查以驗證用戶端-伺服器連線是否作用中的時間間隔 (以分鐘為單位)。  | 
|  `sqlnetora.sqlnet.inbound_connect_timeout`  |  `0` 或 `10` 到 `7200`   |  動態  |  用戶端與資料庫伺服器連線，並提供必要身分驗證資訊的時間 (以秒為單位)。  | 
|  `sqlnetora.sqlnet.outbound_connect_timeout`  |  `0` 或 `10` 到 `7200`   |  動態  |  用戶端建立 Oracle Net 與資料庫執行個體連線的時間 (以秒為單位)。  | 
|  `sqlnetora.sqlnet.recv_timeout`  |  `0` 或 `10` 到 `7200`   |  動態  |  在建立連線之後，資料庫伺服器等待用戶端資料的時間 (以秒為單位)。  | 
|  `sqlnetora.sqlnet.send_timeout`  |  `0` 或 `10` 到 `7200`   |  動態  |  在建立連線之後，資料庫伺服器對用戶端完成傳送操作的時間 (以秒為單位)。  | 
|  `sqlnetora.tcp.connect_timeout`  |  `0` 或 `10` 到 `7200`   |  動態  |  用戶端建立資料庫伺服器之 TCP 連線的時間 (以秒為單位)。  | 
|  `sqlnetora.trace_level_server`  |  `0`, `4`, `10`, `16`, `OFF`, `USER`, `ADMIN`, `SUPPORT`  |  動態  | 對於非 ADR 追蹤，在指定的間隔開啟伺服器追蹤或關閉它。 | 

每個支援的 sqlnet.ora 參數的預設值為此版本的 Oracle Database 預設值。

## 檢視 sqlnet.ora 參數
<a name="USER_ModifyInstance.Oracle.sqlnet.Viewing"></a>

您可以使用 AWS 管理主控台 AWS CLI、 或 SQL 用戶端來檢視 sqlnet.ora 參數及其設定。

### 使用主控台檢視 sqlnet.ora 參數
<a name="USER_ModifyInstance.Oracle.sqlnet.Viewing.Console"></a>

如需檢視參數群組中參數的相關資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

在 Oracle 參數群組中，`sqlnetora.` 字首識別哪些參數是 sqlnet.ora 參數。

### 使用 檢視 sqlnet.ora 參數 AWS CLI
<a name="USER_ModifyInstance.Oracle.sqlnet.Viewing.CLI"></a>

若要檢視 Oracle 參數群組中設定的 sqlnet.ora 參數，請使用 AWS CLI [describe-db-parameters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-parameters.html) 命令。

若要檢視 Oracle 資料庫執行個體的所有 sqlnet.ora 參數，請呼叫 AWS CLI [download-db-log-file-portion](https://docs.aws.amazon.com/cli/latest/reference/rds/download-db-log-file-portion.html) 命令。指定資料庫執行個體識別符、日誌檔案名稱和輸出類型。

**Example**  
下列代碼列出 `mydbinstance` 的所有 sqlnet.ora 參數。  
針對 Linux、macOS 或 Unix：  

```
aws rds download-db-log-file-portion \
    --db-instance-identifier mydbinstance \
    --log-file-name trace/sqlnet-parameters \
    --output text
```
在 Windows 中：  

```
aws rds download-db-log-file-portion ^
    --db-instance-identifier mydbinstance ^
    --log-file-name trace/sqlnet-parameters ^
    --output text
```

### 使用 SQL 用戶端檢視 sqlnet.ora 參數
<a name="USER_ModifyInstance.Oracle.sqlnet.Viewing.SQL"></a>

在您連接至 SQL 用戶端的 Oracle 資料庫執行個體之後，下列查詢會列出 sqlnet.ora 參數。

```
1. SELECT * FROM TABLE
2.    (rdsadmin.rds_file_util.read_text_file(
3.         p_directory => 'BDUMP',
4.         p_filename  => 'sqlnet-parameters'));
```

如需連接至 SQL 用戶端中 Oracle 資料庫執行個體的相關資訊，請參閱[連線至 Oracle 資料庫執行個體](USER_ConnectToOracleInstance.md)。

# 保護 Oracle 資料庫執行個體連線的安全
<a name="Oracle.Concepts.RestrictedDBAPrivileges"></a>

Amazon RDS for Oracle 支援 SSL/TLS 加密的連線，以及 Oracle 原生網路加密 (NNE) 選項，以加密應用程式與 Oracle 資料庫執行個體之間的連線。如需 Oracle 原生網路加密選項的詳細資訊，請參閱[Oracle 原生網路加密](Appendix.Oracle.Options.NetworkEncryption.md)。

**Topics**
+ [使用 SSL 搭配 RDS for Oracle 資料庫執行個體](Oracle.Concepts.SSL.md)
+ [更新應用程式使用新的 SSL/TLS 憑證來連線至 Oracle 資料庫執行個體](ssl-certificate-rotation-oracle.md)
+ [使用原生網路加密搭配 RDS for Oracle 資料庫執行個體](Oracle.Concepts.NNE.md)
+ [為 Amazon RDS for Oracle 設定 Kerberos 身分驗證](oracle-kerberos.md)
+ [使用憑證和 Oracle 錢包設定 UTL\$1HTTP 存取](Oracle.Concepts.ONA.md)

# 使用 SSL 搭配 RDS for Oracle 資料庫執行個體
<a name="Oracle.Concepts.SSL"></a>

Secure Sockets Layer (SSL) 是一種產業標準通訊協定，可保護用戶端與伺服器之間的網路連線。SSL 3.0 版之後的名稱已變更為 Transport Layer Security (TLS)，但我們通常仍會將通訊協定稱為 SSL。Amazon RDS 可支援在 Oracle 資料庫執行個體上啟用 SSL 加密。使用 SSL，您可以加密應用程式用戶端與 Oracle 資料庫執行個體之間的連接。所有 AWS 區域均支援 Oracle 使用 SSL。

在與資料庫執行個體相關聯的選項群組中新增 Oracle SSL 選項，就能對 Oracle 資料庫執行個體啟用 SSL 加密。Amazon RDS 會使用第二個連接埠 (依 Oracle 要求) 作為 SSL 連線用途。如此可讓資料庫執行個體與 Oracle 用戶端之間同時進行純文字和 SSL 加密的通訊。例如，您可以使用連接埠搭配純文字通訊與 VPC 內的其他資源通訊，同時使用連接埠搭配 SSL 加密的通訊與 VPC 外部的資源通訊。

如需更多詳細資訊，請參閱 [Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md)。

**注意**  
您不能在相同的資料庫執行個體上同時使用 SSL 和 Oracle 原生網路加密 (NNE)。在您可以使用 SSL 加密之前，必須停用其他任何連線加密。

# 更新應用程式使用新的 SSL/TLS 憑證來連線至 Oracle 資料庫執行個體
<a name="ssl-certificate-rotation-oracle"></a>

自 2023 年 1 月 13 日起，Amazon RDS 已發佈新的憑證認證機構 (CA) 憑證，使用 Secure Socket Layer 或 Transport Layer Security (SSL/TLS) 來連線至 RDS 資料庫執行個體。接下來，您可以找到更新應用程式使用新憑證的相關資訊。

本主題可協助您判斷任何用戶端應用程式是否使用 SSL/TLS 連線至您的資料庫執行個體。

**重要**  
當您變更 Amazon RDS for Oracle 資料庫執行個體的憑證時，只會重新啟動資料庫接聽程式。資料庫執行個體不會重新啟動。現有的資料庫連線不會受到影響，但是新的連線將會在重新啟動接聽程式時於短時間內出現錯誤。  
建議您重新啟動 Oracle 資料庫，以防止任何連線錯誤。

**注意**  
對於使用 SSL/TLS 來連線至資料庫執行個體的用戶端應用程式，您必須更新用戶端應用程式信任存放區來包含新的 CA 憑證。

更新用戶端應用程式信任存放區中的 CA 憑證之後，您就可以在資料庫執行個體輪換憑證。強烈建議先在開發或預備環境中測試這些步驟，再於生產環境中實作。

如需憑證輪換的詳細資訊，請參閱[輪換您的 SSL/TLS 憑證](UsingWithRDS.SSL-certificate-rotation.md)。如需下載憑證的詳細資訊，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。如需對 Oracle 資料庫執行個體使用 SSL/TLS 的資訊，請參閱[Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md)。

**Topics**
+ [找出應用程式是否使用 SSL 進行連線](#ssl-certificate-rotation-oracle.determining)
+ [更新應用程式信任存放區](#ssl-certificate-rotation-oracle.updating-trust-store)
+ [建立 SSL 連線的 Java 程式碼範例](#ssl-certificate-rotation-oracle.java-example)

## 找出應用程式是否使用 SSL 進行連線
<a name="ssl-certificate-rotation-oracle.determining"></a>

如果 Oracle 資料庫執行個體使用的選項群組已加上 `SSL` 選項，表示您可能在使用 SSL。遵循[列出選項群組的選項和選項設定](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ListOption)中的指示，檢查是否如此。如需 `SSL` 選項的資訊，請參閱 [Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md)。

檢查接聽程式日誌，判斷是否有 SSL 連線。下列為接聽程式日誌的輸出範例。

```
date time * (CONNECT_DATA=(CID=(PROGRAM=program)
(HOST=host)(USER=user))(SID=sid)) * 
(ADDRESS=(PROTOCOL=tcps)(HOST=host)(PORT=port)) * establish * ORCL * 0
```

當某個項目的 `PROTOCOL` 是 `tcps` 值時，即表示 SSL 連線。不過，當 `HOST` 為 `127.0.0.1` 時，您可以忽略該項目。來自 `127.0.0.1` 的連線是資料庫執行個體上的本機管理代理程式。這些 連線不是外部 SSL 連線。因此，如果您看到接聽程式日誌項目的 `PROTOCOL` 是 `tcps`，而 `HOST` *不是* `127.0.0.1`，表示有應用程式使用 SSL 來連線。

若要檢查接聽程式日誌，您可以將日誌發佈到 Amazon CloudWatch Logs。如需更多詳細資訊，請參閱 [將 Oracle 日誌發佈至 Amazon CloudWatch Logs](USER_LogAccess.Concepts.Oracle.md#USER_LogAccess.Oracle.PublishtoCloudWatchLogs)。

## 更新應用程式信任存放區
<a name="ssl-certificate-rotation-oracle.updating-trust-store"></a>

您可以為使用 SQL\$1Plus 或 JDBC 建立 SSL/TLS 連線的應用程式更新信任存放區。

### 為 SQL\$1Plus 更新應用程式信任存放區
<a name="ssl-certificate-rotation-oracle.updating-trust-store.sqlplus"></a>

您可以為使用 SQL\$1Plus 建立 SSL/TLS 連線的應用程式更新信任存放區。

**注意**  
更新信任存放區時，除了新增憑證，您還可以保留舊憑證。

**為 SQL\$1Plus 應用程式更新信任存放區**

1. 下載適用於所有 AWS 區域的新根憑證，並將 檔案放在 `ssl_wallet`目錄中。

   如需下載根憑證的資訊，請參閱 [使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。

1. 執行下列命令來更新 Oracle 錢包。

   ```
   prompt>orapki wallet add -wallet $ORACLE_HOME/ssl_wallet -trusted_cert -cert
         $ORACLE_HOME/ssl_wallet/ssl-cert.pem -auto_login_only
   ```

   將檔案名稱換成您下載的檔案名稱。

1. 執行下列命令，以確認已成功更新錢包。

   ```
   prompt>orapki wallet display -wallet $ORACLE_HOME/ssl_wallet                     
   ```

   輸出應包含以下內容。

   ```
   Trusted Certificates: 
   Subject: CN=Amazon RDS Root 2019 CA,OU=Amazon RDS,O=Amazon Web Services\, Inc.,L=Seattle,ST=Washington,C=US
   ```

### 為 JDBC 更新應用程式信任存放區
<a name="ssl-certificate-rotation-oracle.updating-trust-store.jdbc"></a>

您可以為使用 JDBC 建立 SSL/TLS 連線的應用程式更新信任存放區。

如需下載根憑證的資訊，請參閱 [使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。

如需匯入憑證的範例指令碼，請參閱 [將憑證匯入信任存放區的範例指令碼](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-sample-script)。

## 建立 SSL 連線的 Java 程式碼範例
<a name="ssl-certificate-rotation-oracle.java-example"></a>

下列程式碼範例示範如何使用 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/TLS 並已更新應用程式信任存放區之後，您可以將資料庫更新為使用 rds-ca-rsa2048-g1 憑證。如需說明，請參閱[透過修改資料庫執行個體或叢集來更新憑證授權機構憑證](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-updating)中的步驟 3。

# 使用原生網路加密搭配 RDS for Oracle 資料庫執行個體
<a name="Oracle.Concepts.NNE"></a>

Oracle Database 提供兩種透過網路加密資料的方式：原生網路加密 (NNE) 和 Transport Layer Security (TLS)。NNE 是專屬 Oracle 安全性能，而 TLS 是業界標準。RDS for Oracle 支援 Oracle Database 所有版本的 NNE。

NNE 具有超過 TLS 的下列優點：
+ 您可以使用 NNE 選項中的設定來控制用戶端和伺服器上的 NNE：
  + `SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS` 和 `SQLNET.ALLOW_WEAK_CRYPTO`
  + `SQLNET.CRYPTO_CHECKSUM_CLIENT` 和 `SQLNET.CRYPTO_CHECKSUM_SERVER`
  + `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT` 和 `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`
  + `SQLNET.ENCRYPTION_CLIENT` 和 `SQLNET.ENCRYPTION_SERVER`
  + `SQLNET.ENCRYPTION_TYPES_CLIENT` 和 `SQLNET.ENCRYPTION_TYPES_SERVER`
+ 在大多數情況下，您不需要設定用戶端或伺服器。相對地，TLS 要求您同時設定用戶端和伺服器。
+ 不需要憑證。在 TLS 中，伺服器需要憑證 (其最終會過期)，而用戶端需要發出伺服器憑證之憑證授權單位提供的受信任根憑證。

若要針對 Oracle 資料庫執行個體啟用 NNE 加密，請在與資料庫執行個體相關聯的選項群組中新增 Oracle NNE 選項，。如需詳細資訊，請參閱[Oracle 原生網路加密](Appendix.Oracle.Options.NetworkEncryption.md)。

**注意**  
您無法在相同的資料庫執行個體上同時使用 NNE 和 TLS。

# 為 Amazon RDS for Oracle 設定 Kerberos 身分驗證
<a name="oracle-kerberos"></a>

您可以使用 Kerberos 身分驗證，在使用者連線至 Amazon RDS for Oracle 資料庫執行個體時驗證使用者身分。在此組態中，您的資料庫執行個體可搭配 AWS Directory Service for Microsoft Active Directory 使用，也稱為 AWS Managed Microsoft AD。當使用者向加入信任網域的 RDS for Oracle 資料庫執行個體進行驗證時，身分驗證請求會轉送到您使用 Directory Service 建立的目錄。

將您的所有登入資料保留在相同目錄可以節省您的時間和精力。您有一個集中位置，用於存放及管理多個資料庫執行個體的登入資料。目錄也可以改善您的整體安全性描述檔。

# 區域和版本可用性
<a name="oracle-kerberos-setting-up.RegionVersionAvailability"></a>

功能可用性和支援會因每個資料庫引擎的特定版本以及 AWS 區域而有所不同。如需有關 RDS for Oracle 搭配 Kerberos 驗證的版本和區域可用性的詳細資訊，請參閱 [支援 Amazon RDS 中 Kerberos 身分驗證的區域和資料庫引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.KerberosAuthentication.md)。

**注意**  
RDS for Oracle 資料庫執行個體棄用的資料庫執行個體類別不支援 Kerberos 身分分驗證。如需詳細資訊，請參閱[RDS for Oracle 資料庫執行個體類別](Oracle.Concepts.InstanceClasses.md)。

**Topics**
+ [區域和版本可用性](oracle-kerberos-setting-up.RegionVersionAvailability.md)
+ [為 Oracle 資料庫執行個體設定 Kerberos](oracle-kerberos-setting-up.md)
+ [管理網域中的資料庫執行個體](oracle-kerberos-managing.md)
+ [使用 Kerberos 身分驗證連接至 Oracle](oracle-kerberos-connecting.md)

# 為 Oracle 資料庫執行個體設定 Kerberos
<a name="oracle-kerberos-setting-up"></a>

使用 AWS Directory Service for Microsoft Active Directory來 AWS Managed Microsoft AD設定 Oracle 資料庫執行個體的 Kerberos 身分驗證。若要設定 Kerberos 身分驗證，請完成下列步驟：
+ [步驟 1：使用 建立目錄 AWS Managed Microsoft AD](#oracle-kerberos.setting-up.create-directory)
+ [步驟 2：建立信任](#oracle-kerberos.setting-up.create-forest-trust)
+ [步驟 3：設定 Amazon RDS 的 IAM 許可](#oracle-kerberos.setting-up.CreateIAMRole)
+ [步驟 4：建立和設定使用者](#oracle-kerberos.setting-up.create-users)
+ [步驟 5：啟用目錄和資料庫執行個體之間的跨 VPC 流量](#oracle-kerberos.setting-up.vpc-peering)
+ [步驟 6：建立或修改 Oracle 資料庫執行個體](#oracle-kerberos.setting-up.create-modify)
+ [步驟 7：建立 Kerberos 身分驗證 Oracle 登入](#oracle-kerberos.setting-up.create-logins)
+ [步驟 8：設定 Oracle 用戶端](#oracle-kerberos.setting-up.configure-oracle-client)

**注意**  
在安裝期間，RDS 會建立名稱為 *managed\$1service\$1user*@*example.com* 且擁有 `CREATE SESSION` 權限的 Oracle 資料庫使用者，其中 *example.com* 是您的網域名稱。此使用者對應 Directory Service 在受管 Active Directory 內建立的使用者。RDS 會定期使用 Directory Service 提供的登入資料登入 Oracle 資料庫。之後，RDS 會立即銷毀票證快取。

## 步驟 1：使用 建立目錄 AWS Managed Microsoft AD
<a name="oracle-kerberos.setting-up.create-directory"></a>

Directory Service 在 AWS 雲端中建立全受管 Active Directory。當您建立 AWS Managed Microsoft AD 目錄時， 會代表您 Directory Service 建立兩個網域控制站和網域名稱系統 (DNS) 伺服器。目錄伺服器是在 VPC 的不同子網路中建立。此備援有助於確保即使發生故障，您仍然可以存取目錄。

當您建立 AWS Managed Microsoft AD 目錄時， 會代表您 Directory Service 執行下列任務：
+ 在 VPC 內設定 Active Directory。
+ 建立含有使用者名稱 Admin 與指定密碼的目錄管理員帳戶。您可以使用此帳戶來管理目錄。
**注意**  
請務必儲存此密碼。 Directory Service 不會儲存它。您可以重設此密碼，但是無法擷取此密碼。
+ 建立目錄控制器的安全群組。

當您啟動 時 AWS Managed Microsoft AD， 會 AWS 建立組織單位 (OU)，其中包含您目錄的所有物件。此 OU 有您在建立目錄時所輸入的 NetBIOS 名稱，且位於根網域中。網域根由 擁有和管理 AWS。

使用 AWS Managed Microsoft AD 目錄建立的管理員帳戶具有 OU 最常見管理活動的許可：
+ 建立、更新或刪除使用者 
+ 將資源 (例如檔案或列印伺服器) 新增至您的網域，然後對您 OU 中的使用者指派這些資源的許可 
+ 建立額外的 OU 和容器 
+ 委派授權 
+ 從 Active Directory 資源回收筒還原已刪除的物件 
+ 在 Active Directory Web 服務上執行 AD 和 DNS Windows PowerShell 模組 

管理員帳戶也有權執行下列全網域活動：
+ 管理 DNS 組態 (新增、移除或更新記錄、區域和轉寄站) 
+ 檢視 DNS 事件日誌 
+ 檢視安全事件日誌 

若要建立目錄，請使用 AWS 管理主控台 AWS CLI、 或 Directory Service API。請務必開啟目錄安全性群組上的相關輸出連接埠，以便目錄可以與 Oracle 資料庫執行個體通訊。

**使用 建立目錄 AWS Managed Microsoft AD**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/directoryservicev2/](https://console.aws.amazon.com/directoryservicev2/) 開啟 Directory Service 主控台。

1. 在導覽窗格中，選擇 **Directories** (目錄)，然後選擇 **Set up directory** (設定目錄)。

1. 選擇 **AWS Managed Microsoft AD**。 AWS Managed Microsoft AD 是您目前可與 Amazon RDS 搭配使用的唯一選項。

1.  輸入下列資訊：  
**目錄 DNS 名稱**  
目錄的完全合格名稱，例如 **corp.example.com**。  
**目錄 NetBIOS 名稱**  
目錄的簡短名稱，例如：**CORP**。  
**目錄描述**  
(選用) 目錄的描述。  
**管理員密碼**  
目錄管理員的密碼。目錄建立程序會建立含有使用者名稱 Admin 與這組密碼的管理員帳戶。  
目錄管理員密碼不得包含 "admin" 字組。密碼區分大小寫，長度須為 8 至 64 個字元。至少須有一位字元屬於以下四種類型中的三類：  
   + 小寫字母 (a–z) 
   + 大寫字母 (A–Z) 
   + 數字 (0–9) 
   + 非英數字元 (\$1\$1@\$1\$1%^&\$1\$1-\$1=`\$1\$1()\$1\$1[]:;"'<>,.?/)   
**Confirm password (確認密碼)**  
重新輸入的管理員密碼。

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

1.  在 **Networking (聯網)** 區段輸入以下資訊，然後選擇 **Next (下一步)**。  
**VPC**  
目錄的 VPC。在相同 VPC 中建立 Oracle 資料庫執行個體。  
**子網路**  
目錄伺服器的子網路。這兩個子網路必須位於不同的可用區域。

1.  檢閱目錄資訊，並進行必要的變更。若資訊無誤，請選擇 **Create directory (建立目錄)**。  
![\[建立期間的目錄詳細資訊頁面\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/WinAuth2.png)

建立目錄需要幾分鐘的時間。成功建立時，**Status (狀態)** 值會變更為 **Active (作用中)**。

如要查看您目錄的資訊，請在目錄清單中選擇目錄名稱。請記下 **Directory ID (目錄 ID)** 值，因為您在建立或修改 Oracle 資料庫執行個體時將需要這個值。

![\[目錄詳細資訊頁面\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/WinAuth3.png)


## 步驟 2：建立信任
<a name="oracle-kerberos.setting-up.create-forest-trust"></a>

如果您打算 AWS Managed Microsoft AD 僅使用 ，請移至 [步驟 3：設定 Amazon RDS 的 IAM 許可](#oracle-kerberos.setting-up.CreateIAMRole)。

若要使用自我管理 Active Directory 啟用 Kerberos 身分驗證，您必須在自我管理 Active Directory 與上一個步驟中 AWS Managed Microsoft AD 建立的 之間建立樹系信任關係。信任可以是單向，其中 AWS Managed Microsoft AD 信任自我管理的 Active Directory。信任也可以是雙向，其中兩個 Active Directory 互相信任。如需使用 設定樹系信任的詳細資訊 Directory Service，請參閱《 *Directory Service 管理指南*》中的[何時建立信任關係](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_setup_trust.html)。

## 步驟 3：設定 Amazon RDS 的 IAM 許可
<a name="oracle-kerberos.setting-up.CreateIAMRole"></a>

若要 Directory Service 為您呼叫 ，Amazon RDS 需要使用 受管 IAM 政策 的 IAM 角色`AmazonRDSDirectoryServiceAccess`。此角色允許 Amazon RDS 呼叫 Directory Service。

**注意**  
若要讓角色允許存取，必須在 AWS 區域 您的 的正確 中啟用 AWS Security Token Service (AWS STS) 端點 AWS 帳戶。 AWS STS 端點預設會在所有 中處於作用中狀態 AWS 區域，而且您可以使用它們，而不需要任何進一步的動作。如需詳細資訊，請參閱《*IAM 使用者指南*》中的在 [AWS STS 中啟用和停用 AWS 區域](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html#sts-regions-activate-deactivate) 。

### 建立 IAM 角色
<a name="oracle-kerberos.setting-up.CreateIAMRole.create-role"></a>

當您使用 建立資料庫執行個體 AWS 管理主控台，且主控台使用者具有 `iam:CreateRole`許可時，主控台`rds-directoryservice-kerberos-access-role`會自動建立 。否則，您必須手動建立 IAM 角色。當您手動建立 IAM 角色時，請選擇 `Directory Service`，然後將 AWS 受管政策連接到`AmazonRDSDirectoryServiceAccess`該角色。

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

**注意**  
用於 Windows Authentication for RDS for Microsoft SQL Server 的 IAM 角色不可用於 RDS for Oracle。

### 手動建立 IAM 信任政策
<a name="oracle-kerberos.setting-up.CreateIAMRole.trust-policy"></a>

您可以選擇性地建立具有必要許可的資源政策，而不是使用受管 IAM 政策 `AmazonRDSDirectoryServiceAccess`。同時指定 `directoryservice.rds.amazonaws.com` 和 `rds.amazonaws.com` 作為主體。

若要限制 Amazon RDS 為特定資源提供另一項服務的許可，建議在資源政策中使用 [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) 全域條件內容索引鍵。防範混淆代理人問題的最有效方法是使用 `aws:SourceArn` 全域條件內容索引鍵，以及 Amazon RDS 資源的完整 ARN。如需詳細資訊，請參閱[防止跨服務混淆代理人問題](cross-service-confused-deputy-prevention.md)。

下列範例示範如何使用 Amazon RDS 中的 `aws:SourceArn` 和 `aws:SourceAccount` 全域條件內容索引鍵，來預防混淆代理人問題。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "directoryservice.rds.amazonaws.com",
          "rds.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:rds:us-east-1:123456789012:db:mydbinstance"
        },
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        }
      }
    }
  ]
}
```

------

對於選擇加入區域，您還必須以 `directoryservice.rds.region_name.amazonaws.com` 的形式包含該區域的服務主體。例如，在非洲 (開普敦) 區域中，請使用下列信任政策：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "directoryservice.rds.amazonaws.com",
          "directoryservice.rds.af-south-1.amazonaws.com",
          "rds.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:rds:af-south-1:123456789012:db:mydbinstance"
        },
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        }
      }
    }
  ]
}
```

------

此角色也須具有下列 IAM 政策：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "ds:DescribeDirectories",
        "ds:AuthorizeApplication",
        "ds:UnauthorizeApplication",
        "ds:GetAuthorizedApplicationDetails"
      ],
    "Effect": "Allow",
    "Resource": "*"
    }
  ]
}
```

------

## 步驟 4：建立和設定使用者
<a name="oracle-kerberos.setting-up.create-users"></a>

 您可以使用 Active Directory 使用者和電腦工具 (其為 Active Directory 網域服務和 Active Directory 輕量型目錄服務工具之一) 來建立使用者。在此情況下，*使用者* 代表具有目錄存取權的個人或實體。

若要在 Directory Service 目錄中建立使用者，您必須連線到屬於 Directory Service 目錄成員的 Windows 型 Amazon EC2 執行個體。同時，您必須以具有建立使用者之許可的使用者身分來登入。如需在 Microsoft Active Directory 建立使用者的詳細資訊，請參閱《* AWS Managed Microsoft AD管理指南*》中的[管理Directory Service 中的使用者和群組](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups.html)。

## 步驟 5：啟用目錄和資料庫執行個體之間的跨 VPC 流量
<a name="oracle-kerberos.setting-up.vpc-peering"></a>

如果您打算在相同 VPC 中尋找目錄和資料庫執行個體，請略過本步驟，並移至[步驟 6：建立或修改 Oracle 資料庫執行個體](#oracle-kerberos.setting-up.create-modify)。

如果您計劃在不同 AWS 帳戶或 VPCs 中尋找目錄和資料庫執行個體，請使用 VPC 對等互連或 [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html) 設定跨 VPC 流量。下列程序會使用 VPC 互連來啟用 VPC 之間的流量。請遵循《Amazon Virtual Private Cloud 互連指南》**中[什麼是 VPC 互連？](https://docs.aws.amazon.com/vpc/latest/peering/Welcome.html)的指示。

**使用 VPC 互連以啟用跨 VPC 流量**

1. 設定適當的 VPC 路由規則，以確保網路流量可以雙向對流。

1. 確保資料庫執行個體安全群組可以從目錄的安全群組接收傳入流量。若要取得更多資訊，請參閱《* AWS Managed Microsoft AD管理指南*》中的 [Directory Service 最佳實務](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_best_practices.html)。

1. 確保沒有網路存取控制清單 (ACL) 規則來封鎖流量。

如果不同的 AWS 帳戶擁有該目錄，您必須共用該目錄。

**在 AWS 帳戶之間共用目錄**

1. 遵循《 AWS *Directory Service 管理指南*》中的[教學課程：共用目錄以實現無縫 EC2 網域加入，開始與將在其中建立資料庫執行個體的帳戶共用 AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_directory_sharing.html)目錄。

1. 使用資料庫執行個體的帳戶登入 Directory Service 主控台，並確保網域具有 `SHARED` 狀態，然後再繼續。

1. 使用資料庫執行個體的帳戶登入 Directory Service 主控台時，請注意**目錄 ID** 值。您可以使用此目錄 ID，將資料庫執行個體加入網域。

## 步驟 6：建立或修改 Oracle 資料庫執行個體
<a name="oracle-kerberos.setting-up.create-modify"></a>

建立或修改要搭配您目錄使用的 Oracle 資料庫執行個體。您可以使用主控台、CLI 或 RDS API，將資料庫執行個體與目錄建立關聯。您可採用下列其中一種方式來這麼做：
+ 使用主控台、[ create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) CLI 命令，或 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) RDS API 操作，建立新的 Oracle 資料庫執行個體。

  如需說明，請參閱「[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)」。
+ 使用主控台、[modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI 命令，或 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) RDS API 操作，修改現有的 Oracle 資料庫執行個體。

  如需說明，請參閱「[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)」。
+ 使用主控台、[ restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) CLI 命令，或 [ RestoreDBInstanceFromDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html) RDS API 操作，從資料庫快照還原 Oracle 資料庫執行個體。

  如需說明，請參閱「[還原至資料庫執行個體](USER_RestoreFromSnapshot.md)」。
+ 使用主控台、[ restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) CLI 命令，或 [ RestoreDBInstanceToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) RDS API 操作，將 Oracle 資料庫執行個體還原至時間點。

  如需說明，請參閱「[將 Amazon RDS 的資料庫執行個體還原至指定時間](USER_PIT.md)」。

僅 VPC 中的 Oracle 資料庫執行個體支援 Kerberos 身分驗證。資料庫執行個體可在與目錄相同的 VPC 中，或在不同 VPC 中。當您建立或修改資料庫執行個體時，請執行以下動作：
+ 請提供您建立目錄時產生的網域識別符 (`d-*` 識別符)。
+ 請提供所建立的 IAM 角色名稱。
+ 確保資料庫執行個體安全群組可以接收來自目錄安全群組的傳入流量，並將傳出流量傳送至目錄。

使用主控台建立資料庫執行個體時，請在 **Database authentication (資料庫身分驗證)** 區段中選擇 **Password and Kerberos authentication (密碼和 Kerberos 身分驗證)**。選擇 **Browse Directory (瀏覽目錄)** 並選取目錄，或是選擇 **Create a new directory (建立新目錄)**。

![\[建立資料庫執行個體時的 Kerberos 身分驗證設定\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/kerberos-authentication.png)


當您使用主控台修改或還原資料庫執行個體時，請選擇 **Kerberos authentication (Kerberos 身分驗證)** 區段中的目錄，或選擇 **Create a new directory (建立新目錄)**。

![\[修改或還原資料庫執行個體時的 Kerberos 身分驗證設定\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/kerberos-auth-modify-restore.png)


當您使用 時 AWS CLI，資料庫執行個體需要下列參數，才能使用您建立的目錄：
+ 針對 `--domain` 參數，使用您建立目錄時產生的網域識別碼 ("d-\$1" 識別碼)。
+ 針對 `--domain-iam-role-name` 參數，使用您建立的規則，其會使用受管 IAM 政策 `AmazonRDSDirectoryServiceAccess`。

例如，下列 CLI 命令會修改資料庫執行個體來使用目錄。

針對 Linux、macOS 或 Unix：

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --domain d-ID \
    --domain-iam-role-name role-name
```

在 Windows 中：

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --domain d-ID ^
    --domain-iam-role-name role-name
```

**重要**  
如果您修改資料庫執行個體，以啟用 Kerberos 身分驗證，請在進行變更後重新啟動資料庫執行個體。

**注意**  
*MANAGED\$1SERVICE\$1USER* 是一個服務帳戶，其名稱是由 RDS 的 Directory Service 隨機產生。在 Kerberos 身分驗證設定期間，RDS for Oracle 會建立具有相同名稱的使用者，並為其指派 `CREATE SESSION` 權限。Oracle 資料庫使用者在外部識別為 *MANAGED\$1SERVICE\$1USER@EXAMPLE.COM*，其中 *EXAMPLE.COM* 是您網域的名稱。RDS 會定期使用 Directory Service 提供的登入資料登入 Oracle 資料庫。之後，RDS 會立即銷毀票證快取。

## 步驟 7：建立 Kerberos 身分驗證 Oracle 登入
<a name="oracle-kerberos.setting-up.create-logins"></a>

如同對任何其他資料庫執行個體一般，使用 Amazon RDS 主要使用者登入資料來連接至 Oracle 資料庫執行個體。資料庫執行個體會加入 AWS Managed Microsoft AD 網域。因此，您可以從網域中的 Microsoft Active Directory 使用者佈建 Oracle 登入和使用者。若要管理資料庫許可，請將標準 Oracle 許可授與這些登入，以及撤銷其許可。

**允許 Microsoft Active Directory 使用者與 Oracle 進行身分驗證**

1. 使用 Amazon RDS 主要使用者登入資料來連線至 Oracle 資料庫執行個體。

1. 在 Oracle 資料庫中建立外部身分驗證的使用者。

   在下列範例中，以使用者名稱和網域名稱取代 `KRBUSER@CORP.EXAMPLE.COM`。

   ```
   CREATE USER "KRBUSER@CORP.EXAMPLE.COM" IDENTIFIED EXTERNALLY; 
   GRANT CREATE SESSION TO "KRBUSER@CORP.EXAMPLE.COM";
   ```

   來自您網域的使用者 (人員和應用程式兩者) 現在可以使用 Kerberos 身分驗證從加入網域的用戶端機器連線至 Oracle 資料庫執行個體。

## 步驟 8：設定 Oracle 用戶端
<a name="oracle-kerberos.setting-up.configure-oracle-client"></a>

若要設定 Oracle 用戶端，必須符合下列需求：
+ 請建立一個名為 krb5.conf (Linux) 或 krb5.ini (Windows) 的組態檔案，以指向該網域。設定 Oracle 用戶端以使用此組態檔案。
+ 確認流量可以透過 TCP/UDP Directory Service 在用戶端主機和透過 DNS 連接埠 53、透過 TCP 的 Kerberos 連接埠 (88 和 464 用於受管 Directory Service)，以及透過 TCP 的 LDAP 連接埠 389 之間流動。
+ 確定流量可透過資料庫連接埠在用戶端主機和資料庫執行個體之間往來。

以下是 的範例內容 AWS Managed Microsoft AD。

```
[libdefaults]
 default_realm = EXAMPLE.COM
[realms]
 EXAMPLE.COM = {
  kdc = example.com
  admin_server = example.com
 }
[domain_realm]
 .example.com = CORP.EXAMPLE.COM
 example.com = CORP.EXAMPLE.COM
```

以下是適用於內部部署 Microsoft AD 的範例內容。在 krb5.conf 或 krb5.ini 檔案中，以內部部署 AD 伺服器的名稱來取代*內部部署廣告伺服器名稱*。

```
[libdefaults]
 default_realm = ONPREM.COM
[realms]
 AWSAD.COM = {
  kdc = awsad.com
  admin_server = awsad.com
 }
 ONPREM.COM = {
  kdc = on-prem-ad-server-name
  admin_server = on-prem-ad-server-name
 }
[domain_realm]
 .awsad.com = AWSAD.COM
 awsad.com= AWSAD.COM
 .onprem.com = ONPREM.COM
 onprem.com= ONPREM.COM
```

**注意**  
在您設定 krb5.ini 或 krb5.conf 檔案後，我們建議您重新啟動伺服器。

以下是適用於 SQL\$1Plus 組態的範例 sqlnet.ora 內容：

```
SQLNET.AUTHENTICATION_SERVICES=(KERBEROS5PRE,KERBEROS5)
SQLNET.KERBEROS5_CONF=path_to_krb5.conf_file
```

如需 SQL Developer 組態的範例，請參閱 Oracle Support 的[文件 1609359.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1609359.1)。

# 管理網域中的資料庫執行個體
<a name="oracle-kerberos-managing"></a>

您可以使用主控台、CLI 或 RDS API，來管理資料庫執行個體，以及其與 Microsoft Active Directory 的關係。例如，您可以使 Microsoft Active Directory 產生關聯，以啟用 Kerberos 身分驗證。您也可以將 Microsoft Active Directory 解除關聯，以停用 Kerberos 身分驗證。您可以將要由某個 Microsoft Active Directory 外部識別的資料庫執行個體移至另一個 Microsoft Active Directory。

例如，使用 CLI，您可以執行下列動作：
+ 若要對失敗的成員資格重新嘗試啟用 Kerberos 身分驗證，請使用 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI 命令，並為 `--domain` 選項指定目前成員資格的目錄 ID。
+ 若要在資料庫執行個體上停用 Kerberos 身分驗證，請使用 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI 命令，並為 `none` 選項指定 `--domain`。
+ 若要將資料庫執行個體從某個網域移至另一個網域，請使用 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI 命令，並為 `--domain` 選項指定新網域的網域識別符。

## 檢視網域成員資格的狀態
<a name="oracle-kerberos-managing.understanding"></a>

在您建立或修改資料庫執行個體之後，此資料庫執行個體會成為網域的成員。您可以在主控台中或執行 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) CLI 命令，來檢視資料庫執行個體的網域成員資格狀態。資料庫執行個體的狀態可以是下列其中一個：
+ `kerberos-enabled` – 資料庫執行個體已啟用 Kerberos 身分驗證。
+ `enabling-kerberos` – AWS 正在此資料庫執行個體上啟用 Kerberos 身分驗證。
+ `pending-enable-kerberos` – 在此資料庫執行個體上擱置 Kerberos 身分驗證的啟用。
+ `pending-maintenance-enable-kerberos` – AWS 將在下次排定的維護時段嘗試在資料庫執行個體上啟用 Kerberos 身分驗證。
+ `pending-disable-kerberos` – 在此資料庫執行個體上擱置 Kerberos 身分驗證的停用。
+ `pending-maintenance-disable-kerberos` – AWS 將在下次排定的維護時段嘗試在資料庫執行個體上停用 Kerberos 身分驗證。
+ `enable-kerberos-failed` – 有一個組態問題已禁止 AWS 在資料庫執行個體上啟用 Kerberos 身分驗證。請更正問題，然後重新發出命令來修改資料庫執行個體。
+ `disabling-kerberos` – AWS 正在此資料庫執行個體上停用 Kerberos 身分驗證。

由於網路連線問題或 IAM 角色不正確，請求啟用 Kerberos 身分驗證可能失敗。當您建立或修改資料庫執行個體時，如果嘗試啟用 Kerberos 身分驗證失敗，請確定您使用的是正確的 IAM 角色。然後，修改資料庫執行個體來加入網域。

**注意**  
僅在 Kerberos 身分驗證搭配 Amazon RDS for Oracle 時，才會將流量傳送至網域的 DNS 伺服器。所有其他 DNS 都被視為執行 Oracle 之資料庫執行個體上的傳出網路存取。如需傳出網路存取搭配 Amazon RDS for Oracle 的詳細資訊，請參閱[設定自訂 DNS 伺服器](Appendix.Oracle.CommonDBATasks.System.md#Appendix.Oracle.CommonDBATasks.CustomDNS)。

## 強制輪換 Kerberos 金鑰
<a name="oracle-kerberos-managing.rotation"></a>

私密金鑰在 AWS Managed Microsoft AD 和 Amazon RDS for Oracle 資料庫執行個體之間共享。此金鑰每 45 天自動輪換。您可以使用以下 Amazon RDS 程序以強制輪換此金鑰：

```
SELECT rdsadmin.rdsadmin_kerberos_auth_tasks.rotate_kerberos_keytab AS TASK_ID FROM DUAL;
```

**注意**  
在僅供讀取複本組態中，此程序只能在來源資料庫執行個體上使用，無法在僅供讀取複本上使用。

`SELECT` 陳述式以 `VARCHAR2` 資料類型傳回任務 ID。您可在 bdump 檔案之中，檢視進行中作業的狀態。bdump 檔案位在 `/rdsdbdata/log/trace` 目錄：每個 bdump 檔案的名稱格式如下。

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

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

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

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

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

# 使用 Kerberos 身分驗證連接至 Oracle
<a name="oracle-kerberos-connecting"></a>

本節假設您已設定如[步驟 8：設定 Oracle 用戶端](oracle-kerberos-setting-up.md#oracle-kerberos.setting-up.configure-oracle-client)所述 Oracle 用戶端。若要使用 Kerberos 身分驗證連接至 Oracle 資料庫，請使用 Kerberos 身分驗證類型登入。例如，在啟動 Oracle SQL Developer 之後，請選擇 **Kerberos 身分驗證**做為身分驗證類型，如下列範例所示。

![\[顯示 Oracle SQL Developer 中的新增/選取資料庫連線對話方塊。已選取 Kerberos 身分驗證核取方塊。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/ora-kerberos-auth.png)


若要透過 SQL\$1Plus 使用 Kerberos 身分驗證連接至 Oracle：

1. 在命令提示中，執行下列命令：

   ```
   kinit username
   ```

   將 *`username`* 取代為使用者名稱，並在提示中，輸入 Microsoft Active Directory 中針對使用者存放的密碼。

1. 開啟 SQL\$1Plus，然後使用 Oracle 資料庫執行個體的 DNS 名稱和連接埠號碼進行連線。

   如需在 SQL\$1Plus 連接至資料庫執行個體的詳細資訊，請參閱[使用 SQL\$1Plus 連線至您的資料庫執行個體](USER_ConnectToOracleInstance.SQLPlus.md)。

**提示**  
如果您使用原生 Windows 快取，您也可以在 sqlnet.ora 檔案中將 `SQLNET.KERBEROS5_CC_NAME` 參數設定為 `OSMSFT://` 或 `MSLSA`，以使用存放在 Microsoft Active Directory 中的憑證。

# 使用憑證和 Oracle 錢包設定 UTL\$1HTTP 存取
<a name="Oracle.Concepts.ONA"></a>

Amazon RDS 在您的 RDS for Oracle 資料庫執行個體上支援對外網路存取。若要將資料庫執行個體連線至網路，您可以使用下列 PL/SQL 套件：

`UTL_HTTP`  
此套件會從 SQL 和 PL/SQL 進行 HTTP 呼叫。您可以用其透過 HTTP 存取網際網路上的資料。如需詳細資訊，請參閱 Oracle 文件中的 [UTL\$1HTTP](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_HTTP.html#GUID-A85D2D1F-90FC-45F1-967F-34368A23C9BB)。

`UTL_TCP`  
此套件會在 PL/SQL 中提供 TCP/IP 用戶端存取功能。此套件對於使用網際網路通訊協定和電子郵件的 PL/SQL 應用程式非常有用。如需詳細資訊，請參閱 Oracle 文件中的 [UTL\$1TCP](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_TCP.html#GUID-348AFFE8-78B2-4217-AE73-384F46A1D292)。

`UTL_SMTP`  
此套件會提供 SMTP 命令的介面，讓用戶端能將電子郵件傳送至 SMTP 伺服器。如需詳細資訊，請參閱 Oracle 文件中的 [UTL\$1SMTP](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_SMTP.html#GUID-F0065C52-D618-4F8A-A361-7B742D44C520)。

完成下列任務，就可以設定 `UTL_HTTP.REQUEST`，搭配執行 SSL 交握期間需要用戶端身分驗證憑證的網站使用。您也可以修改 Oracle 錢包產生命令和 `DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE` 程序，為網站 `UTL_HTTP` 存取設定密碼身分驗證。如需詳細資訊，請參閱 Oracle 資料庫說明文件中的 [ DBMS\$1NETWORK\$1ACL\$1ADMIN](https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/DBMS_NETWORK_ACL_ADMIN.html)。

**注意**  
您可以針對 `UTL_SMTP` 調整下列任務，允許透過 SSL/TLS (包括 [Amazon Simple Email Service](https://aws.amazon.com/ses/)) 傳送電子郵件。

**Topics**
+ [設定 UTL\$1HTTP 存取時的考量](#utl_http-considerations)
+ [步驟 1：取得網站的根憑證](#website-root-certificate)
+ [步驟 2：建立 Oracle 錢包](#create-oracle-wallet)
+ [步驟 3：將 Oracle 錢包下載到 RDS for Oracle 執行個體](#upload-wallet-to-instance)
+ [步驟 4：授予使用者使用 Oracle 錢包的許可](#config-oracle-wallet-user)
+ [步驟 5：設定從資料庫執行個體存取網站的權限](#config-website-access)
+ [步驟 6：測試從資料庫執行個體連至網站的連線](#test_utl_http)

## 設定 UTL\$1HTTP 存取時的考量
<a name="utl_http-considerations"></a>

設定存取之前，請先考量下列事項：
+ 您可以使用 SMTP 搭配 UTL\$1MAIL 選項。如需詳細資訊，請參閱[Oracle UTL\$1MAIL](Oracle.Options.UTLMAIL.md)。
+ 遠端主機的網域名稱伺服器 (DNS) 名稱可以是以下任何項目：
  + 可公開解析。
  + Amazon RDS 資料庫執行個體的端點。
  + 可透過自訂 DNS 伺服器解析。如需更多詳細資訊，請參閱 [設定自訂 DNS 伺服器](Appendix.Oracle.CommonDBATasks.System.md#Appendix.Oracle.CommonDBATasks.CustomDNS)。
  + 相同 VPC 或對等 VPC 中 Amazon EC2 執行個體的私有 DNS 的名稱。在此情況下，請確定名稱可透過自訂 DNS 伺服器解析。或者，若要使用 Amazon 提供的 DNS，您可以在 VPC 設定中啟用 `enableDnsSupport` 屬性，並為 VPC 對等連接啟用 DNS 解析支援。如需詳細資訊，請參閱 [VPC 中的 DNS 支援](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support)和[修改 VPC 對等連接](https://docs.aws.amazon.com/vpc/latest/peering/working-with-vpc-peering.html#modify-peering-connections)。
  + 如要安全連線到遠端 SSL/TLS 資來源，建議您建立並上傳自訂的 Oracle 錢包。通過使用 Amazon S3 與 Amazon RDS for Oracle 的功能整合，您可以將 Amazon S3 中的錢包下載到 Oracle 資料庫執行個體中。有關 Oracle Amazon S3 整合的詳細資訊，請參閱 [Amazon S3 整合](oracle-s3-integration.md)。
+ 若 Oracle SSL 選項已為個別執行個體進行設定，則您可以透過 SSL/TLS 端點來建立 Oracle 資料庫執行個體之間的資料庫連結。無需進一步設定。如需詳細資訊，請參閱[Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md)。

## 步驟 1：取得網站的根憑證
<a name="website-root-certificate"></a>

若要讓 RDS for Oracle 資料庫執行個體建立與網站的安全連線，請新增根 CA 憑證。Amazon RDS 使用根憑證將網站憑證簽入 Oracle 錢包。

您可以透過多種方式取得根憑證。例如，您可以執行下列動作：

1. 使用 Web 伺服器造訪受憑證保護的網站。

1. 下載用於簽署的根憑證。

對於 AWS 服務，根憑證通常位於 [Amazon 信任服務儲存庫](https://www.amazontrust.com/repository/)中。

## 步驟 2：建立 Oracle 錢包
<a name="create-oracle-wallet"></a>

建立同時包含 Web 伺服器憑證和用戶端身分驗證憑證的 Oracle 錢包。RDS Oracle 執行個體使用 Web 伺服器憑證與網站建立安全連線。網站需要用戶端憑證用於驗證 Oracle 資料庫使用者。

您可能希望設定安全連線，而不透過用戶端憑證進行身分驗證。在此情況下，可以略過以下程序中的 Java 金鑰存放區步驟。

**建立 Oracle 錢包**

1. 將根憑證和用戶端憑證放在單一目錄中，然後變更為此目錄中。

1. 將 .p12 用戶端憑證轉換為 Java 金鑰存放區。
**注意**  
如果您不透過用戶端憑證進行身分驗證，可略過此步驟。

   下列範例將名為 *client\$1certificate.p12* 的用戶端憑證轉換為 *client\$1keystore.jks* Java 金鑰存放區。這樣金鑰存放區就包含在 Oracle 錢包中。金鑰存放區密碼為 *P12PASSWORD*。

   ```
   orapki wallet pkcs12_to_jks -wallet ./client_certificate.p12 -jksKeyStoreLoc ./client_keystore.jks -jksKeyStorepwd P12PASSWORD
   ```

1. 為 Oracle 錢包建立與憑證目錄不同的目錄。

   下列範例會建立 `/tmp/wallet` 目錄。

   ```
   mkdir -p /tmp/wallet
   ```

1. 在錢包目錄中建立 Oracle 錢包。

   下列範例會將 Oracle 錢包密碼設定為 *P12PASSWORD*，此密碼與上一步中 Java 金鑰存放區使用的密碼相同。使用相同的密碼很方便，但沒有必要。`-auto_login` 參數會開啟自動登入功能，因此不需要每次存取時都指定一次密碼。
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

   ```
   orapki wallet create -wallet /tmp/wallet -pwd P12PASSWORD -auto_login
   ```

1. 將 Java 金鑰存放區新增到您的 Oracle 錢包。
**注意**  
如果您不透過用戶端憑證進行身分驗證，可略過此步驟。

   下列範例會將金鑰存放區 *client\$1keystore.jks* 新增到名為 */tmp/wallet* 的 Oracle 錢包。在此範例中，為 Java 金鑰存放區和 Oracle 錢包指定了相同的密碼。

   ```
   orapki wallet jks_to_pkcs12 -wallet /tmp/wallet -pwd P12PASSWORD -keystore ./client_keystore.jks -jkspwd P12PASSWORD
   ```

1. 將目標網站的根憑證新增至 Oracle 錢包。

   下列範例會新增名為 *Root\$1CA.cer* 的憑證。

   ```
   orapki wallet add -wallet /tmp/wallet -trusted_cert -cert ./Root_CA.cer -pwd P12PASSWORD
   ```

1. 新增任何中繼憑證。

   下列範例會新增名為 *Intermediate.cer* 的憑證。若要載入所有中繼憑證，請視需要重複此步驟。

   ```
   orapki wallet add -wallet /tmp/wallet -trusted_cert -cert ./Intermediate.cer -pwd P12PASSWORD
   ```

1. 確認新建立的 Oracle 錢包含有所需的憑證。

   ```
   orapki wallet display -wallet /tmp/wallet -pwd P12PASSWORD
   ```

## 步驟 3：將 Oracle 錢包下載到 RDS for Oracle 執行個體
<a name="upload-wallet-to-instance"></a>

在此步驟中，將 Oracle 錢包上傳到 Amazon S3，然後將錢包從 Amazon S3 下載到 RDS for Oracle 執行個體。

**將 Oracle 錢包下載到 RDS for Oracle 資料庫執行個體**

1. 完成 Amazon S3 與 Oracle 整合的必要條件，然後新增 `S3_INTEGRATION` 選項至您的 Oracle 資料庫執行個體。確保選項的 IAM 角色可存取您使用的 Amazon S3 儲存貯體。

   如需詳細資訊，請參閱[Amazon S3 整合](oracle-s3-integration.md)。

1. 以主要使用者身分登入資料庫執行個體，然後建立一個 Oracle 目錄來保存 Oracle 錢包。

   下列範例會建立名為 *WALLET\$1DIR* 的 Oracle 目錄。

   ```
   EXEC rdsadmin.rdsadmin_util.create_directory('WALLET_DIR');
   ```

   如需詳細資訊，請參閱[在主要資料儲存空間中建立和捨棄目錄](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.NewDirectories)。

1. 將 Oracle 錢包上傳至您的 Amazon S3 儲存貯體。

   您可以使用任何支援的上傳技術。

1. 如要重新上傳 Oracle 錢包，請刪除現有錢包。否則，跳至下一步。

   下列範例會移除名為 *cwallet.sso* 的現有錢包。

   ```
   EXEC UTL_FILE.FREMOVE ('WALLET_DIR','cwallet.sso');
   ```

1. 將 Oracle 錢包從您的 Amazon S3 儲存貯體下載至 Oracle 資料庫執行個體。

   下列範例會將名為 *cwallet.sso* 的錢包，從 Amazon S3 儲存貯體 *my\$1s3\$1bucket* 下載到資料庫執行個體目錄 *WALLET\$1DIR*。

   ```
   SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
         p_bucket_name    =>  'my_s3_bucket', 
         p_s3_prefix      =>  'cwallet.sso', 
         p_directory_name =>  'WALLET_DIR') 
      AS TASK_ID FROM DUAL;
   ```

1. (選用) 下載受密碼保護的 Oracle 錢包。

   只有在您想要求每次使用錢包都輸入密碼時，才需下載此錢包。下列範例會下載受密碼保護的錢包 *ewallet.p12*。

   ```
   SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
         p_bucket_name    =>  'my_s3_bucket', 
         p_s3_prefix      =>  'ewallet.p12', 
         p_directory_name =>  'WALLET_DIR') 
      AS TASK_ID FROM DUAL;
   ```

1. 檢查您的資料庫任務。

   下列範例中，將上述步驟傳回的任務 ID 替換為 *dbtask-1234567890123-4567.log*。

   ```
   SELECT TEXT FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1234567890123-4567.log'));
   ```

1. 檢查用於存放 Oracle 錢包的目錄內容。

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'WALLET_DIR'));
   ```

   如需詳細資訊，請參閱[列出資料庫執行個體目錄中的檔案](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ListDirectories)。

## 步驟 4：授予使用者使用 Oracle 錢包的許可
<a name="config-oracle-wallet-user"></a>

您可以建立新的資料庫使用者或設定現有使用者。無論哪種情況，都必須為使用者設定 Oracle 錢包的存取權，以建立安全連線和使用憑證進行用戶端身分驗證。

**授予使用者使用 Oracle 錢包的許可**

1. 以主要使用者身分登入 RDS for Oracle 資料庫執行個體。

1. 如果不想設定現有的資料庫使用者，請建立一個新使用者。否則，跳至下一步。

   下列範例會建立名為 *my-user* 的資料庫使用者。

   ```
   CREATE USER my-user IDENTIFIED BY my-user-pwd;
   GRANT CONNECT TO my-user;
   ```

1. 向您的資料庫使用者授予許可，允許存取包含 Oracle 錢包的目錄。

   下列範例會為 *my-user* 使用者授予目錄 *WALLET\$1DIR* 的讀取存取權。

   ```
   GRANT READ ON DIRECTORY WALLET_DIR TO my-user;
   ```

1. 使用 `UTL_HTTP` 套件授予資料庫使用者許可。

   下列 PL/SQL 程式授予 `UTL_HTTP` 存取權給使用者 *my-user*。

   ```
   BEGIN 
     rdsadmin.rdsadmin_util.grant_sys_object('UTL_HTTP', UPPER('my-user')); 
     END;
   /
   ```

1. 使用 `UTL_FILE` 套件授予資料庫使用者許可。

   下列 PL/SQL 程式授予 `UTL_FILE` 存取權給使用者 *my-user*。

   ```
   BEGIN 
     rdsadmin.rdsadmin_util.grant_sys_object('UTL_FILE', UPPER('my-user')); 
     END;
   /
   ```

## 步驟 5：設定從資料庫執行個體存取網站的權限
<a name="config-website-access"></a>

在此步驟中，會對 Oracle 資料庫使用者進行設定，允許該使用者使用 `UTL_HTTP`、您上傳的 Oracle 錢包和用戶端憑證連線至您的目標網站。如需詳細資訊，請參閱 Oracle 資料庫說明文件中的[設定 Oracle 錢包的存取控制](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/managing-fine-grained-access-in-pl-sql-packages-and-types.html#GUID-0BCB5925-A40F-4507-95F9-5DA4A1919EBD)。

**設定從 RDS for Oracle 資料庫執行個體存取網站的權限**

1. 以主要使用者身分登入 RDS for Oracle 資料庫執行個體。

1. 在安全連接埠上為使用者和目標網站建立主機存取控制項目 (ACE)。

   下列範例會為 *my-user* 設定安全連接埠 443 上 *secret.encrypted-website.com* 的存取權。

   ```
   BEGIN
     DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
       host       => 'secret.encrypted-website.com', 
       lower_port => 443,
       upper_port => 443,
       ace        => xs$ace_type(privilege_list => xs$name_list('http'),
                                 principal_name => 'my-user',
                                 principal_type => xs_acl.ptype_db)); 
                              -- If the program unit results in PLS-00201, set
                              -- the principal_type parameter to 2 as follows:
                              -- principal_type => 2));
   END;
   /
   ```
**重要**  
上述程式單元可能會導致下列錯誤：`PLS-00201: identifier 'XS_ACL' must be declared`。如果傳回此錯誤，請將指派值給 `principal_type` 的一行取代為以下這一行，然後重新執行程式單元：  

   ```
   principal_type => 2));
   ```
若要進一步了解 PL/SQL 套件 `XS_ACL` 中的常數，請參閱 Oracle Database 文件中的 [Real Application Security 的管理員和開發人員指南](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbfsg/XS_ACL-package.html#GUID-A157FB28-FE23-4D30-AAEB-8224230517E7)**。

   如需詳細資訊，請參閱 Oracle 資料庫說明文件中的[設定外部網路服務的存取控制](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/managing-fine-grained-access-in-pl-sql-packages-and-types.html#GUID-3D5B66BC-0277-4887-9CD1-97DB44EB5213)。

1. (選用) 為標準連接埠上的使用者和目標網站建立 ACE。

   如果某些網頁是從標準 Web 伺服器連接埠 (80) 而不是安全連接埠 (443) 提供的，可能需要使用標準連接埠。

   ```
   BEGIN
     DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
       host       => 'secret.encrypted-website.com', 
       lower_port => 80,
       upper_port => 80,
       ace        => xs$ace_type(privilege_list => xs$name_list('http'),
                                 principal_name => 'my-user',
                                 principal_type => xs_acl.ptype_db)); 
                              -- If the program unit results in PLS-00201, set
                              -- the principal_type parameter to 2 as follows:
                              -- principal_type => 2));
   END;
   /
   ```

1. 確認存取控制項目存在。

   ```
   SET LINESIZE 150
   COLUMN HOST FORMAT A40
   COLUMN ACL FORMAT A50
   
   SELECT HOST, LOWER_PORT, UPPER_PORT, ACL
     FROM DBA_NETWORK_ACLS
   ORDER BY HOST;
   ```

1. 使用 `UTL_HTTP` 套件授予資料庫使用者許可。

   下列 PL/SQL 程式授予 `UTL_HTTP` 存取權給使用者 *my-user*。

   ```
   BEGIN 
     rdsadmin.rdsadmin_util.grant_sys_object('UTL_HTTP', UPPER('my-user')); 
     END;
   /
   ```

1. 確認相關的存取控制清單存在。

   ```
   SET LINESIZE 150
   COLUMN ACL FORMAT A50
   COLUMN PRINCIPAL FORMAT A20
   COLUMN PRIVILEGE FORMAT A10
   
   SELECT ACL, PRINCIPAL, PRIVILEGE, IS_GRANT,
          TO_CHAR(START_DATE, 'DD-MON-YYYY') AS START_DATE,
          TO_CHAR(END_DATE, 'DD-MON-YYYY') AS END_DATE
     FROM DBA_NETWORK_ACL_PRIVILEGES
   ORDER BY ACL, PRINCIPAL, PRIVILEGE;
   ```

1. 授予資料庫使用者許可，允許使用憑證進行用戶端身分驗證，並授予 Oracle 錢包進行連線的許可。
**注意**  
如果您不透過用戶端憑證進行身分驗證，可略過此步驟。

   ```
   DECLARE
     l_wallet_path all_directories.directory_path%type;
   BEGIN
     SELECT DIRECTORY_PATH 
       INTO l_wallet_path 
       FROM ALL_DIRECTORIES
      WHERE UPPER(DIRECTORY_NAME)='WALLET_DIR';
     DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE(
       wallet_path => 'file:/' || l_wallet_path,
       ace         =>  xs$ace_type(privilege_list => xs$name_list('use_client_certificates'),
                                   principal_name => 'my-user',
                                   principal_type => xs_acl.ptype_db));
   END;
   /
   ```

## 步驟 6：測試從資料庫執行個體連至網站的連線
<a name="test_utl_http"></a>

在此步驟中，會對資料庫使用者進行設定，允許該使用者使用 `UTL_HTTP`、您上傳的 Oracle 錢包和用戶端憑證連線至您的網站。

**設定從 RDS for Oracle 資料庫執行個體存取網站的權限**

1. 以具有 `UTL_HTTP` 許可的資料庫使用者身分登入 RDS on Oracle 資料庫執行個體。

1. 確認連至目標網站的連線可以解析主機地址。

   下列範例會從 *secret.encrypted-website.com* 取得主機地址。

   ```
   SELECT UTL_INADDR.GET_HOST_ADDRESS(host => 'secret.encrypted-website.com')
     FROM DUAL;
   ```

1. 測試失敗的連線。

   以下查詢失敗，因為 `UTL_HTTP` 需要含有憑證的 Oracle 錢包的所在位置。

   ```
   SELECT UTL_HTTP.REQUEST('secret.encrypted-website.com') FROM DUAL;
   ```

1. 使用 `UTL_HTTP.SET_WALLET` 並從 `DUAL` 中選取來測試網站存取情況。

   ```
   DECLARE
     l_wallet_path all_directories.directory_path%type;
   BEGIN
     SELECT DIRECTORY_PATH
       INTO l_wallet_path 
       FROM ALL_DIRECTORIES
      WHERE UPPER(DIRECTORY_NAME)='WALLET_DIR';
     UTL_HTTP.SET_WALLET('file:/' || l_wallet_path);
   END;
   /
   
   SELECT UTL_HTTP.REQUEST('secret.encrypted-website.com') FROM DUAL;
   ```

1. (選用) 將查詢儲存在變數中並使用 `EXECUTE IMMEDIATE` 來測試網站存取情況。

   ```
   DECLARE
     l_wallet_path all_directories.directory_path%type;
     v_webpage_sql VARCHAR2(1000);
     v_results     VARCHAR2(32767);
   BEGIN
     SELECT DIRECTORY_PATH
       INTO l_wallet_path 
       FROM ALL_DIRECTORIES
      WHERE UPPER(DIRECTORY_NAME)='WALLET_DIR';
     v_webpage_sql := 'SELECT UTL_HTTP.REQUEST(''secret.encrypted-website.com'', '''', ''file:/' ||l_wallet_path||''') FROM DUAL';
     DBMS_OUTPUT.PUT_LINE(v_webpage_sql);
     EXECUTE IMMEDIATE v_webpage_sql INTO v_results;
     DBMS_OUTPUT.PUT_LINE(v_results);
   END;
   /
   ```

1. (選用) 尋找 Oracle 錢包目錄的檔案系統位置。

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'WALLET_DIR'));
   ```

   使用上一個命令的輸出執行 HTTP 請求。例如，如果目錄為 *rdsdbdata/userdirs/01*，請執行下列查詢。

   ```
   SELECT UTL_HTTP.REQUEST('https://secret.encrypted-website.com/', '', 'file://rdsdbdata/userdirs/01') 
   FROM   DUAL;
   ```

# 在 RDS for Oracle 中使用 CDB
<a name="oracle-multitenant"></a>

在 Oracle 多租戶架構中，容器資料庫 (CDB) 可包含客戶建立的插入式資料庫 (PDB)。如需 CDB 的詳細資訊，請參閱 Oracle 資料庫文件中的[多租戶架構簡介](https://docs.oracle.com/en/database/oracle/oracle-database/19/multi/introduction-to-the-multitenant-architecture.html#GUID-267F7D12-D33F-4AC9-AA45-E9CD671B6F22)。

**Topics**
+ [RDS for Oracle CDB 概觀](Oracle.Concepts.CDBs.md)
+ [設定 RDS for Oracle CDB](oracle-cdb.configuring.md)
+ [備份與還原 CDB](Oracle.Concepts.single-tenant.snapshots.md)
+ [將 RDS for Oracle 非 CDB 轉換為 CDB](oracle-cdb-converting.md)
+ [將單一租戶組態轉換為多租戶](oracle-single-tenant-converting.md)
+ [將 RDS for Oracle 租戶資料庫新增至 CDB 執行個體](oracle-cdb-configuring.adding.pdb.md)
+ [修改 RDS for Oracle 租戶資料庫](oracle-cdb-configuring.modifying.pdb.md)
+ [從 CDB 刪除 RDS for Oracle 租戶資料庫](oracle-cdb-configuring.deleting.pdb.md)
+ [檢視租戶資料庫詳細資訊](oracle-cdb-configuring.describing.pdb.md)
+ [升級 CDB](Oracle.Concepts.single-tenant.upgrades.md)

# RDS for Oracle CDB 概觀
<a name="Oracle.Concepts.CDBs"></a>

在執行 Oracle 資料庫 19c 或更新版本時，您可以建立 RDS for Oracle 資料庫執行個體作為容器資料庫 (CDB)。從 Oracle 資料庫 21c 開始，所有資料庫皆為 CDB。CDB 不同於非 CDB，因為它可以包含插入式資料庫 (PDB)，在 RDS for Oracle 中稱為租用戶資料庫。PDB 是結構描述和物件的可攜性集合，會對應用程式顯示為單獨的資料庫。

您可以在建立 CDB 執行個體時建立初始租用戶資料庫 (PDB)。在 RDS for Oracle 中，用戶端應用程式的互動對象是 PDB 而非 CDB。使用 PDB 的經驗與使用非 CDB 的經驗大致相同。

**Topics**
+ [CDB 架構的多租戶組態](#multi-tenant-configuration)
+ [CDB 架構的單一租戶組態](#Oracle.Concepts.single-tenant)
+ [CDB 的建立和轉換選項](#oracle-cdb-creation-conversion)
+ [CDB 中的使用者帳戶和權限](#Oracle.Concepts.single-tenant.users)
+ [CDB 中的參數群組系列](#Oracle.Concepts.single-tenant.parameters)
+ [RDS for Oracle CDB 的限制](#Oracle.Concepts.single-tenant-limitations)

## CDB 架構的多租戶組態
<a name="multi-tenant-configuration"></a>

RDS for Oracle 支援 Oracle 多租用戶架構 (也稱為 *CDB 架構*) 的多租戶組態。在此組態中，RDS for Oracle CDB 執行個體可包含 1–30 個租用戶資料庫，具體取決於資料庫版本和任何必要的選項授權。在 Oracle Database 中，租用戶資料庫是 PDB。您的資料庫執行個體必須使用 Oracle 資料庫版本 19.0.0.0.ru-2022-01.rur-2022.r1 或更新版本。

**注意**  
Amazon RDS 組態稱為 "multi-tenant" 而不是 "multitenant"，因為它是 Amazon RDS 的功能，而不只是 Oracle 資料庫引擎。同樣地，RDS 的「tenant」一詞是指 RDS 組態中的任何租用戶，而不只是 Oracle PDB。在 RDS 文件中，無連字號的 "Oracle multitenant" 一詞專指與內部部署和 RDS 部署相容的 Oracle 資料庫 CDB 架構。

您可以進行下列設定：
+ 租戶資料庫名稱
+ 租戶資料庫主要使用者名稱
+ 租用戶資料庫主要密碼 (選擇性地與 Secrets Manager 整合)
+ 租戶資料庫字元集
+ 租戶資料庫國家字元集

租戶資料庫字元集可以不同於 CDB 字元集。同樣適用於國家字元集。在建立初始租戶資料庫之後，您可以使用 RDS API 建立、修改或刪除租戶資料庫。CDB 名稱預設為 `RDSCDB` 且無法變更。如需詳細資訊，請參閱[資料庫執行個體的設定](USER_CreateDBInstance.Settings.md)及[修改 RDS for Oracle 租戶資料庫](oracle-cdb-configuring.modifying.pdb.md)。

## CDB 架構的單一租戶組態
<a name="Oracle.Concepts.single-tenant"></a>

RDS for Oracle 支援 Oracle 多租戶架構的舊版組態，稱為單一租戶組態。在此組態中，RDS for CDB 執行個體只能包含一個租戶 (PDB)。您稍後無法建立更多的 PDB。

## CDB 的建立和轉換選項
<a name="oracle-cdb-creation-conversion"></a>

Oracle Database 21c 只支援 CDB，但 Oracle Database 19c 同時支援 CDB 和非 CDB。所有 RDS for Oracle CDB 執行個體都支援多租戶和單一租戶組態。

### Oracle 資料庫架構的建立、轉換和升級選項
<a name="oracle-cdb-creation-conversion.architecture"></a>

下表顯示用於建立和升級 RDS for Oracle 資料庫的不同架構選項。


| 發行版本 | 資料庫建立選項 | 架構轉換選項 | 主要版本升級目標 | 
| --- | --- | --- | --- | 
| Oracle Database 21c | 僅限 CDB 架構 | N/A | N/A | 
| Oracle 資料庫 19c | CDB 或非 CDB 架構 | 非 CDB 至 CDB 架構 (2021 年 4 月 RU 或更新版本) | Oracle Database 21c CDB | 

如前表所示，您不能在新的主要資料庫版本中直接將非 CDB 升級為 CDB。但您可將 Oracle 資料庫 19c 非 CDB 轉換為 Oracle 資料庫 19c CDB，然後將 Oracle 資料庫 19c CDB 升級為 Oracle 資料庫 21c CDB。如需詳細資訊，請參閱[將 RDS for Oracle 非 CDB 轉換為 CDB](oracle-cdb-converting.md)。

### CDB 架構組態的轉換選項
<a name="oracle-cdb-creation-conversion.configuration"></a>

下表顯示用於轉換 RDS for Oracle 資料庫執行個體之架構組態的不同選項。


| 目前架構和組態 | 轉換為 CDB 架構的單一租戶組態 | 轉換為 CDB 架構的多租戶組態 | 轉換為非 CDB 架構 | 
| --- | --- | --- | --- | 
| 非 CDB | 支援 | 支援\$1 | N/A | 
| 使用單一租戶組態的 CDB | N/A | 支援 | 不支援 | 
| 使用多租戶組態的 CDB | 不支援 | N/A | 不支援 | 

您無法在單一操作中將非 CDB 轉換為多租戶組態。當您將非 CDB 轉換為 CDB 時，您的 CDB 會處於單一租戶組態中。然後，您可以在個別的操作中將單一租戶轉換為多租戶組態。

## CDB 中的使用者帳戶和權限
<a name="Oracle.Concepts.single-tenant.users"></a>

在 Oracle 多租用戶架構中，所有使用者帳戶都是一般使用者或本機使用者。CDB 一般使用者為資料庫使用者，其單一身分和密碼在根 CDB 及所有現有和未來的 PDB 中皆為已知狀態。相反地，本機使用者只存在於單一 PDB。

RDS 主要使用者是 PDB 中的本機使用者帳戶，您可在建立資料庫執行個體時命名該帳戶。若您建立新的使用者帳戶，這些使用者也會是位於 PDB 中的本機使用者。您無法使用任何使用者帳戶來建立新的 PDB 或修改現有 PDB 的狀態。

`rdsadmin` 使用者是一般使用者帳戶。您可以執行此帳戶中既有的 RDS for Oracle 套件，但無法以 `rdsadmin` 身分登入。如需詳細資訊，請參閱 Oracle 文件中的[關於一般使用者和本機使用者](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/managing-security-for-oracle-database-users.html#GUID-BBBD9904-F2F3-442B-9AFC-8ACDD9A588D8)。

對於多租戶和單一租戶組態的主要使用者，您可以使用自我管理或管理的登入資料 AWS Secrets Manager。在單一租用戶組態中，您可以對受管主要密碼使用執行個體層級的 CLI 命令，例如 `create-db-instance`。在多租戶組態中，您可以對受管主要密碼使用租用戶資料庫命令，例如 `create-tenant-database`。如需 Secrets Manager 整合的詳細資訊，請參閱 [使用 Secrets Manager 管理 RDS for Oracle 租用戶資料庫的主要使用者密碼](rds-secrets-manager.md#rds-secrets-manager-tenant)。

## CDB 中的參數群組系列
<a name="Oracle.Concepts.single-tenant.parameters"></a>

CDB 有自己的參數群組系列和預設參數值。CDB 參數群組系列如下所示：
+ oracle-ee-cdb-21
+ oracle-se2-cdb-21
+ oracle-ee-cdb-19
+ oracle-se2-cdb-19

## RDS for Oracle CDB 的限制
<a name="Oracle.Concepts.single-tenant-limitations"></a>

RDS for Oracle 支援可在內部部署 CDB 中使用的功能子集。

### CDB 限制
<a name="oracle-cdb-limitations.cdb"></a>

下列限制適用於 RDS for Oracle 的 CDB 層級
+ 您無法連線到 CDB。您一律會連線到租戶資料庫 (PDB)，而不是 CDB。指定 PDB 的端點，和操作非 CDB 一樣。唯一的差異在於您將資料庫名稱指定為 *pdb\$1name*，*pdb\$1name* 即是您為 PDB 選擇的名稱。
+ 您無法將多租戶組態中的 CDB 轉換為單一租戶轉換中的 CDB。轉換為多租戶組態是單向且是不可復原的。
+ 如果您的資料庫執行個體使用低於 19.0.0.0.ru-2022-01.rur-2022.r1 的 Oracle 資料庫版本，您無法啟用或轉換為多租戶組態。
+ 您無法在 CDB 中使用資料庫活動串流。
+ 您無法從 `CDB$ROOT` 內部啟用稽核。您必須在每個 PDB 中個別啟用稽核。

### 租戶資料庫 (PDB) 限制
<a name="oracle-cdb-limitations.pdb"></a>

下列限制適用於 RDS for Oracle 多租戶組態中的租戶資料庫：
+ 您無法將租戶資料庫操作延遲至維護時段。所有變更都會立即發生。
+ 您無法將租戶資料庫新增至使用單一租戶組態的 CDB。
+ 您無法在單一操作中新增或修改多個租戶資料庫。您一次只能新增或修改一個租戶資料庫。
+ 您無法修改要命名為 `CDB$ROOT` 或 `PDB$SEED` 的租戶資料庫。
+ 如果租戶資料庫是 CDB 中的唯一租戶，則您無法刪除該資料庫。
+ 並非所有資料庫執行個體類別類型都有足夠的資源，來支援 RDS for Oracle CDB 執行個體中的多個 PDB。增加的 PDB 計數會影響小型執行個體類別的效能和穩定性，並會增加大部分執行個體層級操作 (例如資料庫升級) 的時間。
+ 您不能使用 重新命名 PDB`rdsadmin.rdsadmin_util.rename_global_name`，您必須改用 `modify-tenant-database` API。
+ 您不能使用多個 AWS 帳戶 在相同的 PDBs。PDB 必須由與 PDB 託管所在資料庫執行個體相同的帳戶擁有。
+ CDB 中的所有 PDB 都會使用相同的端點和資料庫接聽程式。
+ PDB 層級不支援下列操作，但在 CDB 層級支援：
  + 備份與復原
  + 資料庫升級
  + 維護動作
+ PDB 層級不支援下列功能，但在 CDB 層級支援：
  + 選項群組 (選項安裝在 CDB 執行個體的所有 PDB 上)
  + 參數群組 (所有參數都衍生自與 CDB 執行個體相關聯的參數群組)
+ 在內部部署 CDB 架構中支援，但在 RDS for Oracle CDB 中不支援的 PDB 層級操作包括下列項目：
**注意**  
以下清單並非詳盡清單。
  + 應用程式 PDB
  + Proxy PDB
  + 啟動和停止 PDB
  + 拔除和插入 PDB

    要將資料移入或移出 CDB，請使用與非 CDB 相同的技術。如需遷移資料的詳細資訊，請參閱 [將資料匯入 Amazon RDS 上的 Oracle](Oracle.Procedural.Importing.md)。
  + 在 PDB 層級設定選項

    PDB 從 CDB 選項群組繼承選項設定。如需關於設定選項的詳細資訊，請參閱 [Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。如需最佳實務做法，請參閱「[使用資料庫參數群組](CHAP_BestPractices.md#CHAP_BestPractices.DBParameterGroup)」。
  + 在 PDB 中設定參數

    PDB 繼承了 CDB 的參數設定。如需關於設定選項的詳細資訊，請參閱 [將選項新增至 Oracle 資料庫執行個體](Appendix.Oracle.Options.md)。
  + 在同一 CDB 中為 PDB 設定不同的接聽程式
  + Oracle Flashback 功能

# 設定 RDS for Oracle CDB
<a name="oracle-cdb.configuring"></a>

設定 CDB 的方法類似於設定非 CDB。

**Topics**
+ [建立 RDS for Oracle 資料庫執行個體](#Oracle.Concepts.single-tenant.creation)
+ [在 RDS for Oracle CDB 中連線至 PDB](#Oracle.Concepts.connecting.pdb)

## 建立 RDS for Oracle 資料庫執行個體
<a name="Oracle.Concepts.single-tenant.creation"></a>

在 RDS for Oracle 中，建立 CDB 執行個體的方式與建立非 CDB 執行個體幾近相同。不同之處在於，建立資料庫執行個體時您選擇 Oracle 多租戶架構，而且也選擇架構組態：多租戶或單一租戶。如果您在多租戶組態中建立 CDB 時建立標籤，RDS 會將標籤傳播到初始租戶資料庫。若要建立 CDB，請使用 AWS 管理主控台 AWS CLI、 或 RDS API。

### 主控台
<a name="Oracle.Concepts.single-tenant.creation.console"></a>

**建立 CDB 執行個體**

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

1. 在 Amazon RDS 主控台的右上角，選擇您要在 AWS 區域 其中建立 CDB 執行個體的 。

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

1. 選擇 **Create database** (建立資料庫)。

1. 在 **Choose a database creation method (選擇資料庫建立方法)** 中，選取 **Standard Create (標準建立)**。

1. 在 **Engine options (引擎選項)** 中，選擇 **Oracle (Oracle)**。

1. 請為**資料庫管理類型**選擇 **Amazon RDS**。

1. 對於**架構設定**，選擇**Oracle 多租戶架構**。

1. 對於**架構組態**，請執行下列任一動作：
   + 選擇**多租戶組態**，然後繼續進行下一個步驟。
   + 選擇**單一租戶組態**，然後跳至步驟 11。

1. (多租戶組態) 對於**租戶資料庫設定**，請進行下列變更：
   + 對於**租戶資料庫名稱**，輸入初始 PDB 的名稱。PDB 名稱必須與 CDB 名稱 (預設為 `RDSCDB`) 不同。
   + 對於**租戶資料庫主要使用者名稱**，輸入 PDB 的主要使用者名稱。您不能使用租戶資料庫主要使用者名稱登入 CDB 本身。
   + 針對**憑證管理**，選擇下列其中一個憑證管理選項：
     + **在 中受管 AWS Secrets Manager**

       受管密碼用於初始租用戶資料庫，而非執行個體。在**選取加密金鑰中**，選擇 Secrets Manager 建立的 KMS 金鑰或您建立的金鑰。
**注意**  
我們建議將 AWS Secrets Manager 作為管理憑證的最安全技術。需支付額外費用。如需詳細資訊，請參閱[使用 Amazon RDS 和 進行密碼管理 AWS Secrets Manager](rds-secrets-manager.md)。
     + **自我管理**

       若要指定密碼，請清除**自動產生密碼**核取方塊 (如果已選取)。在**主要密碼**和**確認密碼**中輸入相同的密碼。
   + 對於**租用戶資料庫字元集**，選擇 PDB 的字元集。您可以選擇不同於 CDB 字元集的租戶資料庫字元集。

     預設的 PDB 字元集為 **AL32UTF8**。如果您選擇非預設的 PDB 字元集，CDB 的建立速度可能會變慢。
**注意**  
您無法在建立操作中指定多個租用戶資料庫。CDB 在建立後會有一個 PDB。您可以在個別操作中將 PDB 新增至現有的 CDB。

1. (單一租用戶組態) 根據 [資料庫執行個體的設定](USER_CreateDBInstance.Settings.md) 中列出的選項選擇您所需的設定。

   1. 在 **Settings (設定)** 區段，開啟 **Credential Settings (登入資料設定)**。然後執行下列動作：

     1. 在**主要使用者名稱**中，輸入 PDB 中本機使用者的名稱。您不能使用主要使用者名稱登入 CDB 根目錄。

     1. 針對**憑證管理**，選擇下列其中一個憑證管理選項：
        + **在 中受管 AWS Secrets Manager**

          在**選取加密金鑰中**，選擇 Secrets Manager 建立的 KMS 金鑰或您建立的金鑰。
**注意**  
我們建議將 AWS Secrets Manager 作為管理憑證的最安全技術。需支付額外費用。如需詳細資訊，請參閱[使用 Amazon RDS 和 進行密碼管理 AWS Secrets Manager](rds-secrets-manager.md)。
        + **自我管理**

          若要指定密碼，請清除**自動產生密碼**核取方塊 (如果已選取)。在**主要密碼**和**確認密碼**中輸入相同的密碼。

1. 在其餘區段，指定資料庫執行個體的設定。如需每個設定的相關資訊，請參閱[資料庫執行個體的設定](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.Settings.html)。

1. 選擇**建立資料庫**。

### AWS CLI
<a name="Oracle.Concepts.single-tenant.creation.cli"></a>

若要在多租戶組態中建立 CDB，請搭配下列參數使用 [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 命令：
+ `--db-instance-identifier`
+ `--db-instance-class`
+ `--engine { oracle-ee-cdb | oracle-se2-cdb }`
+ `--master-username`
+ `--master-user-password` 或 `--manage-master-user-password`
+ `--multi-tenant` (針對單一租戶組態，請不要指定 `multi-tenant` 或指定 `--no-multi-tenant`)
+ `--allocated-storage`
+ `--backup-retention-period`

如需每項設定的相關資訊，請參閱 [資料庫執行個體的設定](USER_CreateDBInstance.Settings.md)。

下列範例會在多租戶組態中建立一個名為 *my-cdb-inst* 的 RDS for Oracle 資料庫執行個體。如果您指定 `--no-multi-tenant` 或未指定 `--multi-tenant`，預設 CDB 組態為單一租戶。引擎是 `oracle-ee-cdb`：指定 `oracle-ee` 和 `--multi-tenant` 的命令失敗，因為發生錯誤。初始租戶資料庫命名為 *mypdb*。

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

```
 1. aws rds create-db-instance \
 2.     --engine oracle-ee-cdb \
 3.     --db-instance-identifier my-cdb-inst \
 4.     --multi-tenant \
 5.     --db-name mypdb \
 6.     --allocated-storage 250 \
 7.     --db-instance-class db.t3.large \
 8.     --master-username pdb_admin \
 9.     --manage-master-user-password \
10.     --backup-retention-period 3
```
在 Windows 中：  

```
 1. aws rds create-db-instance ^
 2.     --engine oracle-ee-cdb ^
 3.     --db-instance-identifier my-cdb-inst ^
 4.     --multi-tenant ^
 5.     --db-name mypdb ^
 6.     --allocated-storage 250 ^
 7.     --db-instance-class db.t3.large ^
 8.     --master-username pdb_admin ^
 9.     --manage-master-user-password \ ^
10.     --backup-retention-period 3
```
指定此處所顯示提示以外的密碼，作為安全最佳實務。
此命令會產生類似下列的輸出。資料庫名稱、字元集、國家字元集、主要使用者和主要使用者秘密不會包含在輸出中。您可以使用 CLI 命令 `describe-tenant-databases` 來檢視此資訊。  

```
 1. {
 2.     "DBInstance": {
 3.         "DBInstanceIdentifier": "my-cdb-inst",
 4.         "DBInstanceClass": "db.t3.large",
 5.         "MultiTenant": true,
 6.         "Engine": "oracle-ee-cdb",
 7.         "DBResourceId": "db-ABCDEFGJIJKLMNOPQRSTUVWXYZ",
 8.         "DBInstanceStatus": "creating",
 9.         "AllocatedStorage": 250,
10.         "PreferredBackupWindow": "04:59-05:29",
11.         "BackupRetentionPeriod": 3,
12.         "DBSecurityGroups": [],
13.         "VpcSecurityGroups": [
14.             {
15.                 "VpcSecurityGroupId": "sg-0a1bcd2e",
16.                 "Status": "active"
17.             }
18.         ],
19.         "DBParameterGroups": [
20.             {
21.                 "DBParameterGroupName": "default.oracle-ee-cdb-19",
22.                 "ParameterApplyStatus": "in-sync"
23.             }
24.         ],
25.         "DBSubnetGroup": {
26.             "DBSubnetGroupName": "default",
27.             "DBSubnetGroupDescription": "default",
28.             "VpcId": "vpc-1234567a",
29.             "SubnetGroupStatus": "Complete",
30.             ...
```

### RDS API
<a name="Oracle.Concepts.single-tenant.creation.api"></a>

若要使用 Amazon RDS API 來建立資料庫執行個體，請呼叫 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) 操作。

如需每項設定的相關資訊，請參閱 [資料庫執行個體的設定](USER_CreateDBInstance.Settings.md)。

## 在 RDS for Oracle CDB 中連線至 PDB
<a name="Oracle.Concepts.connecting.pdb"></a>

您可以使用像 SQL\$1Plus 之類的公用程式連線至 PDB。若要下載包含獨立版 SQL\$1Plus 的 Oracle 即時用戶端，請參閱 [Oracle 即時用戶端下載](https://www.oracle.com/database/technologies/instant-client/downloads.html)。

您需要下列資訊才能將 SQL\$1Plus 連線至 PDB：
+ PDB 名稱
+ 資料庫使用者名稱和密碼
+ 資料庫執行個體的端點
+ 連接埠號碼

如需了解如何尋找上述資訊，請參閱 [尋找您的 RDS for Oracle 資料庫執行個體的端點](USER_Endpoint.md)。

**Example 使用 SQL\$1Plus 連線至 PDB 的方法如下**  
在下列範例中，將 *master\$1user\$1name* 替換為您的主要使用者。同時，將 endpoint (端點) 替換為您的資料庫執行個體，然後包含連接埠號碼和 Oracle SID。SID 值是您在建立資料庫執行個體時指定的 PDB 名稱，而非資料庫執行個體識別碼。  
針對 Linux、macOS 或 Unix：  

```
1. sqlplus 'master_user_name@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=endpoint)(PORT=port))(CONNECT_DATA=(SID=pdb_name)))'
```
在 Windows 中：  

```
1. sqlplus master_user_name@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=endpoint)(PORT=port))(CONNECT_DATA=(SID=pdb_name)))
```
您應該會看到類似下列的輸出。  

```
SQL*Plus: Release 19.0.0.0.0 Production on Mon Aug 21 09:42:20 2021
```
輸入使用者的密碼之後，隨即會出現 SQL 提示。  

```
SQL>
```

**注意**  
簡短的格式連接字串 (Easy connect 或 EZCONNECT)，例如 `sqlplus username/password@LONGER-THAN-63-CHARS-RDS-ENDPOINT-HERE:1521/database-identifier`，可能遇到最大字元限制，因此不應用來連接。

# 備份與還原 CDB
<a name="Oracle.Concepts.single-tenant.snapshots"></a>

您可以使用 RDS 資料庫快照或 Recovery Manager (RMAN) 來備份和還原 CDB。

## 使用 CDB 快照備份和還原 CDB
<a name="br-cdb.db-snapshots"></a>

資料庫快照在 CDB 和非 CDB 架構中的運作方式類似。主要差異如下所示：
+ 還原 CDB 的資料庫快照時，您無法重新命名 CDB。CDB 命名為 `RDSCDB` 且無法變更。
+ 還原 CDB 的資料庫快照時，您無法重新命名 PDB。您可以使用 [modify-tenant-database](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyTenantDatabase.html) 命令來修改 PDB 名稱。
+ 若要在快照中尋找租戶資料庫，請使用 CLI 命令 [describe-db-snapshot-tenant-databases](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSnapshotTenantDatabases.html)。
+ 在使用多租戶架構組態的 CDB 快照中，您無法直接與其中的租戶資料庫互動。如果還原資料庫快照，則會還原其所有租戶資料庫。
+ RDS for Oracle 會隱含地將租戶資料庫上的標籤複製到資料庫快照中的租戶資料庫。當您還原租戶資料庫時，該標籤會出現在還原的資料庫中。
+ 如果您還原資料庫快照並使用 `--tags` 參數指定新標籤，則新標籤會覆寫所有現有的標籤。
+ 如果您對具有標籤的 CDB 執行個體建立資料庫快照，並指定 `--copy-tags-to-snapshot`，則 RDS for Oracle 會將這些標籤從租戶資料庫複製到快照中的租戶資料庫。

如需詳細資訊，請參閱[Oracle 資料庫考量事項](USER_RestoreFromSnapshot.md#USER_RestoreFromSnapshot.Oracle)。

## 使用 RMAN 備份和還原 CDB
<a name="br-cdb.rman"></a>

若要了解如何使用 RMAN 備份和還原 CDB 或個別租戶資料庫，請參閱 [執行 Oracle 資料庫執行個體的一般 RMAN 任務](Appendix.Oracle.CommonDBATasks.RMAN.md)。

# 將 RDS for Oracle 非 CDB 轉換為 CDB
<a name="oracle-cdb-converting"></a>

您可以使用 `modify-db-instance` 命令，將 Oracle 資料庫的架構從非 CDB 架構變更為 Oracle 多租用戶架構 (也稱為 *CDB 架構*)。多數情況下，此技術的效果優於建立新的 CDB 並匯入資料。轉換操作會產生停機時間。

升級資料庫引擎版本時，您無法在相同的操作中變更資料庫架構。因此，若要將 Oracle 資料庫 19c 非 CDB 升級為 Oracle 資料庫 21c CDB，您首先需要以一個步驟將非 CDB 轉換為 CDB，然後以個別步驟將 19c CDB 升級至 21c CDB。

非 CDB 轉換操作需求如下：
+ 您必須為資料庫引擎類型指定 `oracle-ee-cdb` 或 `oracle-se2-cdb`。只有這些值才受支援。
+ 您的資料庫引擎必須使用具有 2021 年 4 月或更晚版本更新 (RU) 的 Oracle Database 19c。

此操作具有下列限制：
+ 您無法將 CDB 轉換為非 CDB。您無法將非 CDB 轉換為 CDB。
+ 您無法在單一 `modify-db-instance` 呼叫中將非 CDB 轉換為多租戶組態。在您將非 CDB 轉換為 CDB 之後，您的 CDB 會處於單一租戶組態中。若要將單一租戶組態轉換為多租戶組態，請再次執行 `modify-db-instance`。如需詳細資訊，請參閱 [將單一租戶組態轉換為多租戶](oracle-single-tenant-converting.md)。
+ 您無法轉換已啟用 Oracle Data Guard 的主要或複本資料庫。若要轉換具有僅供讀取複本的非 CDB，請先刪除所有僅供讀取複本。
+ 您不能升級資料庫引擎版本，並在相同操作中將非 CDB 轉換為 CDB。

轉換非 CDB 之前，請考量下列事項：
+ 對於選項和參數群組的考量與升級資料庫引擎的考量相同。如需詳細資訊，請參閱 [Oracle Database 升級考量](USER_UpgradeDBInstance.Oracle.OGPG.md)。
+ 您可以在單一操作中，將使用受管主要密碼的現有非 CDB 執行個體轉換為單一租用戶執行個體。單一租用戶執行個體會繼承受管密碼。
+ 如果您的資料庫執行個體已安裝 `OEMAGENT` 選項，最佳實務是先移除此選項再轉換非 CDB。將非 CDB 轉換為 CDB 之後，再重新安裝該選項。如需詳細資訊，請參閱 [適用於 Enterprise Manager Cloud Control 的 Oracle Management Agent](Oracle.Options.OEMAgent.md)。
+ 在轉換過程中，RDS 會將線上重做日誌大小重設為預設的 128M。

## 主控台
<a name="oracle-cdb-converting.console"></a>

**將非 CDB 轉換為 CDB 的方法如下**

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

1. 在 Amazon RDS 主控台的右上角，選擇資料庫執行個體所在的 AWS 區域。

1. 在導覽窗格中選擇**資料庫**，然後選擇要將其轉換為 CDB 執行個體的非 CDB 執行個體。

1. 選擇 **Modify** (修改)。

1. 對於**架構設定**，選取 **Oracle 多租戶架構**。轉換後，您的 CDB 將處於單一租戶組態中。

1. (選用)對於**資料庫參數群組**，請為 CDB 執行個體選擇新的參數群組。在轉換資料庫執行個體時，也需要考慮與升級資料庫執行個體時相同的參數群組。如需詳細資訊，請參閱 [參數群組考量](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.PG)。

1. (選用) 在 **目標選項群組** 中，為 CDB 執行個體選擇新的選項群組。在轉換資料庫執行個體時，也需要考慮與升級資料庫執行個體時相同的選項群組。如需詳細資訊，請參閱 [選項群組考量](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.OG)。

1. (選用) 針對**憑證管理**，選擇**管理者為 AWS Secrets Manager** 或**自我管理**。如需詳細資訊，請參閱 [使用 Secrets Manager 管理資料庫執行個體的主要使用者密碼](rds-secrets-manager.md#rds-secrets-manager-db-instance)。

1. 當所有變更都如您所願時，請選擇 **Continue (繼續)** 並查看修改摘要。

1. (選用) 選擇 **Apply immediately (立即套用)** 以立即套用變更。在某些情況下，選擇此選項會導致停機。如需詳細資訊，請參閱 [使用排程修改設定](USER_ModifyInstance.ApplyImmediately.md)。

1. 在確認頁面上，檢閱您的變更。如果都正確，請選擇**修改資料庫執行個體**。

   或者，選擇 **Back (上一步)** 以編輯變更，或是選擇 **Cancel (取消)** 以取消變更。

## AWS CLI
<a name="oracle-cdb-converting.cli"></a>

若要在單一租戶組態中將資料庫執行個體上的非 CDB 轉換為 CDB，請在 AWS CLI 命令 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 中將 `--engine` 設定為 `oracle-ee-cdb` 或 `oracle-se2-cdb`。如需詳細資訊，請參閱 [資料庫執行個體的設定](USER_ModifyInstance.Settings.md)。

下列範例轉換了名為 *my-non-cdb* 的資料庫執行個體，並指定自訂選項群組和參數群組。命令也會使用 Secrets Manager 啟用密碼管理。

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

```
aws rds modify-db-instance \
    --db-instance-identifier my-non-cdb \
    --engine oracle-ee-cdb \
    --option-group-name custom-option-group \
    --db-parameter-group-name custom-parameter-group \
    --manage-master-user-password
```
針對 Windows：  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-non-cdb ^
    --engine oracle-ee-cdb ^
    --option-group-name custom-option-group ^
    --db-parameter-group-name custom-parameter-group ^
    --manage-master-user-password
```

## RDS API
<a name="oracle-cdb-converting.api"></a>

若要將非 CDB 轉換為 CDB，請在 RDS API 操作 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 中指定 `Engine`。

# 將單一租戶組態轉換為多租戶
<a name="oracle-single-tenant-converting"></a>

您可以將 RDS for Oracle CDB 的架構從單一租戶組態修改為多租戶組態。轉換前後，您的 CDB 會包含單一租戶資料庫 (PDB)。資料庫執行個體的標籤會傳播到轉換期間建立的初始租用戶資料庫。

開始之前，請確定您的 IAM 政策具有建立租用戶資料庫的許可。在轉換期間，RDS for Oracle 會將下列中繼資料遷移至新的租戶資料庫：
+ 主要使用者名稱
+ 受管主要密碼 (如果來源 CDB 與 Secrets Manager 整合)
+ 資料庫名稱
+ 字元集
+ 國家字元集

轉換前，您可以使用 `describe-db-instances` 命令檢視上述資訊。轉換後，您可以使用 `describe-tenant-database` 命令來檢視資訊。

從單一租用戶轉換至多租用戶的作業有下列限制：
+ 在轉換至多租用戶組態後，後續無法轉換回單一租用戶組態。轉換是不可復原的動作。
+ 您無法轉換已啟用 Oracle Data Guard 的主要或複本資料庫。
+ 您無法升級資料庫引擎版本，也無法在相同操作中轉換為多租戶組態。
+ 您無法在轉換期間啟用或停用受管主要使用者密碼。

## 主控台
<a name="oracle-cdb.configuring.converting.console"></a>

**將使用單一租戶組態的 CDB 轉換為多租戶組態**

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

1. 在 Amazon RDS 主控台的右上角，選擇資料庫執行個體所在的  AWS 區域 。

1. 在導覽窗格中選擇**資料庫**，然後選擇要將其轉換為 CDB 執行個體的非 CDB 執行個體。

1. 選擇 **Modify** (修改)。

1. 對於**架構設定**，選取 **Oracle 多租戶架構**。

1. 對於**架構組態**，選取**多租戶組態**。

1. (選用)對於**資料庫參數群組**，請為 CDB 執行個體選擇新的參數群組。在轉換資料庫執行個體時，也需要考慮與升級資料庫執行個體時相同的參數群組。

1. (選用) 在 **目標選項群組** 中，為 CDB 執行個體選擇新的選項群組。在轉換資料庫執行個體時，也需要考慮與升級資料庫執行個體時相同的選項群組。

1. 當所有變更都如您所願時，請選擇 **Continue (繼續)** 並查看修改摘要。

1. 選擇 **Apply immediately** (立即套用)。當您切換到多租戶組態時，需要此選項。請注意，此選項會在某些情況下導致停機。

1. 在確認頁面上，檢閱您的變更。如果都正確，請選擇**修改資料庫執行個體**。

   或者，選擇 **Back (上一步)** 以編輯變更，或是選擇 **Cancel (取消)** 以取消變更。

## AWS CLI
<a name="oracle-cdb.configuring.converting.cli"></a>

若要使用單一租用戶組態將 CDB 轉換為多租用戶組態，請在 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) AWS CLI 命令`--multi-tenant`中指定 。

下列範例會將名為 `my-st-cdb` 的資料庫執行個體從單一租戶組態轉換為多租戶組態。`--apply-immediately` 選項為必要項目。

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

```
aws rds modify-db-instance --region us-east-1\
    --db-instance-identifier my-st-cdb \
    --multi-tenant \
    --apply-immediately
```
在 Windows 中：  

```
aws rds modify-db-instance --region us-east-1 ^
    --db-instance-identifier my-st-cdb ^
    --multi-tenant ^
    --apply-immediately
```
輸出類似如下所示。  

```
{
    "DBInstance": {
        "DBInstanceIdentifier": "my-st-cdb",
        "DBInstanceClass": "db.r5.large",
        "MultiTenant": false,
        "Engine": "oracle-ee-cdb",
        "DBResourceId": "db-AB1CDE2FGHIJK34LMNOPRLXTXU",
        "DBInstanceStatus": "modifying",
        "MasterUsername": "admin",
        "DBName": "ORCL",
        ...
        "EngineVersion": "19.0.0.0.ru-2022-01.rur-2022-01.r1",
        "AutoMinorVersionUpgrade": true,
        "ReadReplicaDBInstanceIdentifiers": [],
        "LicenseModel": "bring-your-own-license",
        "OptionGroupMemberships": [
            {
                "OptionGroupName": "default:oracle-ee-cdb-19",
                "Status": "in-sync"
            }
        ],
        ...
        "PendingModifiedValues": {
            "MultiTenant": "true"
        }
    }
}
```

# 將 RDS for Oracle 租戶資料庫新增至 CDB 執行個體
<a name="oracle-cdb-configuring.adding.pdb"></a>

在 RDS for Oracle 多租戶組態中，租戶資料庫是 PDB。若要新增租戶資料庫，請確定符合下列先決條件：
+ 您的 CDB 已啟用多租戶組態。如需詳細資訊，請參閱[CDB 架構的多租戶組態](Oracle.Concepts.CDBs.md#multi-tenant-configuration)。
+ 您擁有建立租戶資料庫的必要 IAM 許可。

您可以使用 AWS 管理主控台 AWS CLI、 或 RDS API 新增租戶資料庫。您無法在單一操作中新增多個租戶資料庫：您必須一次新增一個租戶資料庫。如果 CDB 已啟用備份保留，則 Amazon RDS 會在新增租戶資料庫之前和之後備份資料庫執行個體。如果 CDB 具有僅供讀取複本，您只能將租戶資料庫新增至主要資料庫執行個體；Amazon RDS 會自動在複本上建立租戶資料庫。複寫運作狀態也會經過驗證，確保所有複本都可用，而且複寫延遲在建立租用戶前不到 5 分鐘。

## 主控台
<a name="oracle-cdb-configuring.adding.pdb.console"></a>

**將租戶資料庫新增至您的資料庫執行個體**

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

1. 在 Amazon RDS 主控台的右上角，選擇要在其中建立租戶資料庫的 AWS 區域 。

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

1. 選擇您要將租戶資料庫新增至其中的 CDB 執行個體。您的資料庫執行個體必須使用 CDB 架構的多租戶組態。

1. 選擇**動作**，然後選擇**新增租戶資料庫**。

1. 對於**租戶資料庫設定**，請執行下列動作：
   + 對於**租戶資料庫名稱**，輸入新 PDB 的名稱。
   + 對於**租戶資料庫主要使用者名稱**，為 PDB 輸入主要使用者的名稱。
   + 選擇下列其中一個憑證管理選項：
     + **在 中受管 AWS Secrets Manager**

       在**選取加密金鑰中**，選擇 Secrets Manager 建立的 KMS 金鑰或您建立的金鑰。
**注意**  
我們建議將 AWS Secrets Manager 作為管理憑證的最安全技術。需支付額外費用。使用僅供讀取複本的執行個體 AWS Secrets Manager 不支援 。如需詳細資訊，請參閱[使用 Amazon RDS 和 進行密碼管理 AWS Secrets Manager](rds-secrets-manager.md)。
     + **自我管理**

       若要指定密碼，請清除**自動產生密碼**核取方塊 (如果已選取)。在**主要密碼**和**確認密碼**中輸入相同的密碼。
     + 在**其他組態**底下，輸入您的 PDB 名稱做為**初始資料庫名稱**。您無法命名具有預設名稱 `RDSCDB` 的 CDB。
   + 對於**租用戶資料庫字元集**，選擇 PDB 的字元集。預設值為 **AL32UTF8**。您可以選擇不同於 CDB 字元集的 PDB 字元集。如果執行個體具有僅供讀取複本，則無法使用自訂字元集建立租用戶。如有需要，您可以在建立僅供讀取複本之前，使用自訂字元集建立租用戶。
   + 對於**租戶資料庫國家字元集**，選擇 PDB 的國家字元集。預設值為 **AL32UTF8**。國家字元集只會針對使用 `NCHAR` 資料類型 (`NCHAR`、`NVARCHAR2` 和 `NCLOB`) 的資料行指定編碼，而且不會影響資料庫中繼資料。

   如需上述設定的詳細資訊，請參閱 [資料庫執行個體的設定](USER_CreateDBInstance.Settings.md)。

1. 選擇**新增租戶**。

## AWS CLI
<a name="oracle-cdb-configuring.adding.pdb.cli"></a>

若要使用 將租戶資料庫新增至 CDB AWS CLI，請使用 命令 [create-tenant-database](https://docs.aws.amazon.com/cli/latest/reference/rds/create-tenant-database.html) 搭配下列必要參數：
+ `--db-instance-identifier`
+ `--tenant-db-name`
+ `--master-username`
+ `--master-user-password`

下列範例會在名為 *my-cdb-inst* 的 RDS for Oracle RDS 執行個體中建立名為 *mypdb2* 的租戶資料庫。PDB 字元集為 `UTF-16`。

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

```
1. aws rds create-tenant-database --region us-east-1 \
2.     --db-instance-identifier my-cdb-inst \
3.     --tenant-db-name mypdb2 \
4.     --master-username mypdb2-admin \
5.     --master-user-password mypdb2-pwd \
6.     --character-set-name UTF-16
```
在 Windows 中：  

```
1. aws rds create-tenant-database --region us-east-1 \
2.     --db-instance-identifier my-cdb-inst ^
3.     --tenant-db-name mypdb2 ^
4.     --master-username mypdb2-admin ^
5.     --master-user-password mypdb2-pwd ^
6.     --character-set-name UTF-16
```
輸出結果類似如下。  

```
...}
    "TenantDatabase" :
         {
            "DbiResourceId" : "db-abc123",
            "TenantDatabaseResourceId" : "tdb-bac567",
            "TenantDatabaseArn" : "arn:aws:rds:us-east-1:123456789012:db:my-cdb-inst:mypdb2",
            "DBInstanceIdentifier" : "my-cdb-inst",
            "TenantDBName" : "mypdb2",
            "Status" : "creating",
            "MasterUsername" : "mypdb2",
            "CharacterSetName" : "UTF-16",
            ...
        }
}...
```

# 修改 RDS for Oracle 租戶資料庫
<a name="oracle-cdb-configuring.modifying.pdb"></a>

您只能修改 CDB 中租戶資料庫的 PDB 名稱和主要使用者密碼。請注意下列需求和限制：
+ 若要修改資料庫執行個體中租戶資料庫的設定，租戶資料庫必須存在。
+ 您無法在單一操作中修改多個租戶資料庫。您一次只能修改一個租戶資料庫。
+ 您無法將租戶資料庫的名稱變更為 `CDB$ROOT` 或 `PDB$SEED`。
+ 如果您的資料庫執行個體具有僅供讀取複本，您只能修改主要資料庫執行個體上的租用戶。複寫運作狀態也會經過驗證，確保複本可用且複寫延遲少於 5 分鐘，之後才會修改租用戶。

您可以使用 AWS 管理主控台、 AWS CLI或 RDS API 修改 PDBs。

## 主控台
<a name="oracle-cdb-configuring.modifying.pdb.console"></a>

**修改租戶資料庫的 PDB 名稱或主要密碼**

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

1. 在 Amazon RDS 主控台的右上角，選擇要在其中建立租戶資料庫的 AWS 區域 。

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

1. 選擇您要修改其資料庫名稱或主要使用者密碼的租戶資料庫。

1. 選擇 **Modify** (修改)。

1. 對於**租戶資料庫設定**，請執行下列任一動作：
   + 對於**租戶資料庫名稱**，輸入新 PDB 的新名稱。
   + 對於**租戶資料庫主要的密碼**，輸入新的密碼。

1. 選擇**修改租戶**。

## AWS CLI
<a name="oracle-cdb-configuring.modifying.pdb.cli"></a>

若要使用 修改租戶資料庫 AWS CLI，請使用下列參數呼叫 [modify-tenant-database](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-tenant-database.html) 命令：
+ `--db-instance-identifier` *數值*
+ `--tenant-db-name value`
+ `[--new-tenant-db-name value]`
+ `[--master-user-password value]`

下列範例會將租戶資料庫 `pdb1` 重新命名為資料庫執行個體 `my-cdb-inst` 上的 `pdb-hr`。

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

```
1. aws rds modify-tenant-database --region us-east-1 \
2.     --db-instance-identifier my-cdb-inst \
3.     --tenant-db-name pdb1 \
4.     --new-tenant-db-name pdb-hr
```
在 Windows 中：  

```
1. aws rds modify-tenant-database --region us-east-1 ^
2.     --db-instance-identifier my-cdb-inst ^
3.     --tenant-db-name pdb1 ^
4.     --new-tenant-db-name pdb-hr
```
此命令會產生類似下列的輸出。  

```
{
    "TenantDatabase" : {
        "DbiResourceId" : "db-abc123",
        "TenantDatabaseResourceId" : "tdb-bac567",
        "TenantDatabaseArn" : "arn:aws:rds:us-east-1:123456789012:db:my-cdb-inst:pdb1",
        "DBInstanceIdentifier" : "my-cdb-inst",
        "TenantDBName" : "pdb1",
        "Status" : "modifying",
        "MasterUsername" : "tenant-admin-user"
        "Port" : "6555",
        "CharacterSetName" : "UTF-16",
        "MaxAllocatedStorage" : "1000",
        "ParameterGroups": [
            {
                "ParameterGroupName": "pdb1-params",
                "ParameterApplyStatus": "in-sync"
            }
        ],
        "OptionGroupMemberships": [
            {
                "OptionGroupName": "pdb1-options",
                "Status": "in-sync"
            }
        ],
        "PendingModifiedValues": {
            "TenantDBName": "pdb-hr"
        }
    }
}
```

# 從 CDB 刪除 RDS for Oracle 租戶資料庫
<a name="oracle-cdb-configuring.deleting.pdb"></a>

您可以使用 AWS 管理主控台、 AWS CLI或 RDS API 刪除租戶資料庫 (PDB)。請考慮下列先決條件和限制：
+ 租戶資料庫和資料庫執行個體必須存在。
+ 若要成功刪除，必須存在下列其中一種情況：
  + 租戶資料庫和資料庫執行個體可用。
**注意**  
您可以建立最終快照，但只有在您發出了 `delete-tenant-database` 命令之前，租戶資料庫和資料庫執行個體處於可用狀態時才能這樣做。只有在資料庫執行個體具有僅供讀取複本時，才會在主要執行個體上擷取此快照。
  + 正在建立租戶資料庫。
  + 資料庫執行個體正在修改租戶資料庫。
  + 如果資料庫執行個體具有僅供讀取複本，則這些限制條件適用於所有複本。
+ 您無法在單一操作中刪除多個租戶資料庫。
+ 如果租戶資料庫是 CDB 中的唯一租戶，則您無法刪除該資料庫。
+ 您無法刪除僅供讀取複本上的租戶資料庫，您只能刪除主要資料庫執行個體上的租戶。複寫運作狀態也會經過驗證，確保複寫延遲少於 5 分鐘，才會刪除租用戶。

## 主控台
<a name="oracle-cdb-configuring.deleting.pdb.console"></a>

**刪除租戶資料庫**

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

1. 在導覽窗格中，選擇**資料庫**，然後選擇您要刪除的租戶資料庫。

1. 對於 **Actions** (動作)，請選擇 **Delete** (刪除)。

1. 若要為資料庫執行個體建立最終的資料庫快照，請選擇 **Create final snapshot? (是否建立最終快照？)**。

1. 如果您選擇建立最終快照，請輸入**最終快照名稱**。

1. 在方塊中輸入 **delete me**。

1. 選擇 **刪除**。

## AWS CLI
<a name="oracle-cdb-configuring.deleting.pdb.cli"></a>

若要使用 刪除租戶資料庫 AWS CLI，請使用下列參數呼叫 [delete-tenant-database](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-tenant-database.html) 命令：
+ `--db-instance-identifier value`
+ `--tenant-db-name value`
+ `[--skip-final-snapshot | --no-skip-final-snapshot]`
+ `[--final-snapshot-identifier value]`

下列範例會從名為 *my-cdb-inst* 的 CDB 中刪除名為 *pdb-test* 的租戶資料庫。依預設，此操作會建立最終快照。

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

```
1. aws rds delete-tenant-database --region us-east-1 \
2.     --db-instance-identifier my-cdb-inst \
3.     --tenant-db-name pdb-test \
4.     --final-snapshot-identifier final-snap-pdb-test
```
在 Windows 中：  

```
1. aws rds delete-tenant-database --region us-east-1 ^
2.     --db-instance-identifier my-cdb-inst ^
3.     --tenant-db-name pdb-test ^
4.     --final-snapshot-identifier final-snap-pdb-test
```
此命令會產生類似下列的輸出。  

```
{
    "TenantDatabase" : {
        "DbiResourceId" : "db-abc123",
        "TenantDatabaseResourceId" : "tdb-bac456",
        "TenantDatabaseArn" : "arn:aws:rds:us-east-1:123456789012:db:my-cdb-inst:pdb-test",
        "DBInstanceIdentifier" : "my-cdb-inst",
        "TenantDBName" : "pdb-test",
        "Status" : "deleting",
        "MasterUsername" : "pdb-test-admin"
        "Port" : "6555",
        "CharacterSetName" : "UTF-16",
        "MaxAllocatedStorage" : "1000",
        "ParameterGroups": [
            {
                "ParameterGroupName": "tenant-1-params",
                "ParameterApplyStatus": "in-sync"
            }
        ],
        "OptionGroupMemberships": [
            {
                "OptionGroupName": "tenant-1-options",
                "Status": "in-sync"
            }
        ]
    }
}
```

# 檢視租戶資料庫詳細資訊
<a name="oracle-cdb-configuring.describing.pdb"></a>

您可以採用與非 CDB 或 CDB 相同的方式，檢視租戶資料庫的詳細資料。

## 主控台
<a name="oracle-cdb-configuring.describing.pdb.console"></a>

**檢視租戶資訊庫的詳細資訊**

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

1. 在 Amazon RDS 主控台的右上角，選擇資料庫執行個體所在的  AWS 區域 。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。  
![\[檢視 CDB 的詳細資訊\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/cdb-list.png)

   在上圖中，唯一租戶資料庫 (PDB) 會顯示為資料庫執行個體的子項。

1. 選擇租戶資料庫的名稱。  
![\[檢視 PDB 的詳細資訊\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/pdb-details.png)

## AWS CLI
<a name="oracle-cdb-configuring.describing.pdb.cli"></a>

若要查看 PDBs的詳細資訊，請使用 [describe-tenant-databases](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-tenant-databases.html) AWS CLI 命令。

下列範例描述指定區域中的所有租戶資料庫。

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

```
1. aws rds describe-tenant-databases --region us-east-1
```
在 Windows 中：  

```
1. aws rds describe-tenant-databases --region us-east-1
```
此命令會產生類似下列的輸出。  

```
    "TenantDatabases" : [
         {
            "DBInstanceIdentifier" : "my-cdb-inst",
            "TenantDBName" : "pdb-test",
            "Status" : "available",
            "MasterUsername" : "pdb-test-admin",
            "DbiResourceId" : "db-abc123",
            "TenantDatabaseResourceId" : "tdb-bac456",
            "TenantDatabaseArn" : "arn:aws:rds:us-east-1:123456789012:db:my-cdb-inst:pdb-test",
            "CharacterSetName": "AL32UTF8",
            "NcharCharacterSetName": "AL16UTF16",
            "DeletionProtection": false,
            "PendingModifiedValues": {
                 "MasterUserPassword": "****"
            },
            "TagList": []
         },
         {

            "DBInstanceIdentifier" : "my-cdb-inst2",
            "TenantDBName" : "pdb-dev",
            "Status" : "modifying",
            "MasterUsername" : "masterrdsuser"
            "DbiResourceId" : "db-xyz789",
            "TenantDatabaseResourceId" : "tdb-ghp890",
            "TenantDatabaseArn" : "arn:aws:rds:us-east-1:123456789012:db:my-cdb-inst2:pdb-dev",
            "CharacterSetName": "AL32UTF8",
            "NcharCharacterSetName": "AL16UTF16",
            "DeletionProtection": false,
            "PendingModifiedValues": {
                 "MasterUserPassword": "****"
            },
            "TagList": []
         },
         ... other truncated data
```

下列範例描述指定區域中資料庫執行個體 `my-cdb-inst` 上的租戶資料庫。

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

```
1. aws rds describe-tenant-databases --region us-east-1 \
2.     --db-instance-identifier my-cdb-inst
```
在 Windows 中：  

```
1. aws rds describe-tenant-databases --region us-east-1 ^
2.     --db-instance-identifier my-cdb-inst
```
此命令會產生類似下列的輸出。  

```
{
    "TenantDatabase": {
        "TenantDatabaseCreateTime": "2023-10-19T23:55:30.046Z",
        "DBInstanceIdentifier": "my-cdb-inst",
        "TenantDBName": "pdb-hr",
        "Status": "creating",
        "MasterUsername": "tenant-admin-user",
        "DbiResourceId": "db-abc123",
        "TenantDatabaseResourceId": "tdb-bac567",
        "TenantDatabaseARN": "arn:aws:rds:us-west-2:579508833180:pdb-hr:tdb-abcdefghi1jklmno2p3qrst4uvw5xy6zabc7defghi8jklmn90op",
        "CharacterSetName": "AL32UTF8",
        "NcharCharacterSetName": "AL16UTF16",
        "DeletionProtection": false,
        "PendingModifiedValues": {
            "MasterUserPassword": "****"
        },
        "TagList": [
            {
                "Key": "TEST",
                "Value": "testValue"
            }
        ]
    }
}
```

下列範例描述美國東部 (維吉尼亞北部) 區域中資料庫執行個體 `my-cdb-inst` 上的租戶資料庫 `pdb1`。

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

```
1. aws rds describe-tenant-databases --region us-east-1 \
2. --db-instance-identifier my-cdb-inst \
3. --tenant-db-name pdb1
```
在 Windows 中：  

```
1. aws rds describe-tenant-databases --region us-east-1 ^
2. --db-instance-identifier my-cdb-inst ^
3. --tenant-db-name pdb1
```
此命令會產生類似下列的輸出。  

```
{
    "TenantDatabases" : [
        {
            "DbiResourceId" : "db-abc123",
            "TenantDatabaseResourceId" : "tdb-bac567",
            "TenantDatabaseArn" : "arn:aws:rds:us-east-1:123456789012:db:my-cdb-inst:pdb1"
            "DBInstanceIdentifier" : "my-cdb-inst",
            "TenantDBName" : "pdb1",
            "Status" : "ACTIVE",
            "MasterUsername" : "masterawsuser"
            "Port" : "1234",
            "CharacterSetName": "UTF-8",
            "ParameterGroups": [
                {
                    "ParameterGroupName": "tenant-custom-pg",
                    "ParameterApplyStatus": "in-sync"
                }
            ],
            {
            "OptionGroupMemberships": [
                {
                    "OptionGroupName": "tenant-custom-og",
                    "Status": "in-sync"
                }
            ]
         }
    ]
}
```

# 升級 CDB
<a name="Oracle.Concepts.single-tenant.upgrades"></a>

您可以將 CDB 升級到其他 Oracle Database 版本。例如，您可以將資料庫執行個體從 Oracle Database 19c 升級到 Oracle Database 21c。在升級期間無法變更資料庫架構。因此無法將非 CDB 升級到 CDB 或將 CDB 升級為非 CDB。

將 CDB 升級到 CDB 的程序與非 CDB 升級為非 CDB 的程序相同。如需更多詳細資訊，請參閱 [升級 RDS for Oracle 資料庫引擎](USER_UpgradeDBInstance.Oracle.md)。

# 管理您的 RDS for Oracle 資料庫執行個體
<a name="Appendix.Oracle.CommonDBATasks"></a>

以下是您可以使用 RDS for Oracle 資料庫執行個體來執行的一般管理任務。對於所有 RDS 資料庫執行個體，某些工作是相同的。其他任務是 RDS for Oracle 特定的。

以下任務適用於所有 RDS 資料庫，但 Oracle Database 具有特殊考量。例如，使用 Oracle 用戶端 SQL\$1Plus 和 SQL Developer 連線至 Oracle 資料庫。


****  

| 任務區域 | 相關文件 | 
| --- | --- | 
|  **執行個體類別、儲存體和 PIOPS** 如果您要建立生產執行個體，請了解執行個體類別、儲存體類型和佈建 IOPS 在 Amazon RDS 中的運作方式。  |  [RDS for Oracle 資料庫執行個體類別](Oracle.Concepts.InstanceClasses.md) [Amazon RDS 儲存類型](CHAP_Storage.md#Concepts.Storage)  | 
|  **異地同步備份部署** 生產資料庫執行個體應該使用多個可用區部署。「異地同步備份部署」可提高資料庫執行個體的可用性、資料耐用性和容錯能力。  |  [設定及管理 Amazon RDS 的多可用區域部署](Concepts.MultiAZ.md)  | 
|  **Amazon VPC** 如果 AWS 您的帳戶具有預設虛擬私有雲端 (VPC)，則會自動在預設 VPC 內建立資料庫執行個體。如果您的帳戶沒有預設的 VPC，而您想要 VPC 中有該資料庫執行個體，則必須在建立執行個體之前，先建立 VPC 和子網路群組。  |  [在 VPC 中使用資料庫執行個體](USER_VPC.WorkingWithRDSInstanceinaVPC.md)  | 
|  **安全群組** 根據預設，資料庫執行個體會使用防火牆來防止存取。確定您以正確的 IP 地址和網路組態建立安全群組，來存取資料庫執行個體。  |  [使用安全群組控制存取](Overview.RDSSecurityGroups.md)  | 
|  **參數群組** 如果您的資料庫執行個體將要求特定資料庫參數，則建立資料庫執行個體之前，須先建立參數群組。  |  [Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)  | 
|  **選項群組** 如果您的資料庫執行個體要求特定資料庫選項，則在建立資料庫執行個體之前，須先建立選項群組。  |  [將選項新增至 Oracle 資料庫執行個體](Appendix.Oracle.Options.md)  | 
|  **連線到您的資料庫執行個體** 建立安全群組並與資料庫執行個體建立關聯後，您可以使用任何標準 SQL 用戶端應用程式 (例如 Oracle SQL \$1Plus) 來連接至資料庫執行個體。  |  [連線至 Oracle 資料庫執行個體](USER_ConnectToOracleInstance.md)  | 
|  **備份與還原** 您可以設定資料庫執行個體以進行自動備份，或取得手動快照，然後從備份或快照還原執行個體。  |  [備份、還原和匯出資料](CHAP_CommonTasks.BackupRestore.md)  | 
|  **監控** 您能夠利用 CloudWatch Amazon RDS 指標、事件和增強型監控，進而監控 Oracle 資料庫執行個體。  |  [在 Amazon RDS 主控台中檢視指標](USER_Monitoring.md) [檢視 Amazon RDS 事件](USER_ListEvents.md)  | 
|  **日誌檔** 您可以存取 Oracle 資料庫執行個體的日誌檔案。  |  [監控 Amazon RDS 日誌檔案](USER_LogAccess.md)  | 

接下來，您可以尋找 RDS Oracle 一般資料庫管理員任務的 Amazon RDS 特定實作。為了提供受管理的服務體驗，Amazon RDS 並不會提供資料庫執行個體的殼層存取權。此外，RDS 也會將存取權限制在某些需要進階權限的系統程序和資料表。在許多任務中，您可以執行 `rdsadmin` 套件，這是一個可讓您管理資料庫的 Amazon RDS 特定工具。

使用執行 Oracle 的資料庫執行個體時，可能會處理到下列一般 DBA 任務：
+ [系統任務](Appendix.Oracle.CommonDBATasks.System.md)  
****    
<a name="dba-tasks-oracle-system-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [資料庫任務](Appendix.Oracle.CommonDBATasks.Database.md)  
****    
<a name="dba-tasks-oracle-database-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [日誌任務](Appendix.Oracle.CommonDBATasks.Log.md)  
****    
<a name="dba-tasks-oracle-log-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [RMAN 任務](Appendix.Oracle.CommonDBATasks.RMAN.md)  
****    
<a name="dba-tasks-oracle-rman-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [Oracle Scheduler 任務](Appendix.Oracle.CommonDBATasks.Scheduler.md)  
****    
<a name="dba-tasks-oracle-scheduler-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [診斷問題](Appendix.Oracle.CommonDBATasks.Diagnostics.md)  
****    
<a name="dba-tasks-oracle-diagnostic-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [其他任務](Appendix.Oracle.CommonDBATasks.Misc.md)  
****    
<a name="dba-tasks-oracle-misc-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 

您也可以使用 Amazon RDS 程序讓 Amazon S3 整合 Oracle，以及執行 OEM Management Agent 資料庫任務。如需詳細資訊，請參閱[Amazon S3 整合](oracle-s3-integration.md)及[使用 Management Agent 執行資料庫任務](Oracle.Options.OEMAgent.md#Oracle.Options.OEMAgent.DBTasks)。

# 執行 Oracle 資料庫執行個體的一般系統任務
<a name="Appendix.Oracle.CommonDBATasks.System"></a>

您可以在下文中找到如何在執行 Oracle 的 Amazon RDS 資料庫執行個體上執行與系統相關的一般 DBA 任務。為了提供受管理的服務體驗，Amazon RDS 並不會提供資料庫執行個體的 Shell 存取權，而且會將存取權限制在某些需要進階權限的系統程序和資料表。

**Topics**
+ [中斷工作階段的連線](Appendix.Oracle.CommonDBATasks.DisconnectingSession.md)
+ [終止工作階段](Appendix.Oracle.CommonDBATasks.KillingSession.md)
+ [取消工作階段中的 SQL 陳述式](Appendix.Oracle.CommonDBATasks.CancellingSQL.md)
+ [啟用和停用受限制的工作階段](Appendix.Oracle.CommonDBATasks.RestrictedSession.md)
+ [清空共用集區](Appendix.Oracle.CommonDBATasks.FlushingSharedPool.md)
+ [將 SELECT 或 EXECUTE 權限授予 SYS 物件](Appendix.Oracle.CommonDBATasks.TransferPrivileges.md)
+ [撤銷 SYS 物件上的 SELECT 或 EXECUTE 權限](Appendix.Oracle.CommonDBATasks.RevokePrivileges.md)
+ [管理 Oracle 資料庫執行個體的 RDS\$1X\$1 檢視](Appendix.Oracle.CommonDBATasks.X-dollar.md)
+ [將權限授予非主要使用者](Appendix.Oracle.CommonDBATasks.PermissionsNonMasters.md)
+ [建立自訂函數以驗證密碼](Appendix.Oracle.CommonDBATasks.CustomPassword.md)
+ [設定自訂 DNS 伺服器](#Appendix.Oracle.CommonDBATasks.CustomDNS)
+ [設定和取消設定系統診斷事件](Appendix.Oracle.CommonDBATasks.SystemEvents.md)

# 中斷工作階段的連線
<a name="Appendix.Oracle.CommonDBATasks.DisconnectingSession"></a>

若要透過結束專屬的伺服器程序來中斷與目前工作階段的連線，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.disconnect`。`disconnect` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `sid`  |  數字  |  —  |  是  |  工作階段識別符。  | 
|  `serial`  |  數字  |  —  |  是  |  工作階段的序號。  | 
|  `method`  |  varchar  |  'IMMEDIATE'  |  否  |  有效值為 `'IMMEDIATE'` 或 `'POST_TRANSACTION'`。  | 

下列範例會中斷工作階段的連線。

```
begin
    rdsadmin.rdsadmin_util.disconnect(
        sid    => sid, 
        serial => serial_number);
end;
/
```

若要取得工作階段識別符和工作階段序號，請查詢 `V$SESSION` 檢視。下列範例會取得使用者 `AWSUSER` 的所有工作階段。

```
SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = 'AWSUSER';
```

請務必開啟資料庫，才能使用此方法。如需中斷工作階段連線的詳細資訊，請參閱 Oracle 文件中的 [ALTER SYSTEM](http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_2014.htm#SQLRF53166)。

# 終止工作階段
<a name="Appendix.Oracle.CommonDBATasks.KillingSession"></a>

若要終止工作階段，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.kill`。`kill` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `sid`  |  數字  |  —  |  是  |  工作階段識別符。  | 
|  `serial`  |  數字  |  —  |  是  |  工作階段的序號。  | 
|  `method`  |  varchar  |  null  |  否  |  有效值為 `'IMMEDIATE'` 或 `'PROCESS'`。若您指定 `IMMEDIATE`，它與執行下列陳述式具有相同的效果： <pre>ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE</pre> 若您指定 `PROCESS`，則會終止與工作階段相關聯的程序。若使用 `IMMEDIATE` 終止工作階段未成功，則僅指定 `PROCESS`。  | 

若要取得工作階段識別符和工作階段序號，請查詢 `V$SESSION` 檢視。下列範例會取得使用者 *AWSUSER* 的所有工作階段。

```
SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = 'AWSUSER';
```

下列範例會終止工作階段。

```
BEGIN
    rdsadmin.rdsadmin_util.kill(
        sid    => sid, 
        serial => serial_number,
        method => 'IMMEDIATE');
END;
/
```

下列範例會終止與工作階段相關聯的程序。

```
BEGIN
    rdsadmin.rdsadmin_util.kill(
        sid    => sid, 
        serial => serial_number,
        method => 'PROCESS');
END;
/
```

# 取消工作階段中的 SQL 陳述式
<a name="Appendix.Oracle.CommonDBATasks.CancellingSQL"></a>

若要取消工作階段中的 SQL 陳述式，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.cancel`。

**注意**  
Oracle Database 19c (19.0.0) 和 Oracle RDS 的所有較新的主要版本和次要版本支援此程序。

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


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `sid`  |  數字  |  —  |  是  |  工作階段識別符。  | 
|  `serial`  |  數字  |  —  |  是  |  工作階段的序號。  | 
|  `sql_id`  |  varchar2  |  null  |  否  |  SQL 陳述式的 SQL 識別符。  | 

下列範例會取消工作階段中的 SQL 陳述式。

```
begin
    rdsadmin.rdsadmin_util.cancel(
        sid    => sid, 
        serial => serial_number,
        sql_id => sql_id);
end;
/
```

若要取得工作階段識別符、工作階段序號和 SQL 陳述式的 SQL 識別符，請查詢 `V$SESSION` 檢視。下列範例會取得使用者 `AWSUSER` 的所有工作階段和 SQL 識別碼。

```
select SID, SERIAL#, SQL_ID, STATUS from V$SESSION where USERNAME = 'AWSUSER';
```

# 啟用和停用受限制的工作階段
<a name="Appendix.Oracle.CommonDBATasks.RestrictedSession"></a>

若要啟用和停用受限制的工作階段，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.restricted_session`。`restricted_session` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 是 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_enable`  |  布林值  |  true  |  否  |  設定為 `true` 可啟用受限制的工作階段，設定為 `false` 則可停用受限制的工作階段。  | 

下列範例顯示如何啟用和停用受限制的工作階段。

```
/* Verify that the database is currently unrestricted. */

SELECT LOGINS FROM V$INSTANCE;
 
LOGINS
-------
ALLOWED

/* Enable restricted sessions */

EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => true);
 

/* Verify that the database is now restricted. */

SELECT LOGINS FROM V$INSTANCE;
 
LOGINS
----------
RESTRICTED
 

/* Disable restricted sessions */

EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => false);
 

/* Verify that the database is now unrestricted again. */

SELECT LOGINS FROM V$INSTANCE;
 
LOGINS
-------
ALLOWED
```

# 清空共用集區
<a name="Appendix.Oracle.CommonDBATasks.FlushingSharedPool"></a>

若要清空共用集區，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.flush_shared_pool`。`flush_shared_pool` 程序沒有參數。

下列範例會清空共用集區。

```
EXEC rdsadmin.rdsadmin_util.flush_shared_pool;
```

## 清空緩衝區快取
<a name="Appendix.Oracle.CommonDBATasks.FlushingBufferCache"></a>

若要清空緩衝區快取，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.flush_buffer_cache`。`flush_buffer_cache` 程序沒有參數。

下列範例會清空緩衝區快取。

```
EXEC rdsadmin.rdsadmin_util.flush_buffer_cache;
```

## 排清資料庫智慧型快閃記憶體快取
<a name="Appendix.Oracle.CommonDBATasks.flushing-shared-pool"></a>

若要排清資料庫智慧型快閃記憶體快取，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.flush_flash_cache`。`flush_flash_cache` 程序沒有參數。下列範例會排清資料庫智慧型快閃記憶體快取。

```
EXEC rdsadmin.rdsadmin_util.flush_flash_cache;
```

如需搭配 RDS for Oracle 使用資料庫智慧型快閃記憶體快取的詳細資訊，請參閱 [將暫存資料存放在 RDS for Oracle 執行個體儲存體中](CHAP_Oracle.advanced-features.instance-store.md)。

# 將 SELECT 或 EXECUTE 權限授予 SYS 物件
<a name="Appendix.Oracle.CommonDBATasks.TransferPrivileges"></a>

您通常可以使用角色來傳輸權限，角色中可能包含許多物件。若要授予權限給單一物件，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.grant_sys_object`。該程序只會授予主要使用者透過角色或直接授予所取得的權限。

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

**重要**  
針對所有參數值，除非您已使用區分大小寫的識別符來建立使用者，否則請使用大寫字母。例如，如果您執行 `CREATE USER myuser` 或 `CREATE USER MYUSER`，資料字典會存放 `MYUSER`。不過，如果您在 `CREATE USER "MyUser"` 中使用雙引號，資料字典則會存放 `MyUser`。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_obj_name`  |  varchar2  |  —  |  是  |  要從其授予權限的來源物件名稱。物件可以是目錄、函數、套件、程序、順序、資料表或檢視。物件名稱的拼寫必須完全符合 `DBA_OBJECTS` 中的顯示內容。多數系統物件是以大寫定義，因此建議您先嘗試採用大寫。  | 
|  `p_grantee`  |  varchar2  |  —  |  是  |  要對其授予權限的目標物件名稱。物件可以是結構描述或角色。  | 
|  `p_privilege`  |  varchar2  |  null  |  是  |  —  | 
|  `p_grant_option`  |  布林值  |  false  |  否  |  設定為 `true` 以使用 WITH GRANT OPTION。  | 

下列範例會將名為 `V_$SESSION` 物件上的 SELECT 權限授予名為 `USER1` 的使用者。

```
begin
    rdsadmin.rdsadmin_util.grant_sys_object(
        p_obj_name  => 'V_$SESSION',
        p_grantee   => 'USER1',
        p_privilege => 'SELECT');
end;
/
```

下列範例會將名為 `V_$SESSION` 物件上的 SELECT 權限授予名為 `USER1` 且擁有 GRANT OPTION 的使用者。

```
begin
    rdsadmin.rdsadmin_util.grant_sys_object(
        p_obj_name     => 'V_$SESSION',
        p_grantee      => 'USER1',
        p_privilege    => 'SELECT',
        p_grant_option => true);
end;
/
```

您必須使用 GRANT OPTION 或透過使用 `with admin option` 授予的角色直接將這些權限授予帳戶，才能夠在物件上授予權限。在最常見的情況下，您可能需要在獲授予 `SELECT` 角色的 DBA 檢視上授予 `SELECT_CATALOG_ROLE`。如果您尚未使用 `with admin option` 將該角色直接授予使用者，則無法轉移權限。如果您擁有 DBA 權限，就能夠將該角色直接授予另一位使用者。

下列範例會授予 `SELECT_CATALOG_ROLE` 和 `EXECUTE_CATALOG_ROLE` 給 `USER1`。由於使用了 `with admin option`，`USER1` 現在可以將存取權授予給已獲授予 `SELECT_CATALOG_ROLE` 的 SYS 物件。

```
GRANT SELECT_CATALOG_ROLE TO USER1 WITH ADMIN OPTION; 
GRANT EXECUTE_CATALOG_ROLE to USER1 WITH ADMIN OPTION;
```

已獲授予 `PUBLIC` 的物件不需要重新授予。如果使用 `grant_sys_object` 程序來重新授予存取，則程序呼叫會成功。

# 撤銷 SYS 物件上的 SELECT 或 EXECUTE 權限
<a name="Appendix.Oracle.CommonDBATasks.RevokePrivileges"></a>

若要撤銷單一物件上的權限，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.revoke_sys_object`。該程序只會撤銷已透過角色或直接授與主帳戶的權限。

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


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_obj_name`  |  varchar2  |  —  |  是  |  要撤銷其權限的物件名稱。物件可以是目錄、函數、套件、程序、順序、資料表或檢視。物件名稱的拼寫必須完全符合 `DBA_OBJECTS` 中的顯示內容。多數系統物件是以大寫定義，因此建議您先嘗試採用大寫。  | 
|  `p_revokee`  |  varchar2  |  —  |  是  |  要撤銷其權限的物件名稱。物件可以是結構描述或角色。  | 
|  `p_privilege`  |  varchar2  |  null  |  是  |  —  | 

下列範例會從名為 `V_$SESSION` 的使用者撤銷名為 `USER1` 物件上的 SELECT 權限。

```
begin
    rdsadmin.rdsadmin_util.revoke_sys_object(
        p_obj_name  => 'V_$SESSION',
        p_revokee   => 'USER1',
        p_privilege => 'SELECT');
end;
/
```

# 管理 Oracle 資料庫執行個體的 RDS\$1X\$1 檢視
<a name="Appendix.Oracle.CommonDBATasks.X-dollar"></a>

您可能需要存取只能由 `SYS` 存取的 `SYS.X$` 固定資料表。若要在合格 `X$` 資料表上建立 `SYS.RDS_X$` 檢視，請使用 `rdsadmin.rdsadmin_util` 套件中的程序。您的主要使用者會自動獲得 `RDS_X$` 檢視的 `SELECT … WITH GRANT OPTION` 權限。

這些 `rdsadmin.rdsadmin_util` 程序適用於下列情況：
+ 從未升級的現有資料庫執行個體，並使用以下版本：
  + `21.0.0.0.ru-2023-10.rur-2023-10.r1` 和更新的 21c 版本
  + `19.0.0.0.ru-2023-10.rur-2023-10.r1` 和更新的 19c 版本
+ 您建立的任何新資料庫執行個體
+ 您已升級的任何現有資料庫執行個體

**重要**  
在內部，`rdsadmin.rdsadmin_util` 套件會在 `X$` 資料表上建立檢視。這些 `X$` 資料表是 Oracle Database 文件中未描述的內部系統物件。建議您在非生產資料庫中測試特定檢視，並且只在 Oracle Support 的指導下，在生產資料庫中建立檢視。

## 列出可在 RDS\$1X\$1 檢視中使用的 X\$1 固定資料表
<a name="Appendix.Oracle.CommonDBATasks.list-allowed-X-dollar"></a>

若要列出可在 `RDS_X$` 檢視中使用的 X\$1 資料表，請使用 RDS 程序 `rdsadmin.rdsadmin_util.list_allowed_sys_x$_views`。此程序不接受任何參數。下列陳述式會列出所有符合資格的 `X$` 資料表 (包含範例輸出)。

```
SQL> SET SERVEROUTPUT ON
SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_allowed_sys_x$_views);

'X$BH'
'X$K2GTE'
'X$KCBWBPD'
'X$KCBWDS'
'X$KGLLK'
'X$KGLOB'
'X$KGLPN'
'X$KSLHOT'
'X$KSMSP'
'X$KSPPCV'
'X$KSPPI'
'X$KSPPSV'
'X$KSQEQ'
'X$KSQRS'
'X$KTUXE'
'X$KQRFP'
```

符合資格 `X$` 資料表的清單可能會隨著時間而變更。為了確保您的符合資格 `X$` 固定資料表清單是最新的，請定期重新執行 `list_allowed_sys_x$_views`。

## 建立 SYS.RDS\$1X\$1 檢視
<a name="Appendix.Oracle.CommonDBATasks.create-X-dollar"></a>

若要在符合資格 `X$` 資料表上建立 `RDS_X$` 檢視，請使用 RDS 程序 `rdsadmin.rdsadmin_util.create_sys_x$_view`。您只能為 `rdsadmin.rdsadmin_util.list_allowed_sys_x$_views` 的輸出中列出的資料表建立檢視。`create_sys_x$_view` 程序接受下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_x$_tbl`  |  varchar2  |  Null  |  是  |  有效的 `X$` 資料表名稱。該值必須是由 `list_allowed_sys_x$_views` 報告的其中一個 `X$` 資料表。  | 
|  `p_force_creation`  |  Boolean  | FALSE |  否  |  指出是否強制建立已存在於 `X$` 資料表之 `RDS_X$` 檢視的值。根據預設，RDS 不會建立已存在的檢視。若要強制建立，請將此參數設定為 `TRUE`。  | 

下列範例會在 `X$KGLOB` 資料表上建立 `SYS.RDS_X$KGLOB` 檢視。檢視名稱的格式為 `RDS_X$tablename`。

```
SQL> SET SERVEROUTPUT ON
SQL> EXEC rdsadmin.rdsadmin_util.create_sys_x$_view('X$KGLOB');

PL/SQL procedure successfully completed.
```

下列資料字典查詢會列出 `SYS.RDS_X$KGLOB` 檢視並顯示其狀態。您的主要使用者會自動獲得此檢視的 `SELECT ... WITH GRANT OPTION` 權限。

```
SQL> SET SERVEROUTPUT ON
SQL> COL OWNER FORMAT A30 
SQL> COL OBJECT_NAME FORMAT A30
SQL> COL STATUS FORMAT A30
SQL> SET LINESIZE 200
SQL> SELECT OWNER, OBJECT_NAME, STATUS 
FROM DBA_OBJECTS 
WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB';

OWNER                          OBJECT_NAME                    STATUS
------------------------------ ------------------------------ ------------------------------
SYS                            RDS_X$KGLOB                    VALID
```

**重要**  
`X$` 資料表不保證在升級前後保持不變。RDS for Oracle 在引擎升級期間捨棄並重新建立 `X$` 資料表上的 `RDS_X$` 檢視。然後，它會將 `SELECT ... WITH GRANT OPTION` 權限授予主要使用者。升級之後，請視需要在對應的 `RDS_X$` 檢視上將權限授予資料庫使用者。

## 列出 SYS.RDS\$1X\$1 檢視
<a name="Appendix.Oracle.CommonDBATasks.list-created-X-dollar"></a>

若要列出現有 `RDS_X$` 檢視，請使用 RDS 程序 `rdsadmin.rdsadmin_util.list_created_sys_x$_views`。程序只會列出 `create_sys_x$_view` 程序建立的檢視。下列範例列出具有對應 `RDS_X$` 檢視的 `X$` 資料表 (包含範例輸出)。

```
SQL> SET SERVEROUTPUT ON
SQL> COL XD_TBL_NAME FORMAT A30
SQL> COL STATUS FORMAT A30
SQL> SET LINESIZE 200
SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_created_sys_x$_views);

XD_TBL_NAME                    STATUS
------------------------------ ------------------------------
X$BH                           VALID
X$K2GTE                        VALID
X$KCBWBPD                      VALID

3 rows selected.
```

## 捨棄 RDS\$1X\$1 檢視
<a name="Appendix.Oracle.CommonDBATasks.drop-X-dollar"></a>

若要捨棄 `SYS.RDS_X$` 檢視，請使用 RDS 程序 `rdsadmin.rdsadmin_util.drop_sys_x$_view`。您只能捨棄 `rdsadmin.rdsadmin_util.list_allowed_sys_x$_views` 的輸出中列出的檢視。`drop_sys_x$_view` 程序接受下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_x$_tbl`  |  varchar2  |  Null  |  是  |  有效的 `X$` 固定資料表名稱。該值必須是由 `list_created_sys_x$_views` 報告的其中一個 `X$` 固定資料表。  | 

下列範例會捨棄在 `X$KGLOB` 資料表上建立的 `RDS_X$KGLOB` 檢視。

```
SQL> SET SERVEROUTPUT ON
SQL> EXEC rdsadmin.rdsadmin_util.drop_sys_x$_view('X$KGLOB');

PL/SQL procedure successfully completed.
```

下列範例顯示已捨棄 `SYS.RDS_X$KGLOB` 檢視 (包含範例輸出)。

```
SQL> SET SERVEROUTPUT ON
SQL> COL OWNER FORMAT A30 
SQL> COL OBJECT_NAME FORMAT A30
SQL> COL STATUS FORMAT A30
SQL> SET LINESIZE 200
SQL> SELECT OWNER, OBJECT_NAME, STATUS 
FROM DBA_OBJECTS 
WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB';

no rows selected
```

# 將權限授予非主要使用者
<a name="Appendix.Oracle.CommonDBATasks.PermissionsNonMasters"></a>

您可以使用 `SYS` 角色，將選取權限授予 `SELECT_CATALOG_ROLE` 結構描述中的許多物件。`SELECT_CATALOG_ROLE` 角色可提供使用者資料字典檢視上的 `SELECT` 權限。下列範例會將角色 `SELECT_CATALOG_ROLE` 授予名為 `user1` 的使用者。

```
GRANT SELECT_CATALOG_ROLE TO user1;
```

您可以使用 `EXECUTE` 角色，將 `SYS` 權限授予 `EXECUTE_CATALOG_ROLE` 結構描述中的許多物件。`EXECUTE_CATALOG_ROLE` 角色可為使用者提供資料字典中套件和程序的 `EXECUTE` 權限。下列範例會將 `EXECUTE_CATALOG_ROLE` 角色授予名為「user1」**的使用者。

```
GRANT EXECUTE_CATALOG_ROLE TO user1;
```

下列範例會取得 `SELECT_CATALOG_ROLE` 角色和 `EXECUTE_CATALOG_ROLE` 角色允許的許可。

```
  SELECT * 
    FROM ROLE_TAB_PRIVS  
   WHERE ROLE IN ('SELECT_CATALOG_ROLE','EXECUTE_CATALOG_ROLE') 
ORDER BY ROLE, TABLE_NAME ASC;
```

下列範例會建立名為 `user1` 的非主要使用者，並授予其 `CREATE SESSION` 權限，以及名為 *sh.sales* 資料庫上的 `SELECT` 權限。

```
CREATE USER user1 IDENTIFIED BY PASSWORD;
GRANT CREATE SESSION TO user1;
GRANT SELECT ON sh.sales TO user1;
```

# 建立自訂函數以驗證密碼
<a name="Appendix.Oracle.CommonDBATasks.CustomPassword"></a>

您可以透過以下方式建立自訂密碼驗證函數。
+ 若要使用標準驗證邏輯，以及在 `SYS` 結構描述中存放您的函數，請使用 `create_verify_function` 程序。
+ 若要使用自訂驗證邏輯，或避免在 `SYS` 結構描述中存放您的函數，請使用 `create_passthrough_verify_fcn` 程序。

# create\$1verify\$1function 程序
<a name="Appendix.Oracle.CommonDBATasks.CustomPassword.Standard"></a>

您可以建立自訂函數以使用 Amazon RDS 程序 `rdsadmin.rdsadmin_password_verify.create_verify_function` 來驗證密碼。所有版本的 RDS for Oracle 都支援 `create_verify_function` 程序。

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


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_verify_function_name`  |  varchar2  |  —  |  是  |  自訂函數的名稱。系統會在 SYS 結構描述中為您建立此函數。您可以將此函數指派給使用者描述檔。  | 
|  `p_min_length`  |  數字  |  8  |  否  |  需要的字元數下限。  | 
|  `p_max_length`  |  數字  |  256  |  否  |  允許的字元數上限。  | 
|  `p_min_letters`  |  數字  |  1  |  否  |  需要的字母數下限。  | 
|  `p_min_uppercase`  |  數字  |  0  |  否  |  需要的大寫字母數下限。  | 
|  `p_min_lowercase`  |  數字  |  0  |  否  |  需要的小寫字母數下限。  | 
|  `p_min_digits`  |  數字  |  1  |  否  |  需要的數字下限。  | 
|  `p_min_special`  |  數字  |  0  |  否  |  需要的特殊字元數下限。  | 
|  `p_min_different_chars`  |  數字  |  3  |  否  |  新舊密碼間需要的不同字元數下限。  | 
|  `p_disallow_username`  |  布林值  |  true  |  否  |  設定為 `true` 可禁止在密碼中使用使用者名稱。  | 
|  `p_disallow_reverse`  |  布林值  |  true  |  否  |  設定為 `true` 可禁止在密碼中使用倒寫的使用者名稱。  | 
|  `p_disallow_db_name`  |  布林值  |  true  |  否  |  設定為 `true` 可禁止在密碼中使用資料庫或伺服器名稱。  | 
|  `p_disallow_simple_strings`  |  布林值  |  true  |  否  |  設定為 `true` 可禁止使用簡易字串做為密碼。  | 
|  `p_disallow_whitespace`  |  布林值  |  false  |  否  |  設定為 `true` 可禁止在密碼中使用空白字元。  | 
|  `p_disallow_at_sign`  |  布林值  |  false  |  否  |  設定為 `true` 可禁止在密碼中使用 @ 字元。  | 

您可以建立多個密碼驗證函數。

自訂函數的名稱有一些限制。您的自訂函數名稱不能與現有系統物件相同，且該名稱長度不得超過 30 個字元。此外，名稱需包括下列其中一個字串：`PASSWORD`、`VERIFY`、`COMPLEXITY`、`ENFORCE` 或 `STRENGTH`。

下列範例會建立名為 `CUSTOM_PASSWORD_FUNCTION` 的函數。該函數要求密碼至少有 12 個字元、2 個大寫字元、1 個數字和 1 個特殊字元，並且密碼禁止使用 @ 字元。

```
begin
    rdsadmin.rdsadmin_password_verify.create_verify_function(
        p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', 
        p_min_length           => 12, 
        p_min_uppercase        => 2, 
        p_min_digits           => 1, 
        p_min_special          => 1,
        p_disallow_at_sign     => true);
end;
/
```

若要查看您驗證函數的文字，請查詢 `DBA_SOURCE`。下列範例會取得名為 `CUSTOM_PASSWORD_FUNCTION` 的自訂密碼函數的文字。

```
COL TEXT FORMAT a150

  SELECT TEXT 
    FROM DBA_SOURCE 
   WHERE OWNER = 'SYS' 
     AND NAME = 'CUSTOM_PASSWORD_FUNCTION' 
ORDER BY LINE;
```

若要將您的驗證函數與使用者描述檔建立關聯，請使用 `ALTER PROFILE`。下列範例會將名為 的驗證 PL/SQL 函數`CUSTOM_PASSWORD_FUNCTION`與`DEFAULT`使用者設定檔建立關聯。 `PASSWORD_VERIFY_FUNCTION`是 Oracle 設定檔資源名稱。

```
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;
```

若要查看哪些使用者設定檔與哪些驗證函數相關聯，請查詢 `DBA_PROFILES`。下列範例會取得已與名為 `CUSTOM_PASSWORD_FUNCTION` 的自訂驗證函數關聯的設定檔。

```
SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION' AND LIMIT = 'CUSTOM_PASSWORD_FUNCTION';


PROFILE                    RESOURCE_NAME                     RESOURCE  LIMIT
-------------------------  --------------------------------  --------  ------------------------
DEFAULT                    PASSWORD_VERIFY_FUNCTION          PASSWORD  CUSTOM_PASSWORD_FUNCTION
```

下列範例會取得所有設定檔和其關聯的密碼驗證函數。

```
SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION';

PROFILE                    RESOURCE_NAME                     RESOURCE  LIMIT
-------------------------  --------------------------------  --------  ------------------------
DEFAULT                    PASSWORD_VERIFY_FUNCTION          PASSWORD  CUSTOM_PASSWORD_FUNCTION
RDSADMIN                   PASSWORD_VERIFY_FUNCTION          PASSWORD  NULL
```

# create\$1passthrough\$1verify\$1fcn 程序
<a name="Appendix.Oracle.CommonDBATasks.CustomPassword.Custom"></a>

所有版本的 RDS for Oracle 都支援 `create_passthrough_verify_fcn` 程序。

您可以建立自訂函數以使用 Amazon RDS 程序 `rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn` 來驗證密碼。`create_passthrough_verify_fcn` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_verify_function_name`  |  varchar2  |  —  |  是  |  自訂驗證函數的名稱。這是系統為您在 SYS 結構描述中所建立的包裝函數，並且不包含任何驗證邏輯。您可以將此函數指派給使用者描述檔。  | 
|  `p_target_owner`  |  varchar2  |  —  |  是  |  自訂驗證函數的結構描述擁有者。  | 
|  `p_target_function_name`  |  varchar2  |  —  |  是  |  現有的自訂函數名稱，其中包含驗證邏輯。您的自訂函數必須傳回布林值。如果密碼有效，您的函數應該傳回 `true`，以及如果密碼無效，則傳回 `false`。  | 

下列範例會使用來自名為 `PASSWORD_LOGIC_EXTRA_STRONG` 函數的邏輯，來建立密碼驗證函數。

```
begin
    rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn(
        p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', 
        p_target_owner         => 'TEST_USER',
        p_target_function_name => 'PASSWORD_LOGIC_EXTRA_STRONG');
end;
/
```

若要將驗證函數與使用者描述檔建立關聯，請使用 `alter profile`。下列範例會將驗證函數與 `DEFAULT` 使用者描述檔建立關聯。

```
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;
```

## 設定自訂 DNS 伺服器
<a name="Appendix.Oracle.CommonDBATasks.CustomDNS"></a>

Amazon RDS 在您執行 Oracle 的資料庫執行個體上支援傳出網路存取。如需傳出網路存取的詳細資訊 (包括先決條件)，請參閱 [使用憑證和 Oracle 錢包設定 UTL\$1HTTP 存取](Oracle.Concepts.ONA.md)。

Amazon RDS Oracle 允許透過客戶擁有的自訂 DNS 伺服器進行網域名稱服務 (DNS) 解析。您僅可以透過您的自訂 DNS 伺服器，解析來自您 Amazon RDS 資料庫執行個體的完整網域名稱。

設定您的自訂 DNS 名稱伺服器之後，需要最多 30 分鐘的時間，才能將變更傳播到您的資料庫執行個體。變更傳播到您的資料庫執行個體之後，所有傳出網路流量都需要透過連接埠 53 對您的 DNS 伺服器進行 DNS 查閱查詢。

若要為您的 Amazon RDS for Oracle 資料庫執行個體設定自訂的 DNS 伺服器，請執行下列動作：
+ 從連接至您 Virtual Private Cloud (VPC) 的 DHCP 選項集，將 `domain-name-servers` 選項設定為您 DNS 名稱伺服器的 IP 地址。如需詳細資訊，請參閱 [DHCP 選項集](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html)。
**注意**  
`domain-name-servers` 選項會接受最多四個值，但您的 Amazon RDS 資料庫執行個體只會使用第一個值。
+ 請確保您的 DNS 伺服器可以解析所有查閱查詢，包括公有 DNS 名稱、Amazon EC2 私有 DNS 名稱，以及客戶特定的 DNS 名稱。如果傳出網路流量包含您的 DNS 伺服器無法處理的任何 DNS 查閱，您的 DNS 伺服器就必須設定適當的上游 DNS 提供者。
+ 設定您的 DNS 伺服器以產生 512 個位元組或更少的使用者資料包通訊協定 (UDP) 回應。
+ 設定您的 DNS 伺服器以產生 1024 個位元組或更少的傳輸控制通訊協定 (TCP) 回應。
+ 設定您的 DNS 伺服器以允許來自您的 Amazon RDS 資料庫執行個體透過連接埠 53 的傳入流量。如果您的 DNS 伺服器位於 Amazon VPC 中，VPC 必須具有一個安全群組，其中包含允許連接埠 53 上的 UDP 和 TCP 流量的傳入規則。如果您的 DNS 伺服器不在 Amazon VPC 中，則必須具有適當的防火牆允許清單，才能允許連接埠 53 上的 UDP 和 TCP 傳入流量。

  如需更多詳細資訊，請參閱 [VPC 安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)和[新增與移除規則](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#AddRemoveRules)。
+ 設定您 Amazon RDS 資料庫執行個體的 VPC，以允許透過連接埠 53 的傳出流量。您的 VPC 必須具有一個安全群組，其中包含允許連接埠 53 上的 UDP 和 TCP 流量的傳出規則。

  如需更多詳細資訊，請參閱 [VPC 安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)和[新增與移除規則](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#AddRemoveRules)。
+ 您必須正確設定 Amazon RDS 資料庫執行個體和 DNS 伺服器之間的路由路徑，才能允許 DNS 流量。
  + 如果 Amazon RDS 資料庫執行個體和 DNS 伺服器不在相同的 VPC 中，則必須在兩者之間設定對等連接。如需詳細資訊，請參閱[什麼是 VPC 互連？](https://docs.aws.amazon.com/vpc/latest/peering/Welcome.html) 

# 設定和取消設定系統診斷事件
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents"></a>

若要在工作階段層級設定和取消設定診斷事件，您可以使用 Oracle SQL 陳述式 `ALTER SESSION SET EVENTS`。但是，要在系統層級設定事件，您不能使用 Oracle SQL。而是使用 `rdsadmin.rdsadmin_util` 套件中的系統事件程序。下列引擎版本提供系統事件程序：
+ 所有 Oracle Database 21c 版本
+ 19.0.0.0.ru-2020-10.rur-2020-10.r1 及更新的 Oracle Database 19c 版本

  如需詳細資訊，請參閱 *Amazon RDS for Oracle 版本備註*中的[版本 19.0.0.0.ru-2020-10.rur-2020-10.r1](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html#oracle-version-RU-RUR.19.0.0.0.ru-2020-10.rur-2020-10.r1)。

**重要**  
在內部，`rdsadmin.rdsadmin_util` 套件會使用 `ALTER SYSTEM SET EVENTS` 陳述式來設定事件。此 `ALTER SYSTEM` 陳述式並未記錄在 Oracle 資料庫文件中。某些系統診斷事件可能會產生大量的追蹤資訊、造成爭用或影響資料庫可用性。建議您在非生產資料庫中測試特定的診斷事件，並且只在 Oracle Support 的指導下，在生產資料庫中設定事件。

## 列出允許的系統診斷事件
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.listing"></a>

若要列出您可以設定的系統事件，請使用 Amazon RDS Procedure (程序)`rdsadmin.rdsadmin_util.list_allowed_system_events`。此程序不接受任何參數。

下列範例會列出您可以設定的所有系統事件。

```
SET SERVEROUTPUT ON
EXEC rdsadmin.rdsadmin_util.list_allowed_system_events;
```

下列範例輸出列出事件編號及其描述。使用 Amazon RDS 程序 `set_system_event` 來設定這些事件並 `unset_system_event` 以取消這些設定。

```
604   - error occurred at recursive SQL level
942   - table or view does not exist
1401  - inserted value too large for column
1403  - no data found
1410  - invalid ROWID
1422  - exact fetch returns more than requested number of rows
1426  - numeric overflow
1427  - single-row subquery returns more than one row
1476  - divisor is equal to zero
1483  - invalid length for DATE or NUMBER bind variable
1489  - result of string concatenation is too long
1652  - unable to extend temp segment by  in tablespace
1858  - a non-numeric character was found where a numeric was expected
4031  - unable to allocate  bytes of shared memory ("","","","")
6502  - PL/SQL: numeric or value error
10027 - Specify Deadlock Trace Information to be Dumped
10046 - enable SQL statement timing
10053 - CBO Enable optimizer trace
10173 - Dynamic Sampling time-out error
10442 - enable trace of kst for ORA-01555 diagnostics
12008 - error in materialized view refresh path
12012 - error on auto execute of job
12504 - TNS:listener was not given the SERVICE_NAME in CONNECT_DATA
14400 - inserted partition key does not map to any partition
31693 - Table data object  failed to load/unload and is being skipped due to error:
```

**注意**  
允許的系統事件清單可能會隨著時間而變更。若要確定您擁有最新的符合資格事件的清單，請使用 `rdsadmin.rdsadmin_util.list_allowed_system_events`。

## 設定系統診斷事件
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.setting"></a>

若要設定系統事件，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.set_system_event`。您只能設定 `rdsadmin.rdsadmin_util.list_allowed_system_events` 的輸出中列出的事件。`set_system_event` 程序接受下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_event`  |  數字  |  —  |  是  |  系統事件編號。該值必須是由 `list_allowed_system_events` 報告的其中一個事件編號。  | 
|  `p_level`  |  數字  |  —  |  是  |  事件層級。如需不同層級值的說明，請參閱 Oracle 資料庫文件或 Oracle 支援。  | 

程序 `set_system_event` 會根據下列原則建構並執行所需的 `ALTER SYSTEM SET EVENTS` 陳述式：
+ 自動決定事件類型 (`context` 或 `errorstack`)。
+ 表單 `ALTER SYSTEM SET EVENTS 'event LEVEL event_level'` 中的陳述式會設定內容事件。此標記法等同於 `ALTER SYSTEM SET EVENTS 'event TRACE NAME CONTEXT FOREVER, LEVEL event_level'`。
+ 表單中 `ALTER SYSTEM SET EVENTS 'event ERRORSTACK (event_level)'` 的陳述式會設定錯誤堆疊事件。此標記法等同於 `ALTER SYSTEM SET EVENTS 'event TRACE NAME ERRORSTACK LEVEL event_level'`。

下列範例會在層級 3 設定事件 942，並在層級 10 設定事件 10442。包括範例輸出。

```
SQL> SET SERVEROUTPUT ON
SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(942,3);
Setting system event 942 with: alter system set events '942 errorstack (3)'

PL/SQL procedure successfully completed.

SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(10442,10);
Setting system event 10442 with: alter system set events '10442 level 10'

PL/SQL procedure successfully completed.
```

## 列出已設定的系統診斷事件
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.listing-set"></a>

若要列出目前設定的系統事件，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.list_set_system_events`。此程序只會報告在系統層級由 `set_system_event` 設定的事件。

下列範例會列出作用中的系統事件。

```
SET SERVEROUTPUT ON
EXEC rdsadmin.rdsadmin_util.list_set_system_events;
```

下列範例輸出顯示事件清單、事件類型、目前設定事件的層級，以及設定事件的時間。

```
942 errorstack (3) - set at 2020-11-03 11:42:27
10442 level 10 - set at 2020-11-03 11:42:41

PL/SQL procedure successfully completed.
```

## 取消設定系統診斷事件
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.unsetting"></a>

若要取消設定系統事件，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.unset_system_event`。您只能取消設定 `rdsadmin.rdsadmin_util.list_allowed_system_events` 的輸出中列出的事件。`unset_system_event` 程序接受下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_event`  |  數字  |  —  |  是  |  系統事件編號。該值必須是由 `list_allowed_system_events` 報告的其中一個事件編號。  | 

下列範例會取消設定事件 942 和 10442。包括範例輸出。

```
SQL> SET SERVEROUTPUT ON
SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(942);
Unsetting system event 942 with: alter system set events '942 off'

PL/SQL procedure successfully completed.

SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(10442);
Unsetting system event 10442 with: alter system set events '10442 off'

PL/SQL procedure successfully completed.
```

# 執行 Oracle 資料庫執行個體的一般資料庫任務
<a name="Appendix.Oracle.CommonDBATasks.Database"></a>

您可以在下文中找到如何在執行 Oracle 的 Amazon RDS 資料庫執行個體上執行與資料庫相關的一般 DBA 任務。為了提供受管理的服務體驗，Amazon RDS 並不會提供資料庫執行個體的殼層存取權。Amazon RDS 也會將存取權限制在某些需要進階權限的系統程序和資料表。

**Topics**
+ [變更資料庫的全域名稱](Appendix.Oracle.CommonDBATasks.RenamingGlobalName.md)
+ [在 RDS for Oracle 中使用資料表空間](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md)
+ [在 RDS for Oracle 中使用暫存檔](Appendix.Oracle.CommonDBATasks.using-tempfiles.md)
+ [在 RDS for Oracle 中調整資料表空間、資料檔案和暫存檔的大小](Appendix.Oracle.CommonDBATasks.ResizeTempSpaceReadReplica.md)
+ [在 RDS for Oracle 中的儲存磁碟區之間移動資料](Appendix.Oracle.CommonDBATasks.MovingDataBetweenVolumes.md)
+ [在 RDS for Oracle 中使用外部資料表](Appendix.Oracle.CommonDBATasks.External_Tables.md)

# 變更資料庫的全域名稱
<a name="Appendix.Oracle.CommonDBATasks.RenamingGlobalName"></a>

若要變更資料庫的全域名稱，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.rename_global_name`。`rename_global_name` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_new_global_name`  |  varchar2  |  —  |  是  |  資料庫的新全域名稱。  | 

必須開啟資料庫，才會發生名稱變更。如需變更資料庫全域名稱的詳細資訊，請參閱 Oracle 文件中的 [ALTER DATABASE](http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_1004.htm#SQLRF52547)。

下列範例會將資料庫的全域名稱變更為 `new_global_name`。

```
EXEC rdsadmin.rdsadmin_util.rename_global_name(p_new_global_name => 'new_global_name');
```

# 在 RDS for Oracle 中使用資料表空間
<a name="Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles"></a>

您可以搭配 RDS for Oracle 使用資料表空間，RDS for Oracle 是存放資料庫資料的邏輯儲存單位。

**重要**  
如果您的資料庫執行個體有複本，建議您使用參數群組設定，而不是工作階段層級變更來管理預設檔案位置。主要執行個體中預設檔案位置的工作階段層級變更不會自動反映在複本中。使用參數群組設定可確保主要執行個體和複本執行個體的檔案位置一致。

**Topics**
+ [在 RDS for Oracle 中指定資料庫檔案位置](#Appendix.Oracle.CommonDBATasks.DatabaseFileLocations)
+ [在 RDS for Oracle 中建立和調整資料表空間的大小](#Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles)
+ [在 RDS for Oracle 中的其他儲存磁碟區上建立資料表空間](#Appendix.Oracle.CommonDBATasks.CreatingTablespacesWithFileLocations)
+ [在 RDS for Oracle 中設定預設資料表空間](#Appendix.Oracle.CommonDBATasks.SettingDefaultTablespace)
+ [在 RDS for Oracle 中設定預設暫存資料表空間](#Appendix.Oracle.CommonDBATasks.SettingDefTempTablespace)
+ [在執行個體儲存體上建立暫存資料表空間](#Appendix.Oracle.CommonDBATasks.creating-tts-instance-store)

## 在 RDS for Oracle 中指定資料庫檔案位置
<a name="Appendix.Oracle.CommonDBATasks.DatabaseFileLocations"></a>

RDS for Oracle 使用 Oracle 受管檔案 (OMF) 來命名資料庫檔案。當您建立資料庫檔案時，資料庫會根據`DB_CREATE_FILE_DEST`初始化參數的目前設定衍生 設定。

`DB_CREATE_FILE_DEST` 初始化參數的預設值`/rdsdbdata/db`適用於獨立資料庫和`/rdsdbdata/db/pdb`容器化 (CDB/MT) 架構。如果您的資料庫執行個體有其他儲存磁碟區，您可以將 `DB_CREATE_FILE_DEST`設定為磁碟區位置。例如，如果您的執行個體在 上掛載了磁碟區`/rdsdbdata/db`，您可以將 `DB_CREATE_FILE_DEST` 設定為此值。

您可以在工作階段層級或 Oracle 資料庫執行個體層級修改 `DB_CREATE_FILE_DEST` 參數。

### 在執行個體層級修改 DB\$1CREATE\$1FILE\$1SET
<a name="Appendix.Oracle.CommonDBATasks.InstanceLevelModification"></a>

若要在執行個體層級修改 參數，請更新指派給資料庫執行個體之參數群組中的 參數，並將其套用。如需詳細資訊，請參閱[RDS for Oracle 初始化參數](Oracle.Concepts.FeatureSupport.Parameters.md)及[修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

### 在工作階段層級修改 DB\$1CREATE\$1FILE\$1DEST
<a name="Appendix.Oracle.CommonDBATasks.SessionLevelModification"></a>

您可以執行 `ALTER SESSION`陳述式，在工作階段層級修改 參數。當您想要在特定工作階段的特定位置建立資料庫檔案，而不會影響整個執行個體時，此方法非常有用。

下列範例顯示如何檢查目前的參數值，並修改工作階段的參數值：

```
SHOW PARAMETER db_create_file_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string      /rdsdbdata/db

ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';

Session altered.

SHOW PARAMETER db_create_file_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string      /rdsdbdata2/db
```

## 在 RDS for Oracle 中建立和調整資料表空間的大小
<a name="Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles"></a>

當您建立資料表空間時，資料庫會在建立時`DB_CREATE_FILE_DEST`初始化參數指定的儲存磁碟區中建立資料檔案。依預設，如果未指定資料檔案大小，則資料表空間建立時會使用預設值 `AUTOEXTEND ON`，並且沒有大小上限。在下列範例中，資料表空間 *users1* 是可自動擴展的。

```
CREATE TABLESPACE users1;
```

由於這些預設設定，資料表空間可能成長以致於耗用所有配置的儲存體。建議您對永久和暫存資料表空間指定適當的大小，並且謹慎監控空間使用情況。

下列範例會建立名為 *users2* 的資料表空間，其中的起始大小為 1 GB。由於已指定資料檔案大小，但未指定 `AUTOEXTEND ON`，因此資料表空間無法自動擴展。

```
CREATE TABLESPACE users2 DATAFILE SIZE 1G;
```

下列範例會建立名為 *users3* 的資料表空間，其中的起始大小為 1 GB、開啟自動擴展，且大小上限為 10 GB：

```
CREATE TABLESPACE users3 DATAFILE SIZE 1G AUTOEXTEND ON MAXSIZE 10G;
```

下列範例會建立名為 *temp01* 的暫存資料表空間：

```
CREATE TEMPORARY TABLESPACE temp01;
```

`ALTER TABLESPACE` 可幫助您調整大型檔案資料表空間的大小，您可以用 KB (K)、MB (M)、GB (G) 或 TB (T) 來指定大小。下列範例會將名為 *users\$1bf* 的大型檔案資料表空間大小調整為 200 MB。

```
ALTER TABLESPACE users_bf RESIZE 200M;
```

下列範例會將額外的資料檔案新增至名為 *users\$1sf* 的小型檔案資料表空間。

```
ALTER TABLESPACE users_sf ADD DATAFILE SIZE 100000M AUTOEXTEND ON NEXT 250m MAXSIZE UNLIMITED;
```

## 在 RDS for Oracle 中的其他儲存磁碟區上建立資料表空間
<a name="Appendix.Oracle.CommonDBATasks.CreatingTablespacesWithFileLocations"></a>

若要在其他儲存體磁碟區上建立資料表空間，請將 `DB_CREATE_FILE_DEST` 參數修改為磁碟區位置。下列範例會將檔案位置設定為 `/rdsdbdata2/db`。

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';

Session altered.
```

在下列範例中，您會在其他磁碟區 上建立資料表空間`/rdsdbdata2/db`。

```
CREATE TABLESPACE new_tablespace DATAFILE SIZE 10G;

Tablespace created.

SELECT tablespace_name,file_id,file_name FROM dba_data_files
WHERE tablespace_name = 'NEW_TABLESPACE';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
NEW_TABLESPACE                     7 /rdsdbdata2/db/ORCL_A/datafile/o1_mf_newtable_a123b4c5_.dbf
```

若要建立小型檔案資料表空間，並將其資料檔案分散到不同的儲存磁碟區，請在建立資料檔案後將其新增至資料表空間。在下列範例中，您會使用 的預設位置中的資料檔案建立資料表空間`/rdsdbdata/db`。然後，您將預設目的地設定為 `/rdsdbdata/db2`。當您將資料檔案新增至新建立的資料表空間時，資料庫會將檔案存放在 中`/rdsdbdata/db2`。

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata/db';

Session altered.

CREATE SMALLFILE TABLESPACE smalltbs DATAFILE SIZE 10G;

Tablespace created.

SELECT tablespace_name,file_id,file_name FROM dba_data_files
WHERE tablespace_name = 'SMALLTBS';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
SMALLTBS                           8 /rdsdbdata/db/ORCL_A/datafile/o1_mf_smalltbs_n563yryk_.dbf

ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';

Session altered.

ALTER TABLESPACE smalltbs ADD DATAFILE SIZE 10G;

Tablespace altered.

SELECT tablespace_name,file_id,file_name FROM dba_data_files
WHERE tablespace_name = 'SMALLTBS';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
SMALLTBS                           8 /rdsdbdata/db/ORCL_A/datafile/o1_mf_smalltbs_n563yryk_.dbf
SMALLTBS                           9 /rdsdbdata2/db/ORCL_A/datafile/o1_mf_smalltbs_n564004g_.dbf
```

## 在 RDS for Oracle 中設定預設資料表空間
<a name="Appendix.Oracle.CommonDBATasks.SettingDefaultTablespace"></a>

若要設定預設的資料表空間，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.alter_default_tablespace`。`alter_default_tablespace` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `tablespace_name`  |  varchar  |  —  |  是  |  預設資料表空間的名稱。  | 

下列範例會將預設資料表空間設定為 *users2*：

```
EXEC rdsadmin.rdsadmin_util.alter_default_tablespace(tablespace_name => 'users2');
```

## 在 RDS for Oracle 中設定預設暫存資料表空間
<a name="Appendix.Oracle.CommonDBATasks.SettingDefTempTablespace"></a>

若要設定預設的暫存資料表空間，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.alter_default_temp_tablespace`。`alter_default_temp_tablespace` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `tablespace_name`  |  varchar  |  —  |  是  |  預設暫存資料表空間的名稱。  | 

下列範例會將預設的暫存資料表空間設定為 *temp01*。

```
EXEC rdsadmin.rdsadmin_util.alter_default_temp_tablespace(tablespace_name => 'temp01');
```

## 在執行個體儲存體上建立暫存資料表空間
<a name="Appendix.Oracle.CommonDBATasks.creating-tts-instance-store"></a>

若要在執行個體儲存體上建立暫存資料表空間，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace`。`create_inst_store_tmp_tblspace` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar  |  —  |  是  |  暫存資料表空間的名稱。  | 

下列範例會在執行個體儲存體中建立暫存資料表空間 *temp01*。

```
EXEC rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace(p_tablespace_name => 'temp01');
```

**重要**  
執行 `rdsadmin_util.create_inst_store_tmp_tblspace` 時，新建立的暫存資料表空間不會自動設為預設暫存資料表空間。若要將其設為預設值，請參閱 [在 RDS for Oracle 中設定預設暫存資料表空間](#Appendix.Oracle.CommonDBATasks.SettingDefTempTablespace)。

如需詳細資訊，請參閱[將暫存資料存放在 RDS for Oracle 執行個體儲存體中](CHAP_Oracle.advanced-features.instance-store.md)。

# 在 RDS for Oracle 中使用暫存檔
<a name="Appendix.Oracle.CommonDBATasks.using-tempfiles"></a>

## 將暫存檔新增至僅供讀取複本上的執行個體儲存體
<a name="Appendix.Oracle.CommonDBATasks.adding-tempfile-replica"></a>

當您在主要資料庫執行個體上建立暫存資料表空間時，僅供讀取複本不會建立暫存檔。假設出於以下原因之一，僅供讀取複本上存在空的暫存資料表空間：
+ 您已從僅供讀取複本的資料表空間捨棄暫存檔。如需詳細資訊，請參閱[捨棄僅供讀取複本上的暫存檔](Appendix.Oracle.CommonDBATasks.dropping-tempfiles-replica.md)。
+ 您已在主要資料庫執行個體上建立新的暫存資料表空間。在此情況下，RDS for Oracle 會將中繼資料同步至僅供讀取複本。

您可以將暫存檔新增至空的暫存資料表空間，並將暫存檔存放在執行個體儲存體中。若要在執行個體儲存體上建立暫存檔，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.add_inst_store_tempfile`。您只能在僅供讀取複本上使用此程序。 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar  |  —  |  是  |  僅供讀取複本上暫存資料表空間的名稱。  | 

在下列範例中，僅供讀取複本上存在空的暫存資料表空間 *temp01*。執行下列命令，為此資料表空間建立暫存檔，並將它存放在執行個體儲存體中。

```
EXEC rdsadmin.rdsadmin_util.add_inst_store_tempfile(p_tablespace_name => 'temp01');
```

如需詳細資訊，請參閱[將暫存資料存放在 RDS for Oracle 執行個體儲存體中](CHAP_Oracle.advanced-features.instance-store.md)。

# 捨棄僅供讀取複本上的暫存檔
<a name="Appendix.Oracle.CommonDBATasks.dropping-tempfiles-replica"></a>

您無法捨棄僅供讀取複本上的現有暫存資料表空間。您可以將僅供讀取複本上的暫存檔儲存體從 Amazon EBS 變更為執行個體儲存體，或從執行個體儲存體變更為 Amazon EBS。若要實現這些目標，請執行下列操作：

1. 捨棄僅供讀取複本上暫存資料表空間中的目前暫存檔。

1. 在不同的儲存體上建立新的暫存檔。

若要捨棄暫存檔，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util. drop_replica_tempfiles`。您只能在僅供讀取複本上使用此程序。`drop_replica_tempfiles` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar  |  —  |  是  |  僅供讀取複本上暫存資料表空間的名稱。  | 

假設名為 *temp01* 的暫存資料表空間位於僅供讀取複本的執行個體儲存體中。執行下列命令，捨棄此資料表空間中的所有暫存檔。

```
EXEC rdsadmin.rdsadmin_util.drop_replica_tempfiles(p_tablespace_name => 'temp01');
```

如需詳細資訊，請參閱[將暫存資料存放在 RDS for Oracle 執行個體儲存體中](CHAP_Oracle.advanced-features.instance-store.md)。

# 在 RDS for Oracle 中調整資料表空間、資料檔案和暫存檔的大小
<a name="Appendix.Oracle.CommonDBATasks.ResizeTempSpaceReadReplica"></a>

依預設，Oracle 資料表空間建立時會開啟自動擴展，並且沒有大小上限。由於這些預設設定，資料表空間有時可能會成長得太大。建議您對永久和暫存資料表空間指定適當的大小，並且謹慎監控空間使用情況。

## 調整永久資料表空間的大小
<a name="resizing-perm-tbs"></a>

若要調整 RDS for Oracle 資料庫執行個體中永久資料表空間的大小，請使用下列任一 Amazon RDS 程序：
+ `rdsadmin.rdsadmin_util.resize_datafile`
+ `rdsadmin.rdsadmin_util.autoextend_datafile`

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


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_data_file_id`  |  數字  |  —  |  是  |  要調整大小的資料檔案識別符。  | 
|  `p_size`  |  varchar2  |  —  |  是  |  資料檔案的大小。以位元組 (預設)、KB (K)、MB (M) 或 GB (G) 為單位指定大小。  | 

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


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_data_file_id`  |  數字  |  —  |  是  |  要調整大小的資料檔案識別符。  | 
|  `p_autoextend_state`  |  varchar2  |  —  |  是  |  自動擴展功能的狀態。指定 `ON` 以自動擴展資料檔案，以及指定 `OFF` 以關閉自動擴展。  | 
|  `p_next`  |  varchar2  |  —  |  否  |  下一個資料檔案增量的大小。以位元組 (預設)、KB (K)、MB (M) 或 GB (G) 為單位指定大小。  | 
|  `p_maxsize`  |  varchar2  |  —  |  否  |  允許自動擴展的磁碟空間上限。以位元組 (預設)、KB (K)、MB (M) 或 GB (G) 為單位指定大小。您可以指定 `UNLIMITED` 來移除檔案大小限制。  | 

下列範例會將資料檔案 4 的大小調整為 500 MB。

```
EXEC rdsadmin.rdsadmin_util.resize_datafile(4,'500M');
```

下列範例會關閉資料檔案 4 的自動擴展。它也會開啟資料檔案 5 的自動擴展，增量為 128 MB 且沒有大小上限。

```
EXEC rdsadmin.rdsadmin_util.autoextend_datafile(4,'OFF');
EXEC rdsadmin.rdsadmin_util.autoextend_datafile(5,'ON','128M','UNLIMITED');
```

## 調整暫存資料表空間的大小
<a name="resizing-temp-tbs"></a>

若要調整 RDS for Oracle 資料庫執行個體中者存資料表空間的大小，包括僅供讀取複本，請使用下列任一 Amazon RDS 程序：
+ `rdsadmin.rdsadmin_util.resize_temp_tablespace`
+ `rdsadmin.rdsadmin_util.resize_tempfile`
+ `rdsadmin.rdsadmin_util.autoextend_tempfile`

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


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_temp_tablespace_name`  |  varchar2  |  —  |  是  |  要調整大小的暫時資料表空間的名稱。  | 
|  `p_size`  |  varchar2  |  —  |  是  |  資料表空間的大小。以位元組 (預設)、KB (K)、MB (M) 或 GB (G) 為單位指定大小。  | 

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


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_temp_file_id`  |  數字  |  —  |  是  |  要調整大小的暫存檔識別符。  | 
|  `p_size`  |  varchar2  |  —  |  是  |  暫存檔的大小。以位元組 (預設)、KB (K)、MB (M) 或 GB (G) 為單位指定大小。  | 

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


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_temp_file_id`  |  數字  |  —  |  是  |  要調整大小的暫存檔識別符。  | 
|  `p_autoextend_state`  |  varchar2  |  —  |  是  |  自動擴展功能的狀態。指定 `ON` 以自動擴展暫存檔，以及指定 `OFF` 以關閉自動擴展。  | 
|  `p_next`  |  varchar2  |  —  |  否  |  下一個暫存檔增量的大小。以位元組 (預設)、KB (K)、MB (M) 或 GB (G) 為單位指定大小。  | 
|  `p_maxsize`  |  varchar2  |  —  |  否  |  允許自動擴展的磁碟空間上限。以位元組 (預設)、KB (K)、MB (M) 或 GB (G) 為單位指定大小。您可以指定 `UNLIMITED` 來移除檔案大小限制。  | 

下列範例會將名為 `TEMP` 的暫存資料表空間大小調整為 4 GB。

```
EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('TEMP','4G');
```

```
EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('TEMP','4096000000');
```

下列範例會根據檔案識別符為 `1` 的暫存檔，將暫時資料表空間大小調整為 2 MB。

```
EXEC rdsadmin.rdsadmin_util.resize_tempfile(1,'2M');
```

下列範例會關閉暫存檔 1 的自動擴展。它還將暫存檔 2 的自動擴展大小上限設定為 10 GB，增量為 100 MB。

```
EXEC rdsadmin.rdsadmin_util.autoextend_tempfile(1,'OFF');
EXEC rdsadmin.rdsadmin_util.autoextend_tempfile(2,'ON','100M','10G');
```

如需有關 Oracle 資料庫執行個體的僅供讀取複本的詳細資訊，請參閱 [使用適用於 Amazon RDS for Oracel 的僅供讀取複本](oracle-read-replicas.md)。

# 在 RDS for Oracle 中的儲存磁碟區之間移動資料
<a name="Appendix.Oracle.CommonDBATasks.MovingDataBetweenVolumes"></a>

您可以在主要和其他儲存磁碟區之間移動資料檔案和資料庫物件。移動資料之前，請考慮下列幾點：
+ 來源和目標磁碟區必須有足夠的可用空間。
+ 資料移動操作會在兩個磁碟區上使用 I/O。
+ 大型資料移動可能會影響資料庫效能。
+ 如果您還原快照，如果資料受到 EBS 延遲載入影響，則在儲存磁碟區之間移動資料可能會緩慢。

**Topics**
+ [在 RDS for Oracle 中的磁碟區之間移動資料檔案](#Appendix.Oracle.CommonDBATasks.MovingDatafiles)
+ [在 RDS for Oracle 中的磁碟區之間移動資料表資料和索引](#Appendix.Oracle.CommonDBATasks.MovingTableData)
+ [使用其他磁碟區管理 LOB 儲存](#Appendix.Oracle.CommonDBATasks.ManagingLargeLOBStorage)

## 在 RDS for Oracle 中的磁碟區之間移動資料檔案
<a name="Appendix.Oracle.CommonDBATasks.MovingDatafiles"></a>

若要在儲存磁碟區之間移動資料檔案，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.move_datafile`。請注意以下要求：
+ 您必須使用 Oracle Enterprise Edition 來執行`move_datafile`程序。
+ 您無法移動資料表空間 `SYSTEM`和 `RDSADMIN`。

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


****  

| 參數名稱 | 資料類型 | 必要 | 描述 | 
| --- | --- | --- | --- | 
|  `p_data_file_id`  |  數字  |  是  |  要移動的資料檔案 ID。  | 
|  `p_location`  |  varchar2  |  是  |  您要移動資料檔案的儲存磁碟區。  | 

下列範例會將資料表空間從預設磁碟區移至`rdsdbdata`額外的磁碟區 `rdsdbdata2`。

```
SQL> SELECT tablespace_name,file_id,file_name FROM dba_data_files
 WHERE tablespace_name = 'MYNEWTABLESPACE';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
MYNEWTABLESPACE                    6 /rdsdbdata/db/ORCL_A/datafile/o1_mf_mynewtab_n123abcd_.dbf

EXECUTE rdsadmin.rdsadmin_util.move_datafile( 6, 'rdsdbdata2');

PL/SQL procedure successfully completed.

SQL> SELECT tablespace_name,file_id,file_name FROM dba_data_files
  WHERE tablespace_name = 'MYNEWTABLESPACE';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
MYNEWTABLESPACE                    6 /rdsdbdata2/db/ORCL_A/datafile/o1_mf_mynewtab_n356efgh_.dbf
```

## 在 RDS for Oracle 中的磁碟區之間移動資料表資料和索引
<a name="Appendix.Oracle.CommonDBATasks.MovingTableData"></a>

您可以在其他儲存磁碟區上建立資料表空間，以最佳化資料庫儲存。然後，您可以使用標準 Oracle SQL 將資料表、索引和分割區等物件移至這些資料表空間。當您的資料庫包含具有不同存取模式的資料時，這種方法對於效能調校很有用。例如，您可以將經常存取的操作資料存放在高效能儲存磁碟區上，同時將很少存取的歷史資料移至成本較低的儲存磁碟區。

在下列範例中，您會在高效能磁碟區 上建立新的資料表空間`rdsdbdata2`。然後在資料表上線時，將資料表移至額外的儲存磁碟區。您也可以將索引移至相同的磁碟區。在上線時移動資料表和重建索引需要 Oracle Enterprise Edition。

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';
CREATE TABLESPACE perf_tbs DATAFILE SIZE 10G;

ALTER TABLE employees
  MOVE TABLESPACE perf_tbs ONLINE;

ALTER INDEX employees_idx
  REBUILD ONLINE TABLESPACE perf_tbs;
```

在下列範例中，您會在低成本磁碟區上建立資料表空間。然後，您可以使用線上操作將資料表分割區移至低成本儲存磁碟區。

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata3/db';
CREATE TABLESPACE hist_tbs DATAFILE SIZE 10G;

ALTER TABLE orders
  MOVE PARTITION orders_2022
  TABLESPACE hist_tbs ONLINE;
```

在下列範例中，您會查詢作用中工作階段的長操作。

```
SELECT sid,opname,sofar,totalwork,time_remaining,elapsed_seconds 
  FROM v$session_longops 
  WHERE time_remaining > 0;
```

您可以使用下列查詢來檢查資料表空間用量。

```
SELECT tablespace_name, used_percent
  FROM dba_tablespace_usage_metrics
  ORDER BY used_percent DESC;
```

## 使用其他磁碟區管理 LOB 儲存
<a name="Appendix.Oracle.CommonDBATasks.ManagingLargeLOBStorage"></a>

您的資料庫可能包含具有 BLOB 或 CLOB 物件的資料表，這些物件會耗用大量儲存空間，但不常存取。若要最佳化儲存，您可以將這些 LOB 區段重新放置到額外儲存磁碟區的資料表空間。

在下列範例中，您會在用於低存取資料的低成本磁碟區上建立 LOB 資料的資料表空間。然後，建立將資料存放在此磁碟區的資料表。

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata3/db';
CREATE TABLESPACE lob_data DATAFILE SIZE 5G AUTOEXTEND ON NEXT 1G;

CREATE TABLE documents (
    doc_id NUMBER PRIMARY KEY,
    doc_date DATE,
    doc_content CLOB
) TABLESPACE user_data
LOB(doc_content) STORE AS (TABLESPACE lob_data);
```

# 在 RDS for Oracle 中使用外部資料表
<a name="Appendix.Oracle.CommonDBATasks.External_Tables"></a>

*Oracle 外部資料表*，指的是該資料表所具有的資料不在資料庫中。反而資料是位在資料庫可以存取的外部檔案中。您可以使用外部資料表來存取資料，而不需將資料載入資料庫。如需外部資料表的詳細資訊，請參閱 Oracle 文件中的[管理外部資料表](http://docs.oracle.com/database/121/ADMIN/tables.htm#ADMIN01507)。

您可以使用 Amazon RDS 在目錄物件中儲存外部資料表檔案。您可以建立目錄物件，也可以使用 Oracle 資料庫中預先定義的目錄物件，例如 DATA\$1PUMP\$1DIR 目錄。如需建立目錄物件的詳細資訊，請參閱 [在主要資料儲存空間中建立和捨棄目錄](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.NewDirectories)。您可以查詢 ALL\$1DIRECTORIES 檢視，來列出您 Amazon RDS Oracle 資料庫執行個體的目錄物件。

**注意**  
目錄物件會指向您執行個體使用的主要資料儲存空間 (Amazon EBS 磁碟區)。根據配置的儲存體來計算的已使用空間 (以及資料檔案、重做日誌、稽核、追蹤和其他檔案)。

您可以使用 [DBMS\$1FILE\$1TRANSFER](https://docs.oracle.com/database/121/ARPLS/d_ftran.htm#ARPLS095) 套件或 [UTL\$1FILE](https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS069) 套件，在不同 Oracle 資料庫之間移動外部資料檔案。外部資料檔案會從來源資料庫上的目錄，移動至目的地資料庫上指定的目錄。如需使用 `DBMS_FILE_TRANSFER` 的相關資訊，請參閱 [使用 Oracle Data Pump 匯入](Oracle.Procedural.Importing.DataPump.md)。

移動外部資料檔案後，該檔案即可用來建立外部資料表。下列範例會建立採用 USER\$1DIR1 目錄中 `emp_xt_file1.txt` 檔案的外部資料表。

```
CREATE TABLE emp_xt (
  emp_id      NUMBER,
  first_name  VARCHAR2(50),
  last_name   VARCHAR2(50),
  user_name   VARCHAR2(20)
)
ORGANIZATION EXTERNAL (
  TYPE ORACLE_LOADER
  DEFAULT DIRECTORY USER_DIR1
  ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE
    FIELDS TERMINATED BY ','
    MISSING FIELD VALUES ARE NULL
    (emp_id,first_name,last_name,user_name)
  )
  LOCATION ('emp_xt_file1.txt')
)
PARALLEL
REJECT LIMIT UNLIMITED;
```

假設您要將 Amazon RDS Oracle 資料庫執行個體中的資料移動至外部資料表檔案。在此情況下，您可以透過建立外部資料表並從資料庫中的資料表選取資料，來填入外部資料檔案。例如，下列 SQL 陳述式會透過查詢資料庫中的 `orders_xt` 資料表來建立 `orders` 外部資料表。

```
CREATE TABLE orders_xt
  ORGANIZATION EXTERNAL
   (
     TYPE ORACLE_DATAPUMP
     DEFAULT DIRECTORY DATA_PUMP_DIR
     LOCATION ('orders_xt.dmp')
   )
   AS SELECT * FROM orders;
```

在此範例中，資料會填入 DATA\$1PUMP\$1DIR 目錄中的 `orders_xt.dmp` 檔案。

# 設定資料庫的檢查點
<a name="Appendix.Oracle.CommonDBATasks.CheckpointingDatabase"></a>

若要設定資料庫的檢查點，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.checkpoint`。`checkpoint` 程序沒有參數。

下列範例會設定資料庫的檢查點。

```
EXEC rdsadmin.rdsadmin_util.checkpoint;
```

# 設定分散式復原
<a name="Appendix.Oracle.CommonDBATasks.SettingDistributedRecovery"></a>

若要設定分散式復原，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.enable_distr_recovery` 和 `disable_distr_recovery`。這些程序沒有參數。

下列範例會啟用分散式復原。

```
EXEC rdsadmin.rdsadmin_util.enable_distr_recovery;
```

下列範例會停用分散式復原。

```
EXEC rdsadmin.rdsadmin_util.disable_distr_recovery;
```

# 設定資料庫時區
<a name="Appendix.Oracle.CommonDBATasks.TimeZoneSupport"></a>

您可以使用下列方式設定 Amazon RDS Oracle 資料庫的時區：
+ `Timezone` 選項

  `Timezone` 選項會在主機層級變更時區並且會影響所有日期欄和值，例如 `SYSDATE`。如需更多詳細資訊，請參閱 [Oracle 時區](Appendix.Oracle.Options.Timezone.md)。
+ Amazon RDS 程序 `rdsadmin.rdsadmin_util.alter_db_time_zone`

  `alter_db_time_zone` 程序只會變更某些資料類型的時區，並且不會變更 `SYSDATE`。[Oracle 文件](http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm#i1006705)中列出了設定時區的額外限制。

**注意**  
您也可以設定「Oracle 排程器」的預設時區。如需更多詳細資訊，請參閱 [設定 Oracle Scheduler 任務的時區](Appendix.Oracle.CommonDBATasks.Scheduler.md#Appendix.Oracle.CommonDBATasks.Scheduler.TimeZone)。

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


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_new_tz`  |  varchar2  |  —  |  是  |  此參數會以具名區域或國際標準時間 (UTC) 的絕對偏移量來表示新時區。有效的偏移範圍從 -12:00 至 \$114:00。  | 

下列範例會將時區變更為 UTC 加 3 小時。

```
EXEC rdsadmin.rdsadmin_util.alter_db_time_zone(p_new_tz => '+3:00');
```

下列範例會將時區變更為非洲/阿爾及爾時區。

```
EXEC rdsadmin.rdsadmin_util.alter_db_time_zone(p_new_tz => 'Africa/Algiers');
```

使用 `alter_db_time_zone` 程序更改時區後，您必須重新啟動資料庫執行個體，變更才會生效。如需更多詳細資訊，請參閱 [在資料庫執行個體](USER_RebootInstance.md)。如需升級時區的相關資訊，請參閱[時區考量](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.DST)。

# 使用自動工作負載儲存庫 (AWR) 產生效能報告。
<a name="Appendix.Oracle.CommonDBATasks.AWR"></a>

若要收集效能資料並產生報告，Oracle 建議您使用自動工作負載儲存庫 (AWR)。AWR 需要 Oracle Database Enterprise Edition 以及診斷和調整套件的授權。若要啟用 AWR，請將 `CONTROL_MANAGEMENT_PACK_ACCESS` 初始化參數設定為 `DIAGNOSTIC` 或 `DIAGNOSTIC+TUNING`。

## 在 RDS 中使用 AWR 報告
<a name="Appendix.Oracle.CommonDBATasks.AWRTechniques"></a>

若要產生 AWR 報告，您可以執行指令碼，例如 `awrrpt.sql`。這些指令碼會安裝在資料庫主機伺服器上。在 Amazon RDS 中，您不能直接存取主機。不過，您可以從另一個 Oracle 資料庫安裝版本取得 SQL 指令碼的複本。

您也可以執行 `SYS.DBMS_WORKLOAD_REPOSITORY` PL/SQL 套件中的程序來使用 AWR。您可以使用此套件來管理基準和快照，也可以用來顯示 ASH 和 AWR 報告。例如，若要以文字格式產生 AWR 報告，請執行 `DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT` 程序。不過，您無法從 AWS 管理主控台連上這些 AWR 報告。

使用 AWR 時，我們建議您使用 `rdsadmin.rdsadmin_diagnostic_util` 程序。您可以使用這些程序來產生下列項目：
+ AWR 報告
+ 作用中工作階段歷史記錄 (ASH) 報告
+ 自動資料庫診斷監控 (ADDM) 報告
+ AWR 資料的 Oracle 資料匯出傾印檔案

`rdsadmin_diagnostic_util` 程序會將報告儲存至資料庫執行個體檔案系統。您可以從主控台存取這些報告。您也可以使用 `rdsadmin.rds_file_util` 程序來存取報告，而且可以使用 S3 整合選項來存取複製到 Amazon S3 的報告。如需更多詳細資訊，請參閱 [讀取資料庫執行個體目錄中的檔案](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles) 及 [Amazon S3 整合](oracle-s3-integration.md)。

您可以在下列 Amazon RDS for Oracle 資料庫引擎版本中使用 `rdsadmin_diagnostic_util` 程序：
+ 所有 Oracle Database 21c 版本
+ 19.0.0.0.ru-2020-04.rur-2020-04.r1 及更新的 Oracle Database 19c 版本

如需說明如何在複寫案例中使用診斷報告的部落格，請參閱[為 Amazon RDS for Oracle 僅供讀取複本產生 AWR 報告](https://aws.amazon.com/blogs/database/generate-awr-reports-for-amazon-rds-for-oracle-read-replicas/)。

## 診斷公用程式套件的常見參數
<a name="Appendix.Oracle.CommonDBATasks.CommonAWRParam"></a>

透過 `rdsadmin_diagnostic_util` 套件管理 AWR 和 ADDM 時，通常會使用下列參數。

<a name="rds-provisioned-iops-storage-range-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.AWR.html)

透過 rdsadmin\$1diagnostic\$1util 套件管理 ASH 時，您通常使用下列參數。

<a name="rds-provisioned-iops-storage-range-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.AWR.html)

## 產生 AWR 報告
<a name="Appendix.Oracle.CommonDBATasks.GenAWRReport"></a>

若要產生 AWR 報告，請使用 `rdsadmin.rdsadmin_diagnostic_util.awr_report` 程序。

下列範例會產生快照範圍 101–106 的 AWR 報告。輸出文字檔案命名為 `awrrpt_101_106.txt`。您可以從 AWS 管理主控台存取此報告。

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_report(101,106,'TEXT');
```

下列範例會產生快照範圍 63–65 的 HTML 報告。輸出的 HTML 檔案命名為 `awrrpt_63_65.html`。此程序會將報告寫入名為 `AWR_RPT_DUMP` 的非預設資料庫目錄。

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_report(63,65,'HTML','AWR_RPT_DUMP');
```

## 將 AWR 資料擷取至傾印檔案
<a name="Appendix.Oracle.CommonDBATasks.ExtractAWR"></a>

若要將 AWR 資料擷取至傾印檔案，請使用 `rdsadmin.rdsadmin_diagnostic_util.awr_extract` 程序。您只能在 PDB 層級使用此函數。

下列範例會擷取快照集範圍 101–106。輸出傾印檔案命名為 `awrextract_101_106.dmp`。您可以透過主控台存取此檔案。

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_extract(101,106);
```

下列範例會擷取快照範圍 63–65。輸出傾印檔案命名為 `awrextract_63_65.dmp`。檔案存放在名為 `AWR_RPT_DUMP` 的非預設資料庫目錄中。

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_extract(63,65,'AWR_RPT_DUMP');
```

## 產生 ADDM 報告
<a name="Appendix.Oracle.CommonDBATasks.ADDM"></a>

若要產生 ADDM 報告，請使用 `rdsadmin.rdsadmin_diagnostic_util.addm_report` 程序。

下列範例會產生快照範圍 101–106 的 ADDM 報告。輸出文字檔案命名為 `addmrpt_101_106.txt`。您可以透過主控台存取報告。

```
EXEC rdsadmin.rdsadmin_diagnostic_util.addm_report(101,106);
```

下列範例會產生快照範圍 63–65 的 ADDM 報告。輸出文字檔案命名為 `addmrpt_63_65.txt`。檔案存放在名為 `ADDM_RPT_DUMP` 的非預設資料庫目錄中。

```
EXEC rdsadmin.rdsadmin_diagnostic_util.addm_report(63,65,'ADDM_RPT_DUMP');
```

## 產生 ASH 報告
<a name="Appendix.Oracle.CommonDBATasks.ASH"></a>

若要產生 ASH 報告，請使用 `rdsadmin.rdsadmin_diagnostic_util.ash_report` 程序。

下列範例會產生 ASH 報告，其中包含 14 分鐘前到目前時間的資料。輸出檔案的名稱使用格式 `ashrptbegin_timeend_time.txt`，其中 `begin_time` 和 `end_time` 使用格式 `YYYYMMDDHH24MISS`。您可以透過主控台存取該檔案。

```
BEGIN
    rdsadmin.rdsadmin_diagnostic_util.ash_report(
        begin_time     =>     SYSDATE-14/1440,
        end_time       =>     SYSDATE,
        report_type    =>     'TEXT');
END;
/
```

下列範例會產生 ASH 報告，其中包含 2019 年 11 月 18 日下午 6 時 07 分至 2019 年 11 月 18 日下午 6 時 15 分的資料。輸出 HTML 報告的名稱為 `ashrpt_20190918180700_20190918181500.html`。報告存放在名為 `AWR_RPT_DUMP` 的非預設資料庫目錄中。

```
BEGIN
    rdsadmin.rdsadmin_diagnostic_util.ash_report(
        begin_time     =>    TO_DATE('2019-09-18 18:07:00', 'YYYY-MM-DD HH24:MI:SS'),
        end_time       =>    TO_DATE('2019-09-18 18:15:00', 'YYYY-MM-DD HH24:MI:SS'),
        report_type    =>    'html',
        dump_directory =>    'AWR_RPT_DUMP');
END;
/
```

## 從主控台或 CLI 存取 AWR 報告
<a name="Appendix.Oracle.CommonDBATasks.AWRConsole"></a>

若要存取 AWR 報告或匯出傾印檔案，您可以使用 AWS 管理主控台 或 AWS CLI。如需詳細資訊，請參閱[下載資料庫日誌檔案](USER_LogAccess.Procedural.Downloading.md)。

# 調整資料庫連結以搭配使用 VPC 中的資料庫執行個體
<a name="Appendix.Oracle.CommonDBATasks.DBLinks"></a>

若要使用 Oracle 資料庫連結搭配相同 Virtual Private Cloud (VPC) 或對等 VPC 內的 Amazon RDS 資料庫執行個體，兩個資料庫執行個體之間應具備有效路由。請使用您的 VPC 路由資料表和網路存取控制清單 (ACL)，來驗證資料庫執行個體之間的有效路由。

這兩個資料庫執行個體的安全群組，皆必須允許輸入和輸出到其他資料庫執行個體。傳入和傳出規則可以參考相同 VPC 或對等連接 VPC 的安全群組。如需詳細資訊，請參閱[更新您的安全群組以參考對等連接的 VPC 安全群組](https://docs.aws.amazon.com/vpc/latest/peering/working-with-vpc-peering.html#vpc-peering-security-groups)。

如果已使用您 VPC 中的 DHCP 選項集設定了自訂 DNS 伺服器，您的自訂 DNS 伺服器就必須可解析資料庫連結目標的名稱。如需更多詳細資訊，請參閱 [設定自訂 DNS 伺服器](Appendix.Oracle.CommonDBATasks.System.md#Appendix.Oracle.CommonDBATasks.CustomDNS)。

如需使用資料庫連結搭配 Oracle Data Pump 的詳細資訊，請參閱 [使用 Oracle Data Pump 匯入](Oracle.Procedural.Importing.DataPump.md)。

# 設定資料庫執行個體的預設版本
<a name="Appendix.Oracle.CommonDBATasks.DefaultEdition"></a>

您可以重新定義稱為版本的私有環境中的資料庫物件。您可以使用版本式重新定義來升級應用程式的資料庫物件，只需要最短的停機時間。

您可以使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.alter_default_edition` 來設定 Amazon RDS Oracle 資料庫執行個體的預設版本。

下列範例會將 Amazon RDS Oracle 資料庫執行個體的預設版本設定為 `RELEASE_V1`。

```
EXEC rdsadmin.rdsadmin_util.alter_default_edition('RELEASE_V1');
```

下列範例會將 Amazon RDS Oracle 資料庫執行個體的預設版本設定回 Oracle 預設值。

```
EXEC rdsadmin.rdsadmin_util.alter_default_edition('ORA$BASE');
```

如需 Oracle 版本式重新定義的詳細資訊，請參閱 Oracle 文件中的[關於版本和版本式重新定義](https://docs.oracle.com/database/121/ADMIN/general.htm#ADMIN13167)。

# 為 SYS.AUD\$1 資料表啟用稽核
<a name="Appendix.Oracle.CommonDBATasks.EnablingAuditing"></a>

若要在 `SYS.AUD$` 資料庫稽核線索資料表上啟用稽核功能，請使用 `rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table` 程序 Amazon RDS。`ALL` 是唯一支援的稽核屬性，您無法選擇是否稽核個別陳述式或操作。

執行下列版本的 Oracle 資料庫執行個體皆支援啟用稽核功能：
+ Oracle Database 21c (21.0.0)
+ Oracle 資料庫 19c (19.0.0)

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


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_by_access`  |  布林值  |  true  |  否  |  設定 `true` 可稽核 `BY ACCESS`。設定 `false` 可稽核 `BY SESSION`。  | 

下列查詢會傳回資料庫中 `SYS.AUD$` 目前的稽核組態。

```
SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER='SYS' AND OBJECT_NAME='AUD$';
```

下列命令會在 `ALL` `SYS.AUD$` 上啟用`BY ACCESS` 的稽核功能。

```
EXEC rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table;

EXEC rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table(p_by_access => true);
```

下列命令會在 `ALL` `SYS.AUD$` 上啟用`BY SESSION` 的稽核功能。

```
EXEC rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table(p_by_access => false);
```

如需詳細資訊，請參閱 Oracle 文件中的 [AUDIT (傳統稽核功能)](https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/AUDIT-Traditional-Auditing.html#GUID-ADF45B07-547A-4096-8144-50241FA2D8DD)。

# 為 SYS.AUD\$1 資料表停用稽核
<a name="Appendix.Oracle.CommonDBATasks.DisablingAuditing"></a>

若要在 `SYS.AUD$` 資料庫稽核線索資料表上停用稽核功能，請使用 `rdsadmin.rdsadmin_master_util.noaudit_all_sys_aud_table` 程序 Amazon RDS。這個程序不需採用任何參數。

下列查詢會傳回資料庫中 `SYS.AUD$` 目前的稽核組態：

```
SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER='SYS' AND OBJECT_NAME='AUD$';
```

下列命令會在 `ALL` 上停用`SYS.AUD$` 的稽核功能。

```
EXEC rdsadmin.rdsadmin_master_util.noaudit_all_sys_aud_table;
```

如需詳細資訊，請參閱 Oracle 文件中的 [NOAUDIT (傳統稽核功能)](https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/NOAUDIT-Traditional-Auditing.html#GUID-9D8EAF18-4AB3-4C04-8BF7-37BD0E15434D)。

# 清除中斷的線上索引建置
<a name="Appendix.Oracle.CommonDBATasks.CleanupIndex"></a>

若要清除失敗的線上索引建置，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_dbms_repair.online_index_clean`。

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


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `object_id`  |  binary\$1integer  |  `ALL_INDEX_ID`  |  否  |  索引的物件 ID。通常，您可以使用來自 ORA-08104 錯誤文字的物件 ID。  | 
|  `wait_for_lock`  |  binary\$1integer  |  `rdsadmin.rdsadmin_dbms_repair.lock_wait`  |  否  |  指定 `rdsadmin.rdsadmin_dbms_repair.lock_wait` (預設值)，來嘗試取得對基礎物件的鎖定，並在鎖定失敗時，重試直到達到內部限制為止。 指定 `rdsadmin.rdsadmin_dbms_repair.lock_nowait`，來嘗試取得對基礎物件的鎖定，但若鎖定失敗，不會重試。  | 

下列範例清除失敗的線上索引建置：

```
declare
  is_clean boolean;
begin
  is_clean := rdsadmin.rdsadmin_dbms_repair.online_index_clean(
    object_id     => 1234567890, 
    wait_for_lock => rdsadmin.rdsadmin_dbms_repair.lock_nowait
  );
end;
/
```

如需詳細資訊，請參閱 Oracle 文件中的 [ONLINE\$1INDEX\$1CLEAN 函式](https://docs.oracle.com/database/121/ARPLS/d_repair.htm#ARPLS67555)。

# 略過損毀的區塊
<a name="Appendix.Oracle.CommonDBATasks.SkippingCorruptBlocks"></a>

若要在索引和資料表掃描期間略過損毀的區塊，請使用 `rdsadmin.rdsadmin_dbms_repair` 套件。

下列程序包裝 `sys.dbms_repair.admin_table` 程序的功能，而且不會採用任何參數：
+ `rdsadmin.rdsadmin_dbms_repair.create_repair_table`
+ `rdsadmin.rdsadmin_dbms_repair.create_orphan_keys_table`
+ `rdsadmin.rdsadmin_dbms_repair.drop_repair_table`
+ `rdsadmin.rdsadmin_dbms_repair.drop_orphan_keys_table`
+ `rdsadmin.rdsadmin_dbms_repair.purge_repair_table`
+ `rdsadmin.rdsadmin_dbms_repair.purge_orphan_keys_table`

下列程序會採用與其在 Oracle 資料庫 `DBMS_REPAIR` 套件中的對等項目相同的參數：
+ `rdsadmin.rdsadmin_dbms_repair.check_object`
+ `rdsadmin.rdsadmin_dbms_repair.dump_orphan_keys`
+ `rdsadmin.rdsadmin_dbms_repair.fix_corrupt_blocks`
+ `rdsadmin.rdsadmin_dbms_repair.rebuild_freelists`
+ `rdsadmin.rdsadmin_dbms_repair.segment_fix_status`
+ `rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks`

如需處理資料庫損毀的詳細資訊，請參閱 Oracle 文件中的 [DBMS\$1REPAIR](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_REPAIR.html#GUID-B8EC4AB3-4D6A-46C9-857F-4ED53CD9C948)。

**Example 回應損毀的區塊**  
此範例顯示回應損毀區塊的基本工作流程。您的步驟將取決於區塊損毀的位置和性質。  
嘗試修復損毀的區塊前，請仔細檢閱 [DBMS\$1REPAIR](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_REPAIR.html#GUID-B8EC4AB3-4D6A-46C9-857F-4ED53CD9C948) 文件。

**如何在索引和資料表掃描期間略過損毀的區塊**

1. 執行下列程序來建立修復資料表 (如果尚未存在的話)。

   ```
   EXEC rdsadmin.rdsadmin_dbms_repair.create_repair_table;
   EXEC rdsadmin.rdsadmin_dbms_repair.create_orphan_keys_table;
   ```

1. 執行下列程序來檢查是否存在現有記錄，並清除它們 (若適用)。

   ```
   SELECT COUNT(*) FROM SYS.REPAIR_TABLE;
   SELECT COUNT(*) FROM SYS.ORPHAN_KEY_TABLE;
   SELECT COUNT(*) FROM SYS.DBA_REPAIR_TABLE;
   SELECT COUNT(*) FROM SYS.DBA_ORPHAN_KEY_TABLE;
   
   EXEC rdsadmin.rdsadmin_dbms_repair.purge_repair_table;
   EXEC rdsadmin.rdsadmin_dbms_repair.purge_orphan_keys_table;
   ```

1. 執行下列程序來檢查是否存在損毀的區塊。

   ```
   SET SERVEROUTPUT ON
   DECLARE v_num_corrupt INT;
   BEGIN
     v_num_corrupt := 0;
     rdsadmin.rdsadmin_dbms_repair.check_object (
       schema_name => '&corruptionOwner',
       object_name => '&corruptionTable',
       corrupt_count =>  v_num_corrupt
     );
     dbms_output.put_line('number corrupt: '||to_char(v_num_corrupt));
   END;
   /
   
   COL CORRUPT_DESCRIPTION FORMAT a30
   COL REPAIR_DESCRIPTION FORMAT a30
   
   SELECT OBJECT_NAME, BLOCK_ID, CORRUPT_TYPE, MARKED_CORRUPT, 
          CORRUPT_DESCRIPTION, REPAIR_DESCRIPTION 
   FROM   SYS.REPAIR_TABLE;
   
   SELECT SKIP_CORRUPT 
   FROM   DBA_TABLES 
   WHERE  OWNER = '&corruptionOwner'
   AND    TABLE_NAME = '&corruptionTable';
   ```

1. 使用 `skip_corrupt_blocks` 程序，針對受影響的資料表啟用或停用損毀略過。您可能也需要根據情況，將資料擷取到新的資料表，然後捨棄包含損毀區塊的資料表。

   執行下列程序來對受影響的資料表啟用損毀略過。

   ```
   begin
     rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks (
       schema_name => '&corruptionOwner',
       object_name => '&corruptionTable',
       object_type => rdsadmin.rdsadmin_dbms_repair.table_object,
       flags => rdsadmin.rdsadmin_dbms_repair.skip_flag);
   end;
   /
   select skip_corrupt from dba_tables where owner = '&corruptionOwner' and table_name = '&corruptionTable';
   ```

   執行下列程序來啟用損毀略過。

   ```
   begin
     rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks (
       schema_name => '&corruptionOwner',
       object_name => '&corruptionTable',
       object_type => rdsadmin.rdsadmin_dbms_repair.table_object,
       flags => rdsadmin.rdsadmin_dbms_repair.noskip_flag);
   end;
   /
   
   select skip_corrupt from dba_tables where owner = '&corruptionOwner' and table_name = '&corruptionTable';
   ```

1. 當您完成所有修復作業時，請執行下列程序來捨棄修復資料表。

   ```
   EXEC rdsadmin.rdsadmin_dbms_repair.drop_repair_table;
   EXEC rdsadmin.rdsadmin_dbms_repair.drop_orphan_keys_table;
   ```

## 清除資源回收筒
<a name="Appendix.Oracle.CommonDBATasks.PurgeRecycleBin"></a>

當您丟棄資料表時，Oracle 資料庫不會立即移除其儲存空間。資料庫會重新命名該資料表，並將其和任何相關聯的物件放在資源回收筒中。清除資源回收筒會移除這些項目，並釋放其儲存空間。

若要清除整個資源回收筒，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.purge_dba_recyclebin`。不過，此程序無法清除 `SYS` 和 `RDSADMIN` 物件的資源回收筒。如果您需要清除這些物件，請聯絡 AWS Support。

下列範例會清除整個資源回收筒。

```
EXEC rdsadmin.rdsadmin_util.purge_dba_recyclebin;
```

# 設定完全修訂的預設顯示值
<a name="Appendix.Oracle.CommonDBATasks.FullRedaction"></a>

若要更改 Amazon RDS Oracle 執行個體上完全修訂的預設顯示值，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.dbms_redact_upd_full_rdct_val`。請注意，您可以使用 `DBMS_REDACT`PL/SQL 套裝建立修訂政策，如 Oracle 資料庫說明文件所述。`dbms_redact_upd_full_rdct_val` 程序會針對受現有政策影響的不同資料類型，指定其顯示的字元。

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


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_number_val`  |  number  |  Null  |  否  |  修改 `NUMBER` 資料類型資料欄的預設值。  | 
|  `p_binfloat_val`  |  binary\$1float  |  Null  |  否  |  修改 `BINARY_FLOAT` 資料類型資料欄的預設值。  | 
|  `p_bindouble_val`  |  binary\$1double  |  Null  |  否  |  修改 `BINARY_DOUBLE` 資料類型資料欄的預設值。  | 
|  `p_char_val`  |  char  |  Null  |  否  |  修改 `CHAR` 資料類型資料欄的預設值。  | 
|  `p_varchar_val`  |   varchar2  |  Null  |  否  |  修改 `VARCHAR2` 資料類型資料欄的預設值。  | 
|  `p_nchar_val`  |  nchar  |  Null  |  否  |  修改 `NCHAR` 資料類型資料欄的預設值。  | 
|  `p_nvarchar_val`  |  nvarchar2  |  Null  |  否  |  修改 `NVARCHAR2` 資料類型資料欄的預設值。  | 
|  `p_date_val`  |  date  |  Null  |  否  |  修改 `DATE` 資料類型資料欄的預設值。  | 
|  `p_ts_val`  |  timestamp  |  Null  |  否  |  修改 `TIMESTAMP` 資料類型資料欄的預設值。  | 
|  `p_tswtz_val`  |  timestamp with time zone  |  Null  |  否  |  修改 `TIMESTAMP WITH TIME ZONE` 資料類型資料欄的預設值。  | 
|  `p_blob_val`  |  blob  |  Null  |  否  |  修改 `BLOB` 資料類型資料欄的預設值。  | 
|  `p_clob_val`  |  clob  |  Null  |  否  |  修改 `CLOB` 資料類型資料欄的預設值。  | 
|  `p_nclob_val`  |  nclob  |  Null  |  否  |  修改 `NCLOB` 資料類型資料欄的預設值。  | 

以下範例將 `CHAR` 資料類型的預設修訂值更改為 \$1：

```
EXEC rdsadmin.rdsadmin_util.dbms_redact_upd_full_rdct_val(p_char_val => '*');
```

以下範例更改了 `NUMBER`、`DATE` 和 `CHAR` 資料類型的預設修訂值：

```
BEGIN
rdsadmin.rdsadmin_util.dbms_redact_upd_full_rdct_val(
    p_number_val=>1,
    p_date_val=>to_date('1900-01-01','YYYY-MM-DD'),
    p_varchar_val=>'X');
END;
/
```

使用 `dbms_redact_upd_full_rdct_val` 程序變更完整修訂的預設值後，必須重新啟動資料庫執行個體，變更才會生效。如需詳細資訊，請參閱[在資料庫執行個體](USER_RebootInstance.md)。

# 執行 Oracle 資料庫執行個體的一般日誌相關任務
<a name="Appendix.Oracle.CommonDBATasks.Log"></a>

您可以在下文中找到如何在執行 Oracle 的 Amazon RDS 資料庫執行個體上執行與記錄日誌相關的一般 DBA 任務。為了提供受管理的服務體驗，Amazon RDS 並不會提供資料庫執行個體的 Shell 存取權，而且會將存取權限制在某些需要進階權限的系統程序和資料表。

如需更多詳細資訊，請參閱 [Amazon RDS for Oracle 資料庫日誌檔案](USER_LogAccess.Concepts.Oracle.md)。

**Topics**
+ [設定強制記錄](#Appendix.Oracle.CommonDBATasks.SettingForceLogging)
+ [設定補充記錄](#Appendix.Oracle.CommonDBATasks.AddingSupplementalLogging)
+ [切換線上日誌檔案](#Appendix.Oracle.CommonDBATasks.SwitchingLogfiles)
+ [新增線上重做日誌](#Appendix.Oracle.CommonDBATasks.RedoLogs)
+ [捨棄線上重做日誌](#Appendix.Oracle.CommonDBATasks.DroppingRedoLogs)
+ [調整線上重做日誌的大小](Appendix.Oracle.CommonDBATasks.ResizingRedoLogs.md)
+ [保留封存的重做日誌](Appendix.Oracle.CommonDBATasks.RetainRedoLogs.md)
+ [存取線上和封存的重做日誌](Appendix.Oracle.CommonDBATasks.Log.Download.md)
+ [從 Amazon S3 下載封存的重做日誌](Appendix.Oracle.CommonDBATasks.download-redo-logs.md)

## 設定強制記錄
<a name="Appendix.Oracle.CommonDBATasks.SettingForceLogging"></a>

在強制記錄模式中，Oracle 會將所有變更記錄至資料庫，暫存資料表空間和暫存區段中的變更除外 (會忽略 `NOLOGGING` 子句)。如需詳細資訊，請參閱 Oracle 文件中的[指定 FORCE LOGGING 模式](https://docs.oracle.com/cd/E11882_01/server.112/e25494/create.htm#ADMIN11096)。

若要設定強制記錄，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.force_logging`。`force_logging` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 是 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_enable`  |  布林值  |  true  |  否  |  設定為 `true` 可將資料庫設為強制記錄模式，設定為 `false` 則可為資料庫解除強制記錄模式。  | 

下列範例會將資料庫設為強制記錄模式。

```
EXEC rdsadmin.rdsadmin_util.force_logging(p_enable => true);
```

## 設定補充記錄
<a name="Appendix.Oracle.CommonDBATasks.AddingSupplementalLogging"></a>

如果您啟用補充記錄，LogMiner 將具有支援鏈結資料列和叢集資料表的必要資訊。如需詳細資訊，請參閱 Oracle 文件中的[補充記錄](https://docs.oracle.com/cd/E11882_01/server.112/e22490/logminer.htm#SUTIL1582)。

Oracle 資料庫預設不會啟用補充記錄。若要啟用和停用補充記錄，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.alter_supplemental_logging`。如需 Amazon RDS 如何為 Oracle 資料庫執行個體管理已封存重做日誌保留的詳細資訊，請參閱 [保留封存的重做日誌](Appendix.Oracle.CommonDBATasks.RetainRedoLogs.md)。

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


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_action`  |  varchar2  |  —  |  是  |  `'ADD'` 可新增補充記錄，`'DROP'` 可捨棄補充記錄。  | 
|  `p_type`  |  varchar2  |  null  |  否  |  補充記錄的類型。有效值為 `'ALL'`、`'FOREIGN KEY'`、`'PRIMARY KEY'`、`'UNIQUE'` 或 `PROCEDURAL`。  | 

下列範例會啟用補充記錄。

```
begin
    rdsadmin.rdsadmin_util.alter_supplemental_logging(
        p_action => 'ADD');
end;
/
```

下列範例會為所有長度固定的最大資料欄啟用補充記錄。

```
begin
    rdsadmin.rdsadmin_util.alter_supplemental_logging(
        p_action => 'ADD',
        p_type   => 'ALL');
end;
/
```

下列範例會為主索引鍵資料欄啟用補充記錄。

```
begin
    rdsadmin.rdsadmin_util.alter_supplemental_logging(
        p_action => 'ADD',
        p_type   => 'PRIMARY KEY');
end;
/
```

## 切換線上日誌檔案
<a name="Appendix.Oracle.CommonDBATasks.SwitchingLogfiles"></a>

若要切換日誌檔案，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.switch_logfile`。`switch_logfile` 程序沒有參數。

下列範例會切換日誌檔案。

```
EXEC rdsadmin.rdsadmin_util.switch_logfile;
```

## 新增線上重做日誌
<a name="Appendix.Oracle.CommonDBATasks.RedoLogs"></a>

執行 Oracle 的 Amazon RDS 資料庫執行個體會從四個線上重做日誌開始，每個為 128 MB。若要新增額外的重做日誌，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.add_logfile`。

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

**注意**  
參數是互斥的。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `bytes`  |  正數  |  null  |  否  |  日誌檔案的大小 (以位元組為單位)。 只有在日誌的大小低於 2147483648 位元組 (2 GiB) 時，才使用此參數。否則，RDS 會發出錯誤。對於超過此位元組值的日誌大小，請改用 `p_size` 參數。  | 
|  `p_size`  |  varchar2  |  —  |  是  |  日誌檔案的大小以 KB (K)、MB (M) 或 GB (G) 為單位。  | 

下列命令會新增 100 MB 的日誌檔案。

```
EXEC rdsadmin.rdsadmin_util.add_logfile(p_size => '100M');
```

## 捨棄線上重做日誌
<a name="Appendix.Oracle.CommonDBATasks.DroppingRedoLogs"></a>

若要捨棄重做日誌，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.drop_logfile`。`drop_logfile` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `grp`  |  正數  |  —  |  是  |  日誌的群組編號。  | 

下列範例會捨棄群組編號 3 的日誌。

```
EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 3);
```

您只可以捨棄狀態為「未使用」或「非作用中」的日誌。下列範例會取得日誌的狀態。

```
SELECT GROUP#, STATUS FROM V$LOG;

GROUP#     STATUS
---------- ----------------
1          CURRENT
2          INACTIVE
3          INACTIVE
4          UNUSED
```

# 調整線上重做日誌的大小
<a name="Appendix.Oracle.CommonDBATasks.ResizingRedoLogs"></a>

執行 Oracle 的 Amazon RDS 資料庫執行個體會從四個線上重做日誌開始，每個為 128 MB。下列範例顯示如何使用 Amazon RDS 程序來調整您的日誌的大小，從每個 128 MB 到每個 512 MB。

```
/* Query V$LOG to see the logs.          */
/* You start with 4 logs of 128 MB each. */

SELECT GROUP#, BYTES, STATUS FROM V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
1          134217728  INACTIVE
2          134217728  CURRENT
3          134217728  INACTIVE
4          134217728  INACTIVE


/* Add four new logs that are each 512 MB */

EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912);
EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912);
EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912);
EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912);


/* Query V$LOG to see the logs. */ 
/* Now there are 8 logs.        */

SELECT GROUP#, BYTES, STATUS FROM V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
1          134217728  INACTIVE
2          134217728  CURRENT
3          134217728  INACTIVE
4          134217728  INACTIVE
5          536870912  UNUSED
6          536870912  UNUSED
7          536870912  UNUSED
8          536870912  UNUSED


/* Drop each inactive log using the group number. */

EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 1);
EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 3);
EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 4);


/* Query V$LOG to see the logs. */ 
/* Now there are 5 logs.        */

select GROUP#, BYTES, STATUS from V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
2          134217728  CURRENT
5          536870912  UNUSED
6          536870912  UNUSED
7          536870912  UNUSED
8          536870912  UNUSED


/* Switch logs so that group 2 is no longer current. */

EXEC rdsadmin.rdsadmin_util.switch_logfile;


/* Query V$LOG to see the logs.        */ 
/* Now one of the new logs is current. */

SQL>SELECT GROUP#, BYTES, STATUS FROM V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
2          134217728  ACTIVE
5          536870912  CURRENT
6          536870912  UNUSED
7          536870912  UNUSED
8          536870912  UNUSED


/* If the status of log 2 is still "ACTIVE", issue a checkpoint to clear it to "INACTIVE".  */

EXEC rdsadmin.rdsadmin_util.checkpoint;


/* Query V$LOG to see the logs.            */ 
/* Now the final original log is inactive. */

select GROUP#, BYTES, STATUS from V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
2          134217728  INACTIVE
5          536870912  CURRENT
6          536870912  UNUSED
7          536870912  UNUSED
8          536870912  UNUSED


# Drop the final inactive log.

EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 2);


/* Query V$LOG to see the logs.    */ 
/* Now there are four 512 MB logs. */

SELECT GROUP#, BYTES, STATUS FROM V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
5          536870912  CURRENT
6          536870912  UNUSED
7          536870912  UNUSED
8          536870912  UNUSED
```

# 保留封存的重做日誌
<a name="Appendix.Oracle.CommonDBATasks.RetainRedoLogs"></a>

您可以在資料庫執行個體本機保留封存的重做日誌，以搭配 Oracle LogMiner (`DBMS_LOGMNR`) 之類產品使用。保留重做日誌之後，您可以使用 LogMiner 來分析日誌。如需詳細資訊，請參閱 Oracle 文件中的[使用 LogMiner 來分析重做日誌檔案](http://docs.oracle.com/cd/E11882_01/server.112/e22490/logminer.htm)。

若要保留封存的重做日誌，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.set_configuration`。如果您在 Oracle Data Guard 中的主要執行個體上使用此程序，RDS 會變更主要執行個體上的封存日誌保留設定，並開啟僅供讀取複本，但不會變更掛載複本上的封存日誌保留設定。RDS 會短暫保留掛載複本上的最新封存重做日誌。RDS 會自動刪除下載至掛載複本的舊日誌。

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


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `name`  |  varchar  |  —  |  是  |  待更新組態的名稱。若要變更封存的重做日誌保留時數，請將名稱設定為 `archivelog retention hours`。  | 
|  `value`  |  varchar  |  —  |  是  |  組態值。設定要保留日誌的時數值。  | 

下列範例會保留 24 小時內的重做日誌。

```
begin
    rdsadmin.rdsadmin_util.set_configuration(
        name  => 'archivelog retention hours',
        value => '24');
end;
/
commit;
```

**注意**  
需要遞交命令，變更才會生效。

若要檢視系統能為資料庫執行個體保留多久的封存重做日誌，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.show_configuration`。

下列範例會顯示日誌的保留時間。

```
set serveroutput on
EXEC rdsadmin.rdsadmin_util.show_configuration;
```

輸出會顯示 `archivelog retention hours` 目前的設定，下列輸出顯示封存的重做日誌會保留 48 小時。

```
NAME:archivelog retention hours
VALUE:48
DESCRIPTION:ArchiveLog expiration specifies the duration in hours before archive/redo log files are automatically deleted.
```

因為封存的重做日誌會保留在資料庫執行個體上，請確保資料庫執行個體有足夠的配置儲存空間能存放這些保留的日誌。若要判斷資料庫執行個體在過去 X 小時中使用了多少空間，則可執行下列查詢，並以小時數取代 X。

```
SELECT SUM(BLOCKS * BLOCK_SIZE) bytes 
  FROM V$ARCHIVED_LOG
 WHERE FIRST_TIME >= SYSDATE-(X/24) AND DEST_ID=1;
```

RDS for Oracle 只有在資料庫執行個體的備份保留期間大於零時，才會產生封存的重做日誌。依預設，備份保留期間會大於零。

當封存日誌保留期間到期時，RDS for Oracle 會從資料庫執行個體移除封存的重做日誌。為了支援將資料庫執行個體還原到某個時間點，Amazon RDS 會根據備份保留期間在資料庫執行個體之外保留封存的重做日誌。若要修改備份保留期間，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

**注意**  
在某些情況下，您可能會在 Linux 上使用 JDBC 來下載封存的重做日誌，而遇到長時間的延遲和連線重設等問題。在這種情況下，上述問題可能是因 Java 用戶端上的預設隨機編號產生器設定所造成，所以建議您使用非封鎖的隨機編號產生器來設定 JDBC 驅動程式。

# 存取線上和封存的重做日誌
<a name="Appendix.Oracle.CommonDBATasks.Log.Download"></a>

您可能會想要存取您的線上和封存重做日誌檔案，以使用例如 GoldenGate、Attunity、Informatica 等其他外部工具進行採礦。若要存取這些檔案，請執行下列動作：

1. 建立目錄物件，以便提供實體檔案路徑的唯讀存取權。

   使用 `rdsadmin.rdsadmin_master_util.create_archivelog_dir` 和 `rdsadmin.rdsadmin_master_util.create_onlinelog_dir`

1. 讀取使用 PL/SQL 的檔案。

   您可以透過使用 PL/SQL 讀取檔案。如需從目錄物件讀取檔案的詳細資訊，請參閱[列出資料庫執行個體目錄中的檔案](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ListDirectories)和[讀取資料庫執行個體目錄中的檔案](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles)。

下列版本支援存取交易日誌：
+ Oracle Database 21c
+ Oracle 資料庫 19c

下列程式碼所建立的目錄，可為您提供線上和已封存重做日誌檔案的唯讀存取：

**重要**  
此程式碼也會撤銷 `DROP ANY DIRECTORY` 權限。

```
EXEC rdsadmin.rdsadmin_master_util.create_archivelog_dir;
EXEC rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
```

下列程式碼會捨棄線上和封存重做日誌檔案的目錄。

```
EXEC rdsadmin.rdsadmin_master_util.drop_archivelog_dir;
EXEC rdsadmin.rdsadmin_master_util.drop_onlinelog_dir;
```

下列程式碼會授予和撤銷 `DROP ANY DIRECTORY` 權限。

```
EXEC rdsadmin.rdsadmin_master_util.revoke_drop_any_directory;
EXEC rdsadmin.rdsadmin_master_util.grant_drop_any_directory;
```

# 從 Amazon S3 下載封存的重做日誌
<a name="Appendix.Oracle.CommonDBATasks.download-redo-logs"></a>

您可以使用 `rdsadmin.rdsadmin_archive_log_download` 套件下載資料庫執行個體上的封存重做日誌。如果封存的重做日誌不在資料庫執行個體上，您可能想要從 Amazon S3 再次下載這些日誌。然後，您可以挖掘日誌或使用它們來恢復或複寫資料庫。

**注意**  
您無法在僅供讀取複本執行個體上下載封存重做日誌。

## 下載封存的重做日誌：基本步驟
<a name="Appendix.Oracle.CommonDBATasks.download-redo-logs.basic-process"></a>

封存重做日誌的可用性取決於下列保留政策：
+ 備份保留政策 — Amazon S3 提供此政策之內的日誌。移除此政策之外的日誌。
+ 封存日誌保留政策 — 您的資料庫執行個體提供此政策之內的日誌。移除此政策之外的日誌。

如果日誌不在您的執行個體上，但受到備份保留期間的保護，請使用 `rdsadmin.rdsadmin_archive_log_download` 再次下載。RDS for Oracle 會將日誌儲存至資料庫執行個體上的 `/rdsdbdata/log/arch` 目錄。

**從 Amazon S3 下載封存的重做日誌**

1. 設定您的保留期間，以確保您下載的封存重做日誌在您需要保留期間之內。務必 `COMMIT` 您的變更。

   RDS 會根據封存的日誌保留政策保留您下載的日誌檔，從日誌下載的時間開始。若要了解如何設定保留政策，請參閱 [保留封存的重做日誌](Appendix.Oracle.CommonDBATasks.RetainRedoLogs.md)。

1. 最多等待 5 分鐘，讓封存日誌保留政策變更生效。

1. 使用 `rdsadmin.rdsadmin_archive_log_download` 從 Amazon S3 下載封存的重做日誌。

   如需更多詳細資訊，請參閱 [下載單一封存重做日誌](#Appendix.Oracle.CommonDBATasks.download-redo-logs.single-log) 及 [下載一系列的封存重做日誌](#Appendix.Oracle.CommonDBATasks.download-redo-logs.series)。
**注意**  
RDS 會在下載前自動檢查可用的儲存空間。如果要求的日誌會耗用高百分比的空間，您會收到提醒。

1. 確認日誌已成功從 Amazon S3 下載。

   您可在 bdump 檔案之中檢視下載任務的狀態。bdump 檔案的路徑名稱是 `/rdsdbdata/log/trace/dbtask-task-id.log`。在上述的下載步驟中，您執行的 `SELECT` 陳述式會傳回 `VARCHAR2` 資料類型的任務 ID。如需更多詳細資訊，請參閱 [監控檔案傳輸狀態](oracle-s3-integration.using.md#oracle-s3-integration.using.task-status) 中的類似範例。

## 下載單一封存重做日誌
<a name="Appendix.Oracle.CommonDBATasks.download-redo-logs.single-log"></a>

若要將單一封存重做日誌下載至 `/rdsdbdata/log/arch` 目錄，請使用 `rdsadmin.rdsadmin_archive_log_download.download_log_with_seqnum`。此程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `seqnum`  |  數字  |  —  |  是  |  封存重做日誌的序號。  | 

下列範例會下載序號為 20 的日誌。

```
SELECT rdsadmin.rdsadmin_archive_log_download.download_log_with_seqnum(seqnum => 20) 
       AS TASK_ID 
FROM   DUAL;
```

## 下載一系列的封存重做日誌
<a name="Appendix.Oracle.CommonDBATasks.download-redo-logs.series"></a>

若要將一系列的封存重做日誌下載至 `/rdsdbdata/log/arch` 目錄，請使用 `download_logs_in_seqnum_range`。您的下載限制為每個請求 300 個日誌。`download_logs_in_seqnum_range` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `start_seq`  |  數字  |  —  |  是  |  系列的起始序號。  | 
|  `end_seq`  |  數字  |  —  |  是  |  系列的結束序號。  | 

下列範例會下載序列 50 到 100 的日誌。

```
SELECT rdsadmin.rdsadmin_archive_log_download.download_logs_in_seqnum_range(start_seq => 50, end_seq => 100) 
       AS TASK_ID 
FROM   DUAL;
```

# 執行 Oracle 資料庫執行個體的一般 RMAN 任務
<a name="Appendix.Oracle.CommonDBATasks.RMAN"></a>

下節會說明在執行 Oracle 的 Amazon RDS 資料庫執行個體上進行 Oracle Recovery Manager (RMAN) DBA 任務的方法。為了提供受管理的服務體驗，Amazon RDS 並不會提供資料庫執行個體的殼層存取權。而且會將存取權限制在某些需要進階權限的系統程序和資料表。

使用 Amazon RDS 套件 `rdsadmin.rdsadmin_rman_util`，將 Amazon RDS for Oracle 資料庫執行 RMAN 備份至磁碟。`rdsadmin.rdsadmin_rman_util` 套件可支援完整和增量資料庫檔案備份、資料表空間備份，以及封存的重做日誌檔備份。

RMAN 備份作業完成後，您即可從 Amazon RDS for Oracle 資料庫執行個體主機複製備份檔案。如此一來，您就能透過該檔案還原至非 RDS 主機，或用來長期儲存備份資料。例如，您可以將備份檔案複製到 Amazon S3 儲存貯體。如需詳細資訊，請參閱 [Amazon S3 整合](oracle-s3-integration.md)的使用方式。

RMAN 備份作業產生的備份檔案會保留在 Amazon RDS 資料庫執行個體主機上，直到您手動移除這些檔案為止。您可使用 `UTL_FILE.FREMOVE` Oracle 程序由目錄移除檔案。如需詳細資訊，請參閱 Oracle 資料庫文件中的 [FREMOVE 程序](https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS70924)。

您無法使用 RMAN 來還原 RDS for Oracle 資料庫執行個體。不過，您可以使用 RMAN 將備份還原到內部部署或 Amazon EC2 執行個體。如需詳細資訊，請參閱部落格文章[將 Amazon RDS for Oracle 執行個體還原到自我管理的執行個體](https://aws.amazon.com/blogs/database/restore-an-amazon-rds-for-oracle-instance-to-a-self-managed-instance/)。

**注意**  
若要備份或還原至另一個 Amazon RDS for Oracle 資料庫執行個體，則可繼續使用 Amazon RDS 備份和還原功能。如需詳細資訊，請參閱[備份、還原和匯出資料](CHAP_CommonTasks.BackupRestore.md)。

**Topics**
+ [RMAN 備份的先決條件](Appendix.Oracle.CommonDBATasks.RMAN-requirements.md)
+ [RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)
+ [驗證 RDS for Oracle 中的資料庫檔案](Appendix.Oracle.CommonDBATasks.ValidateDBFiles.md)
+ [啟用和停用區塊變更追蹤功能](Appendix.Oracle.CommonDBATasks.BlockChangeTracking.md)
+ [交叉檢查封存的重做日誌](Appendix.Oracle.CommonDBATasks.Crosscheck.md)
+ [備份封存的重做日誌檔案](Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.md)
+ [執行完整資料庫備份](Appendix.Oracle.CommonDBATasks.BackupDatabaseFull.md)
+ [執行租戶資料庫的完整備份](Appendix.Oracle.CommonDBATasks.BackupTenantDatabaseFull.md)
+ [執行增量資料庫備份](Appendix.Oracle.CommonDBATasks.BackupDatabaseIncremental.md)
+ [執行租戶資料庫的增量備份](Appendix.Oracle.CommonDBATasks.BackupTenantDatabaseIncremental.md)
+ [備份資料表空間](Appendix.Oracle.CommonDBATasks.BackupTablespace.md)
+ [備份控制檔案](Appendix.Oracle.CommonDBATasks.backup-control-file.md)
+ [執行區塊媒體復原](Appendix.Oracle.CommonDBATasks.block-media-recovery.md)

# RMAN 備份的先決條件
<a name="Appendix.Oracle.CommonDBATasks.RMAN-requirements"></a>

使用 `rdsadmin.rdsadmin_rman_util` 套件備份資料庫之前，請確定您符合下列先決條件：
+ 確保你的 RDS for Oracle 資料庫處於 `ARCHIVELOG` 模式。若要啟用此模式，請將備份保留期間設定為非零值。
+ 在備份封存的重做日誌，或是執行包含封存重做日誌的完整或增量備份，以及備份資料庫時，請確保將重做日誌保留期間設定為非零值。需要存檔的重做日誌，才能在復原期間使資料庫檔案保持一致。如需詳細資訊，請參閱[保留封存的重做日誌](Appendix.Oracle.CommonDBATasks.RetainRedoLogs.md)。
+ 請確保您的資料庫執行個體有足夠的可用空間來存放備份。當您備份資料庫時，可以在程序呼叫中將 Oracle 目錄物件指定為參數。RMAN 會將檔案放在指定目錄中。您能夠使用預設目錄 (如 `DATA_PUMP_DIR`)，也能夠建立新目錄。如需詳細資訊，請參閱[在主要資料儲存空間中建立和捨棄目錄](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.NewDirectories)。

  您可以使用 CloudWatch 指標 `FreeStorageSpace` 監控 RDS for Oracle 執行個體中目前的可用空間。我們建議您的可用空間超過資料庫目前的大小，儘管 RMAN 僅備份格式化的區塊並支援壓縮。

# RMAN 程序的常見參數
<a name="Appendix.Oracle.CommonDBATasks.CommonParameters"></a>

您可以使用 Amazon RDS 套件 `rdsadmin.rdsadmin_rman_util` 中的程序來執行 RMAN 任務。有多個參數對該套件中的程序而言都是共通的，以下即為該套件的常見參數。


****  

| 參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_directory_name`  |  varchar2  |  有效的資料庫目錄名稱。  |  —  |  是  |  要包含備份檔案的目錄名稱。  | 
|  `p_label`  |  varchar2  |  `a-z`, `A-Z`, `0-9`, `'_'`, `'-'`, `'.'`  |  —  |  否  |  包含在備份檔案名稱中的唯一字串。  長度限制為 30 個字元。   | 
|  `p_owner`  |  varchar2  |  `p_directory_name` 中指定的有效目錄擁有者。  |  —  |  是  |  要包含備份檔案的目錄擁有者。  | 
|  `p_tag`  |  varchar2  |  `a-z`, `A-Z`, `0-9`, `'_'`, `'-'`, `'.'`  |  NULL  |  否  |  可用於區分備份的字串，以指明備份的目的或用法，例如每日、每週或增量層級備份。 長度限制為 30 個字元。標籤不區分大小寫。無論輸入標籤時使用的大小寫為何，一律以大寫形式儲存標籤。 標籤不需是唯一的，因此多個備份可以有相同的標籤。 如果沒有指定標籤，則 RMAN 會使用 `TAGYYYYMMDDTHHMMSS` 格式自動指派預設標籤，其中 *YYYY* 是年、*MM* 是月、*DD* 是日、*HH* 是時 (24 小時制)、*MM* 是分、*SS* 是秒。日期和時間指的是 RMAN 開始備份的時間。 例如，如果備份是在 2019-09-27 的 21:45:17 開始的，接收到的標籤可能是 `TAG20190927T214517`。 下列 Amazon RDS for Oracle 資料庫引擎版本支援 `p_tag` 參數： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.CommonParameters.html)  | 
|  `p_compress`  |  布林值  |  `TRUE`, `FALSE`  |  `FALSE`  |  否  |  指定 `TRUE` 可啟用 BASIC 備份壓縮。 指定 `FALSE` 可停用 BASIC 備份壓縮。  | 
|  `p_include_archive_logs`  |  布林值  |  `TRUE`, `FALSE`  |  `FALSE`  |  否  |  指定 `TRUE` 可在備份中包含封存的重做日誌。 指定 `FALSE` 可排除備份中的封存重做日誌。 如果您選擇在備份中包含封存的重做日誌，請使用 `rdsadmin.rdsadmin_util.set_configuration` 程序將保留期間設定為一小時以上。同時，您還需立即呼叫 `rdsadmin.rdsadmin_rman_util.crosscheck_archivelog` 程序，再開始執行備份。否則，備份作業可能會因缺少遭 Amazon RDS 管理程序刪除的封存重做日誌檔而失敗。  | 
|  `p_include_controlfile`  |  布林值  |  `TRUE`, `FALSE`  |  `FALSE`  |  否  |  指定 `TRUE` 可在備份中包含控制檔案。 指定 `FALSE` 可排除備份中的控制檔案。  | 
|  `p_optimize`  |  布林值  |  `TRUE`, `FALSE`  |  `TRUE`  |  否  |  指定 `TRUE` 可啟用備份最佳化。在包含封存重做日誌的情況下，此參數可縮減備份大小。 指定 `FALSE` 可停用備份最佳化。  | 
|  `p_parallel`  |  數字  |  Oracle Database Enterprise Edition (EE)，介於 `1` 與 `254` 之間的有效整數 `1`其他 Oracle 資料庫版本為   |  `1`  |  否  |  通道的數目。  | 
|  `p_rman_to_dbms_output`  |  布林值  |  `TRUE`, `FALSE`  |  `FALSE`  |  否  |  為 `TRUE` 時，RMAN 輸出除了傳送到 `DBMS_OUTPUT` 目錄中的檔案以外，還會傳送到 `BDUMP` 套件。在 SQL\$1Plus 中，使用 `SET SERVEROUTPUT ON` 來查看輸出。 設定為 `FALSE` 時，系統只會將 RMAN 輸出傳送至 `BDUMP` 目錄中的檔案。  | 
|  `p_section_size_mb`  |  數字  |  有效的整數  |  `NULL`  |  否  |  區段大小，以 MB 為單位。 將每個檔案分割為指定的區段大小來平行驗證。 為 `NULL` 時，會忽略參數。  | 
|  `p_validation_type`  |  varchar2  |  `'PHYSICAL'`, `'PHYSICAL+LOGICAL'`  |  `'PHYSICAL'`  |  否  |  損毀偵測的層級。 指定 `'PHYSICAL'` 來檢查實體損毀。實體損毀的其中一例是標頭和頁尾中不相符的區塊。 指定 `'PHYSICAL+LOGICAL'` 來檢查邏輯不一致以及實體損毀。邏輯損毀的其中一例，就是損毀的區塊。  | 

# 驗證 RDS for Oracle 中的資料庫檔案
<a name="Appendix.Oracle.CommonDBATasks.ValidateDBFiles"></a>

您可以使用 Amazon RDS 套件 `rdsadmin.rdsadmin_rman_util` 來驗證 Amazon RDS for Oracle 資料庫檔案，例如資料檔案、資料表空間、控制檔案和伺服器參數檔案 (SPFILE)。

如需 RMAN 驗證的詳細資訊，請參閱 Oracle 文件中的[驗證資料庫檔案和備份](https://docs.oracle.com/database/121/BRADV/rcmvalid.htm#BRADV90063)，以及 [VALIDATE](https://docs.oracle.com/database/121/RCMRF/rcmsynta2025.htm#RCMRF162)。

**Topics**
+ [驗證資料庫](#Appendix.Oracle.CommonDBATasks.ValidateDB)
+ [驗證租戶資料庫](#Appendix.Oracle.CommonDBATasks.ValidateTenantDB)
+ [驗證資料表空間](#Appendix.Oracle.CommonDBATasks.ValidateTablespace)
+ [驗證控制檔案](#Appendix.Oracle.CommonDBATasks.ValidateControlFile)
+ [驗證 SPFILE](#Appendix.Oracle.CommonDBATasks.ValidateSpfile)
+ [驗證 Oracle 資料檔案](#Appendix.Oracle.CommonDBATasks.ValidateDataFile)

## 驗證資料庫
<a name="Appendix.Oracle.CommonDBATasks.ValidateDB"></a>

若要驗證 RDS for Oracle 中由 Oracle 資料庫使用的所有相關檔案，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.validate_database`。

這個程序會採用下列常見參數來處理 RMAN 任務：
+ `p_validation_type`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_rman_to_dbms_output`

如需詳細資訊，請參閱[RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

下列範例會使用參數的預設值來驗證資料庫。

```
EXEC rdsadmin.rdsadmin_rman_util.validate_database;
```

下列範例會使用參數的指定值來驗證資料庫。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.validate_database(
        p_validation_type     => 'PHYSICAL+LOGICAL', 
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_rman_to_dbms_output => FALSE);
END;
/
```

`p_rman_to_dbms_output` 參數設定為 `FALSE` 時，系統會將 RMAN 輸出寫入 `BDUMP` 目錄中的檔案。

若要檢視 `BDUMP` 目錄中的檔案，請執行下列 `SELECT` 陳述式。

```
SELECT * FROM table(rdsadmin.rds_file_util.listdir('BDUMP')) order by mtime;
```

若要檢視 `BDUMP` 目錄中的檔案內容，請執行下列 `SELECT` 陳述式。

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','rds-rman-validate-nnn.txt'));
```

請使用要檢視的檔案名稱來取代原先的檔案名稱。

## 驗證租戶資料庫
<a name="Appendix.Oracle.CommonDBATasks.ValidateTenantDB"></a>

若要驗證容器資料庫 (CDB) 中租戶資料庫的資料檔案，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.validate_tenant`。

這個程序僅適用於目前的租戶資料庫，並會將下列常見參數用於 RMAN 任務：
+ `p_validation_type`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_rman_to_dbms_output`

如需詳細資訊，請參閱[RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。下列資料庫引擎版本支援這個程序：
+ Oracle Database 21c (21.0.0) CDB
+ Oracle Database 19c (19.0.0) CDB

下列範例會使用參數的預設值來驗證目前的資料庫執行個體。

```
EXEC rdsadmin.rdsadmin_rman_util.validate_tenant;
```

下列範例會使用參數的指定值來驗證目前的資料庫執行個體。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.validate_tenant(
        p_validation_type     => 'PHYSICAL+LOGICAL', 
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_rman_to_dbms_output => FALSE);
END;
/
```

`p_rman_to_dbms_output` 參數設定為 `FALSE` 時，系統會將 RMAN 輸出寫入 `BDUMP` 目錄中的檔案。

若要檢視 `BDUMP` 目錄中的檔案，請執行下列 `SELECT` 陳述式。

```
SELECT * FROM table(rdsadmin.rds_file_util.listdir('BDUMP')) order by mtime;
```

若要檢視 `BDUMP` 目錄中的檔案內容，請執行下列 `SELECT` 陳述式。

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','rds-rman-validate-nnn.txt'));
```

請使用要檢視的檔案名稱來取代原先的檔案名稱。

## 驗證資料表空間
<a name="Appendix.Oracle.CommonDBATasks.ValidateTablespace"></a>

若要驗證與資料表空間相關聯的檔案，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.validate_tablespace`。

這個程序會採用下列常見參數來處理 RMAN 任務：
+ `p_validation_type`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_rman_to_dbms_output`

如需更多詳細資訊，請參閱 [RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

此外，這個程序還會額外使用下列參數。


****  

| 參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar2  |  有效的資料表空間名稱  |  —  |  是  |  資料表空間的名稱。  | 

## 驗證控制檔案
<a name="Appendix.Oracle.CommonDBATasks.ValidateControlFile"></a>

若要只驗證 Amazon RDS Oracle 資料庫執行個體使用的控制檔案，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.validate_current_controlfile`。

這個程序會採用下列常見參數來處理 RMAN 任務：
+ `p_validation_type`
+ `p_rman_to_dbms_output`

如需更多詳細資訊，請參閱 [RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

## 驗證 SPFILE
<a name="Appendix.Oracle.CommonDBATasks.ValidateSpfile"></a>

若要只驗證 Amazon RDS Oracle 資料庫執行個體使用的伺服器參數檔案 (SPFILE)，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.validate_spfile`。

這個程序會採用下列常見參數來處理 RMAN 任務：
+ `p_validation_type`
+ `p_rman_to_dbms_output`

如需詳細資訊，請參閱[RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

## 驗證 Oracle 資料檔案
<a name="Appendix.Oracle.CommonDBATasks.ValidateDataFile"></a>

若要驗證資料檔案，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.validate_datafile`。

這個程序會採用下列常見參數來處理 RMAN 任務：
+ `p_validation_type`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_rman_to_dbms_output`

如需更多詳細資訊，請參閱 [RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

此外，這個程序還會額外使用下列參數。


****  

| 參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_datafile`  |  varchar2  |  有效資料檔案 ID 編號或包含完整路徑的有效資料檔案名稱  |  —  |  是  |  資料檔案 ID 編號 (來自 `v$datafile.file#`) 或包含路徑的完整資料檔案名稱 (來自 `v$datafile.name`)。  | 
|  `p_from_block`  |  數字  |  有效的整數  |  `NULL`  |  否  |  資料檔案內開始驗證的區塊數量。當此參數為 `NULL` 時，表示使用的數量為 `1`。  | 
|  `p_to_block`  |  數字  |  有效的整數  |  `NULL`  |  否  |  資料檔案內結束驗證的區塊數量。當此參數為 `NULL` 時，表示資料檔案內使用的區塊數量達到上限。  | 

# 啟用和停用區塊變更追蹤功能
<a name="Appendix.Oracle.CommonDBATasks.BlockChangeTracking"></a>

區塊變更追蹤會紀錄追蹤檔案中變更的區塊。這項技術可以改善 RMAN 增量備份的效能。如需詳細資訊，請參閱 Oracle 資料庫文件中的[使用區塊變更追蹤來改善增量備份效能 ](https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/backing-up-database.html#GUID-4E1F605A-76A7-48D0-9D9B-7343B4327E2A)。

讀取複本不支援 RMAN 功能。不過，在您的高可用性策略中，您可能會選擇使用程序 `rdsadmin.rdsadmin_rman_util.enable_block_change_tracking` 在唯讀複本中啟用區塊追蹤。如果您將此唯讀複本提升至來源資料庫執行個體，則會為新來源執行個體啟用區塊變更追蹤。因此，您的執行個體可能因快速增量備份而受益。

下列資料庫引擎版本支援企業版限定的區塊變更追蹤程序：
+ Oracle Database 21c (21.0.0)
+ Oracle 資料庫 19c (19.0.0)

**注意**  
在單一租用戶 CDB 中，以下操作雖然有效，但沒有客戶可見機制能夠偵測操作的當前狀態。另請參閱 [RDS for Oracle CDB 的限制](Oracle.Concepts.CDBs.md#Oracle.Concepts.single-tenant-limitations)。

您可以使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.enable_block_change_tracking`，為資料庫執行個體啟用區塊變更追蹤功能。若要停用區塊變更追蹤，請使用 `disable_block_change_tracking`。這些程序不需採用任何參數。

若要判斷資料庫執行個體是否啟用區塊變更追蹤功能，則可執行下列查詢。

```
SELECT STATUS, FILENAME FROM V$BLOCK_CHANGE_TRACKING;
```

下方範例會為資料庫執行個體啟用區塊變更追蹤功能。

```
EXEC rdsadmin.rdsadmin_rman_util.enable_block_change_tracking;
```

下方範例會為資料庫執行個體停用區塊變更追蹤功能。

```
EXEC rdsadmin.rdsadmin_rman_util.disable_block_change_tracking;
```

# 交叉檢查封存的重做日誌
<a name="Appendix.Oracle.CommonDBATasks.Crosscheck"></a>

您可以使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.crosscheck_archivelog` 來交叉檢查封存的重做日誌。

您能夠利用這個程序來交叉檢查控制檔案中註冊的封存重做日誌，並選擇刪除過期的記錄。當 RMAN 製作備份時，它會在控制檔中建立記錄。經過一段時間後，這些記錄會增加控制檔案的大小，建議您定期移除過期的記錄。

**注意**  
標準的 Amazon RDS 備份作業不會使用 RMAN，所以系統不會在控制檔案中建立記錄。

這個程序會採用常見參數 `p_rman_to_dbms_output` 來處理 RMAN 任務。

如需更多詳細資訊，請參閱 [RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

此外，這個程序還會額外使用下列參數。


****  

| 參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_delete_expired`  |  布林值  |  `TRUE`, `FALSE`  |  `TRUE`  |  否  |  當此參數為 `TRUE` 時，系統會從控制檔案中刪除過期的封存重做日誌。 當此參數為 `FALSE` 時，系統會保留控制檔案中過期的封存重做日誌。  | 

下列 Amazon RDS for Oracle 資料庫引擎版本皆支援這個程序：
+ Oracle Database 21c (21.0.0)
+ Oracle 資料庫 19c (19.0.0)

下列範例會將控制檔中的封存重做日誌記錄標示為過期，但不會刪除記錄。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.crosscheck_archivelog(
        p_delete_expired      => FALSE,  
        p_rman_to_dbms_output => FALSE);
END;
/
```

下方範例會從控制檔案中刪除過期的封存重做日誌。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.crosscheck_archivelog(
        p_delete_expired      => TRUE,  
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 備份封存的重做日誌檔案
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs"></a>

您可以使用 Amazon RDS 套件 `rdsadmin.rdsadmin_rman_util` 來備份 Amazon RDS Oracle 資料庫執行個體的封存重做日誌。

下列 Amazon RDS for Oracle 資料庫引擎版本皆支援備份封存重做日誌的程序：
+ Oracle Database 21c (21.0.0)
+ Oracle 資料庫 19c (19.0.0)

**Topics**
+ [備份所有封存的重做日誌](#Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.All)
+ [備份特定日期範圍內的封存重做日誌](#Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.Date)
+ [備份特定 SCN 範圍內的封存重做日誌](#Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.SCN)
+ [備份特定序號範圍內的封存重做日誌](#Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.Sequence)

## 備份所有封存的重做日誌
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.All"></a>

若要備份 Amazon RDS Oracle 資料庫執行個體的所有封存重做日誌，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.backup_archivelog_all`。

這個程序會採用下列常見參數來處理 RMAN 任務：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

如需更多詳細資訊，請參閱 [RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

下方範例會備份資料庫執行個體的所有封存重做日誌。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_archivelog_all(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_parallel            => 4, 
        p_tag                 => 'MY_LOG_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

## 備份特定日期範圍內的封存重做日誌
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.Date"></a>

若要透過指定某個日期範圍來備份 Amazon RDS Oracle 資料庫執行個體的特定封存重做日誌，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.backup_archivelog_date`。該日期範圍可用來指定要進行備份的封存重做日誌。

這個程序會採用下列常見參數來處理 RMAN 任務：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

如需更多詳細資訊，請參閱 [RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

此外，這個程序還會額外使用下列參數。


****  

| 參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_from_date`  |  日期  |  介於磁碟上封存重做日誌 `start_date` 和 `next_date` 間的日期。該值必須小於或等於您為 `p_to_date` 指定的值。  |  —  |  是  |  封存日誌備份的開始日期。  | 
|  `p_to_date`  |  日期  |  介於磁碟上封存重做日誌 `start_date` 和 `next_date` 間的日期。該值必須大於或等於您為 `p_from_date` 指定的值。  |  —  |  是  |  封存日誌備份的結束日期。  | 

下方範例會備份日期範圍內的資料庫執行個體封存重做日誌。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_archivelog_date(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_from_date           => '03/01/2019 00:00:00',
        p_to_date             => '03/02/2019 00:00:00',
        p_parallel            => 4,  
        p_tag                 => 'MY_LOG_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

## 備份特定 SCN 範圍內的封存重做日誌
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.SCN"></a>

若要透過指定某個系統變更編號 (SCN) 來備份 Amazon RDS Oracle 資料庫執行個體的特定封存重做日誌，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.backup_archivelog_scn`。該 SCN 範圍可用來指定要進行備份的封存重做日誌。

這個程序會採用下列常見參數來處理 RMAN 任務：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

如需更多詳細資訊，請參閱 [RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

此外，這個程序還會額外使用下列參數。


****  

| 參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_from_scn`  |  數字  |  磁碟上封存重做日誌的 SCN。該值必須小於或等於您為 `p_to_scn` 指定的值。  |  —  |  是  |  封存日誌備份的起始 SCN。  | 
|  `p_to_scn`  |  數字  |  磁碟上封存重做日誌的 SCN。該值必須大於或等於您為 `p_from_scn` 指定的值。  |  —  |  是  |  封存日誌備份的結束 SCN。  | 

下方範例會備份 SCN 範圍內的資料庫執行個體封存重做日誌。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_archivelog_scn(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_from_scn            => 1533835,
        p_to_scn              => 1892447,
        p_parallel            => 4,
        p_tag                 => 'MY_LOG_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

## 備份特定序號範圍內的封存重做日誌
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.Sequence"></a>

若要透過指定某個序號範圍來備份 Amazon RDS Oracle 資料庫執行個體的特定封存重做日誌，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.backup_archivelog_sequence`。該序號範圍可用來指定要進行備份的封存重做日誌。

這個程序會採用下列常見參數來處理 RMAN 任務：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

如需更多詳細資訊，請參閱 [RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

此外，這個程序還會額外使用下列參數。


****  

| 參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_from_sequence`  |  數字  |  磁碟上封存重做日誌的序號。該值必須小於或等於您為 `p_to_sequence` 指定的值。  |  —  |  是  |  封存日誌備份的起始序號。  | 
|  `p_to_sequence`  |  數字  |  磁碟上封存重做日誌的序號。該值必須大於或等於您為 `p_from_sequence` 指定的值。  |  —  |  是  |  封存日誌備份的結束序號。  | 

下方範例會備份序號範圍內的資料庫執行個體封存重做日誌。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_archivelog_sequence(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_from_sequence       => 11160,
        p_to_sequence         => 11160,
        p_parallel            => 4,  
        p_tag                 => 'MY_LOG_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 執行完整資料庫備份
<a name="Appendix.Oracle.CommonDBATasks.BackupDatabaseFull"></a>

您可以使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.backup_database_full`，對備份中包含的所有資料檔案區塊執行備份作業。

這個程序會採用下列常見參數來處理 RMAN 任務：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

如需更多詳細資訊，請參閱 [RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

下列 Amazon RDS for Oracle 資料庫引擎版本皆支援這個程序：
+ Oracle Database 21c (21.0.0)
+ Oracle 資料庫 19c (19.0.0)

下列範例會使用參數的指定值來執行資料庫執行個體的完整備份。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_database_full(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'FULL_DB_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 執行租戶資料庫的完整備份
<a name="Appendix.Oracle.CommonDBATasks.BackupTenantDatabaseFull"></a>

您可以執行所有資枓區塊的備份，包括容器資料庫 (CDB) 中的租戶資料庫。使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.backup_tenant_full` 這個程序僅適用於目前的資料庫備份，並會將下列常見參數用於 RMAN 任務：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

如需詳細資訊，請參閱[RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

下列 RDS for Oracle 資料庫引擎版本支援 `rdsadmin_rman_util.backup_tenant_full` 程序：
+ Oracle Database 21c (21.0.0) CDB
+ Oracle Database 19c (19.0.0) CDB

下列範例會使用參數的指定值來執行目前租戶資料庫的完整備份。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_tenant_full(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'FULL_TENANT_DB_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 執行增量資料庫備份
<a name="Appendix.Oracle.CommonDBATasks.BackupDatabaseIncremental"></a>

您可以使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.backup_database_incremental` 來執行資料庫執行個體的增量備份作業。

如需增量備份的詳細資訊，請參閱 Oracle 文件中的[增量備份](https://docs.oracle.com/database/121/RCMRF/rcmsynta006.htm#GUID-73642FF2-43C5-48B2-9969-99001C52EB50__BGBHABHH)。

這個程序會採用下列常見參數來處理 RMAN 任務：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_include_controlfile`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

如需更多詳細資訊，請參閱 [RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

下列 Amazon RDS for Oracle 資料庫引擎版本皆支援這個程序：
+ Oracle Database 21c (21.0.0)
+ Oracle 資料庫 19c (19.0.0)

此外，這個程序還會額外使用下列參數。


****  

| 參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_level`  |  數字  |  `0`, `1`  |  `0`  |  否  |  指定 `0` 可啟用完整增量備份。 指定 `1` 可啟用非累積增量備份。  | 

下列範例會使用參數的指定值來執行資料庫執行個體的增量備份。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_database_incremental(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_level               => 1,
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'MY_INCREMENTAL_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 執行租戶資料庫的增量備份
<a name="Appendix.Oracle.CommonDBATasks.BackupTenantDatabaseIncremental"></a>

您可以在 CDB 中執行目前租戶資料庫的增量備份。使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.backup_tenant_incremental`

如需增量備份的詳細資訊，請參閱 Oracle Database 文件中的[增量備份](https://docs.oracle.com/database/121/RCMRF/rcmsynta006.htm#GUID-73642FF2-43C5-48B2-9969-99001C52EB50__BGBHABHH)。

這個程序僅適用於目前的租戶資料庫，並會將下列常見參數用於 RMAN 任務：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_include_controlfile`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

如需更多詳細資訊，請參閱 [RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

下列 Amazon RDS for Oracle 資料庫引擎版本皆支援這個程序：
+ Oracle Database 21c (21.0.0) CDB
+ Oracle Database 19c (19.0.0) CDB

此外，這個程序還會額外使用下列參數。


****  

| 參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_level`  |  數字  |  `0`, `1`  |  `0`  |  否  |  指定 `0` 可啟用完整增量備份。 指定 `1` 可啟用非累積增量備份。  | 

下列範例會使用參數的指定值來執行目前租戶資料庫的增量備份。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_tenant_incremental(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_level               => 1,
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'MY_INCREMENTAL_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 備份資料表空間
<a name="Appendix.Oracle.CommonDBATasks.BackupTablespace"></a>

您可以使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.backup_tablespace` 來備份資料表空間。

這個程序會採用下列常見參數來處理 RMAN 任務：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_include_controlfile`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

如需更多詳細資訊，請參閱 [RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

此外，這個程序還會額外使用下列參數。


****  

| 參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar2  |  有效的資料表空間名稱。  |  —  |  是  |  要備份的資料表空間名稱。  | 

下列 Amazon RDS for Oracle 資料庫引擎版本皆支援這個程序：
+ Oracle Database 21c (21.0.0)
+ Oracle 資料庫 19c (19.0.0)

下列範例會使用參數的指定值來執行資料表空間備份。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_tablespace(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_tablespace_name     => 'MYTABLESPACE',
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'MYTABLESPACE_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 備份控制檔案
<a name="Appendix.Oracle.CommonDBATasks.backup-control-file"></a>

您可以使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.backup_current_controlfile` 來備份控制檔案。

這個程序會採用下列常見參數來處理 RMAN 任務：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

如需更多詳細資訊，請參閱 [RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

下列 Amazon RDS for Oracle 資料庫引擎版本皆支援這個程序：
+ Oracle Database 21c (21.0.0)
+ Oracle 資料庫 19c (19.0.0)

下列範例使用參數的指定值來備份控制檔案。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_current_controlfile(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_tag                 => 'CONTROL_FILE_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 執行區塊媒體復原
<a name="Appendix.Oracle.CommonDBATasks.block-media-recovery"></a>

您可以使用 Amazon RDS 程序 `rdsadmin.rdsadmin_rman_util.recover_datafile_block` 來復原個別資料區塊，稱為區塊媒體復原。您可以使用此過載程序來復原個別資料區塊或一系列的資料區塊。

這個程序會採用下列常見參數來處理 RMAN 任務：
+ `p_rman_to_dbms_output`

如需詳細資訊，請參閱[RMAN 程序的常見參數](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

這個程序會使用下列其他參數。


****  

| 參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | Description | 
| --- | --- | --- | --- | --- | --- | 
|  `p_datafile`  |  `NUMBER`  |  有效的資料檔案 ID 號碼。  |  —  |  是  |  包含損毀區塊的資料檔案。以下列其中一種方式指定資料檔案： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.block-media-recovery.html)  | 
|  `p_block`  |  `NUMBER`  |  有效的整數。  |  —  |  是  |  要復原的個別區塊數量。 下列參數互斥： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.block-media-recovery.html)  | 
|  `p_from_block`  |  `NUMBER`  |  有效的整數。  |  —  |  是  |  要復原之區塊範圍中的第一個區塊號碼。 下列參數互斥： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.block-media-recovery.html)  | 
|  `p_to_block`  |  `NUMBER`  |  有效的整數。  |  —  |  是  |  要復原之區塊範圍中的最後一個區塊號碼。 下列參數互斥： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.block-media-recovery.html)  | 

下列 Amazon RDS for Oracle 資料庫引擎版本皆支援這個程序：
+ Oracle Database 21c (21.0.0)
+ Oracle 資料庫 19c (19.0.0)

下列範例會復原資料檔案 5 中的區塊 100。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.recover_datafile_block(
        p_datafile            => 5, 
        p_block               => 100,
        p_rman_to_dbms_output => TRUE);
END;
/
```

下列範例會復原資料檔案 5 中的區塊 100 到 150。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.recover_datafile_block(
        p_datafile            => 5, 
        p_from_block          => 100,
        p_to_block            => 150,
        p_rman_to_dbms_output => TRUE);
END;
/
```

# 執行 Oracle 資料庫執行個體的一般排程任務
<a name="Appendix.Oracle.CommonDBATasks.Scheduler"></a>

`SYS` 擁有的部分排程器任務可能會干擾正常的資料庫作業。在這種情況下，Oracle Support 建議您修改排程。如果您需要啟用或停用 `SYS` 任務，請在測試環境中測試排程任務的操作，然後再於生產環境中實作。如要執行 `SYS` 所擁有之 Oracle Scheduler 工作的任務，請使用 Amazon RDS 套件 `rdsadmin.rdsadmin_dbms_scheduler`。

Amazon RDS for Oracle 資料庫引擎版本支援的 `rdsadmin.rdsadmin_dbms_scheduler` 程序會顯示在下表。使用此套件時，您可以指定資料表中列出的 `SYS` 任務。


| 資料庫版本 | 依預設會啟用任務 | 依預設會停用任務 | 
| --- | --- | --- | 
| Oracle 資料庫 19c |  <pre>BSLN_MAINTAIN_STATS_JOB<br />CLEANUP_NON_EXIST_OBJ<br />CLEANUP_ONLINE_IND_BUILD<br />CLEANUP_ONLINE_PMO<br />CLEANUP_TAB_IOT_PMO<br />CLEANUP_TRANSIENT_PKG<br />CLEANUP_TRANSIENT_TYPE<br />DRA_REEVALUATE_OPEN_FAILURES<br />FILE_SIZE_UPD<br />ORA$AUTOTASK_CLEAN<br />PMO_DEFERRED_GIDX_MAINT_JOB<br />PURGE_LOG<br />RSE$CLEAN_RECOVERABLE_SCRIPT<br />SM$CLEAN_AUTO_SPLIT_MERGE</pre>  |  <pre>FGR$AUTOPURGE_JOB<br />FILE_WATCHER<br />HM_CREATE_OFFLINE_DICTIONARY<br />LOAD_OPATCH_INVENTORY<br />ORA$PREPLUGIN_BACKUP_JOB<br />XMLDB_NFS_CLEANUP_JOB</pre>  | 
| Oracle Database 21c |  <pre>BSLN_MAINTAIN_STATS_JOB<br />CLEANUP_NON_EXIST_OBJ<br />CLEANUP_ONLINE_IND_BUILD<br />CLEANUP_ONLINE_PMO<br />CLEANUP_TAB_IOT_PMO<br />CLEANUP_TRANSIENT_PKG<br />CLEANUP_TRANSIENT_TYPE<br />DRA_REEVALUATE_OPEN_FAILURES<br />FILE_SIZE_UPD<br />ORA$AUTOTASK_CLEAN<br />PMO_DEFERRED_GIDX_MAINT_JOB<br />PURGE_LOG</pre>  |  <pre>FGR$AUTOPURGE_JOB<br />FILE_WATCHER<br />HM_CREATE_OFFLINE_DICTIONARY<br />LOAD_OPATCH_INVENTORY<br />ORA$PREPLUGIN_BACKUP_JOB<br />ORA$_ATSK_AUTOSTS<br />XMLDB_NFS_CLEANUP_JOB</pre>  | 

## Oracle Scheduler 程序的常見參數
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters"></a>

若要使用 Oracle Scheduler 執行任務，請使用 Amazon RDS 套件 `rdsadmin.rdsadmin_dbms_scheduler` 中的程序。有多個參數對該套件中的程序而言都是共通的，以下即為該套件的常見參數。


****  

| 參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `name`  |  varchar2  |  [執行 Oracle 資料庫執行個體的一般排程任務](#Appendix.Oracle.CommonDBATasks.Scheduler) 中資料表中列出的程序   |  —  |  是  |  要修改的工作名稱。  | 
|  `attribute`  |  varchar2  |  `'REPEAT_INTERVAL'`,`'SCHEDULE_NAME'`  |  –  |  是  |  要修改的屬性。 若要修改任務的重複間隔，請指定 `'REPEAT_INTERVAL'`。 若要修改任務的排程名稱，請指定 `'SCHEDULE_NAME'`。  | 
|  `value`  |  varchar2  |  根據所使用的屬性，有效的排程間隔或排程名稱。  |  –  |  是  |  屬性的新值。  | 

## 修改 DBMS\$1SCHEDULER 任務
<a name="Appendix.Oracle.CommonDBATasks.ModifyScheduler"></a>

如要修改 Oracle Scheduler 的某些元件，請使用 Oracle 程序 `dbms_scheduler.set_attribute`。如需詳細資訊，請參閱 Oracle 文件中的 [DBMS\$1SCHEDULER](https://docs.oracle.com/database/121/ARPLS/d_sched.htm#ARPLS72235) 和 [SET\$1ATTRIBUTE 程序](https://docs.oracle.com/database/121/ARPLS/d_sched.htm#ARPLS72399)。

使用 Amazon RDS 資料庫執行個體時，請將結構描述名稱 `SYS` 加至物件名稱的前端。下列範例會設定 Monday 視窗物件的資源計劃屬性。

```
BEGIN
    DBMS_SCHEDULER.SET_ATTRIBUTE(
        name      => 'SYS.MONDAY_WINDOW',
        attribute => 'RESOURCE_PLAN',
        value     => 'resource_plan_1');
END;
/
```

## 修改 AutoTask 維護視窗
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.maintenance-windows"></a>

Amazon RDS for Oracle 執行個體是以維護視窗的預設設定所建立的。在這些視窗期間執行自動維護任務，例如最佳化處理程式統計數字收集。依預設，維護視窗會開啟 Oracle 資料庫資源管理員。

如要修改視窗，請使用 `DBMS_SCHEDULER` 套件。您可能需要修改維護視窗設定，原因如下：
+ 您希望在不同時間執行的維護任務，使用不同的設定，或完全不執行。例如，可能想要修改視窗持續時間，或變更重複時間和間隔。
+ 您想要避免在維護期間啟用資源管理員的效能影響。例如，若已指定預設維護計劃，且在資料庫負載下時開啟維護視窗，您可能會看到等待事件，例如 `resmgr:cpu quantum`。此等待事件與資料庫資源管理員有關。您有下列選項：
  + 確保資料庫執行個體的離峰時間期間維護視窗處於作用中狀態。
  + 藉由將 `resource_plan` 屬性設定為空字串，停用預設維護計劃。
  + 將您參數群組中的 `resource_manager_plan` 參數設為 `FORCE:`。若您的執行個體使用企業版，此設定會防止資料庫資源管理員計劃的啟動。

**如要修改您的維護視窗設定**

1. 使用 Oracle SQL 用戶端連線至您的資料庫。

1. 查詢排程器視窗的目前組態。

   下列範例會查詢 `MONDAY_WINDOW` 的組態。

   ```
   SELECT ENABLED, RESOURCE_PLAN, DURATION, REPEAT_INTERVAL
   FROM   DBA_SCHEDULER_WINDOWS 
   WHERE  WINDOW_NAME='MONDAY_WINDOW';
   ```

   下列輸出顯示該窗口正使用預設值。

   ```
   ENABLED         RESOURCE_PLAN                  DURATION         REPEAT_INTERVAL
   --------------- ------------------------------ ---------------- ------------------------------
   TRUE            DEFAULT_MAINTENANCE_PLAN       +000 04:00:00    freq=daily;byday=MON;byhour=22
                                                                   ;byminute=0; bysecond=0
   ```

1. 使用 `DBMS_SCHEDULER` 套件修改視窗。

   下列範例會將資源計劃設定為 null，則資源管理員不會在維護視窗期間執行。

   ```
   BEGIN
     -- disable the window to make changes
     DBMS_SCHEDULER.DISABLE(name=>'"SYS"."MONDAY_WINDOW"',force=>TRUE);
   
     -- specify the empty string to use no plan
     DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."MONDAY_WINDOW"', attribute=>'RESOURCE_PLAN', value=>'');
   
     -- re-enable the window
     DBMS_SCHEDULER.ENABLE(name=>'"SYS"."MONDAY_WINDOW"');
   END;
   /
   ```

   下列範例會將視窗的最長持續時間設定為 2 小時。

   ```
   BEGIN
     DBMS_SCHEDULER.DISABLE(name=>'"SYS"."MONDAY_WINDOW"',force=>TRUE);
     DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."MONDAY_WINDOW"', attribute=>'DURATION', value=>'0 2:00:00');
     DBMS_SCHEDULER.ENABLE(name=>'"SYS"."MONDAY_WINDOW"');
   END;
   /
   ```

   下列範例會將重複間隔設定為每個星期一上午 10 點。

   ```
   BEGIN
     DBMS_SCHEDULER.DISABLE(name=>'"SYS"."MONDAY_WINDOW"',force=>TRUE);
     DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."MONDAY_WINDOW"', attribute=>'REPEAT_INTERVAL', value=>'freq=daily;byday=MON;byhour=10;byminute=0;bysecond=0');
     DBMS_SCHEDULER.ENABLE(name=>'"SYS"."MONDAY_WINDOW"');
   END;
   /
   ```

## 設定 Oracle Scheduler 任務的時區
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.TimeZone"></a>

若要修改 Oracle Scheduler 的時區，您可以使用 Oracle 程序 `dbms_scheduler.set_scheduler_attribute`。如需 `dbms_scheduler` 套件的詳細資訊，請參閱 Oracle 文件中的 [DBMS\$1SCHEDULER](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_SCHEDULER.html) 和 [SET\$1SCHEDULER\$1ATTRIBUTE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_SCHEDULER.html#GUID-2AB97BF7-7154-4E6C-933F-B2659B18A907)。

**修改目前時區設定**

1. 使用如 SQL Developer 的用戶端連線至資料庫。如需更多詳細資訊，請參閱 [使用 Oracle SQL Developer 連線至您的資料庫執行個體](USER_ConnectToOracleInstance.SQLDeveloper.md)。

1. 設置預設時區，如下所示，將您的時區替換為 `time_zone_name`。

   ```
   BEGIN
     DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE(
       attribute => 'default_timezone',
       value => 'time_zone_name'
     );
   END;
   /
   ```

在下列範例中，您將時區變更為亞洲/上海。

從查詢目前的時區開始，如下所示。

```
SELECT VALUE FROM DBA_SCHEDULER_GLOBAL_ATTRIBUTE WHERE ATTRIBUTE_NAME='DEFAULT_TIMEZONE';
```

輸出顯示目前的時區是 ETC/UTC。

```
VALUE
-------
Etc/UTC
```

然後您將時區設定為亞洲/上海。

```
BEGIN
  DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE(
    attribute => 'default_timezone',
    value => 'Asia/Shanghai'
  );
END;
/
```

如需變更系統時區的詳細資訊，請參閱[Oracle 時區](Appendix.Oracle.Options.Timezone.md)。

## 關閉 SYS 擁有的 Oracle Scheduler 任務
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Disabling"></a>

若要停用 SYS 使用者擁有的 Oracle Scheduler 任務，請使用 `rdsadmin.rdsadmin_dbms_scheduler.disable` 程序。

這個程序會對 Oracle Scheduler 任務使用 `name` 一般參數。如需更多詳細資訊，請參閱 [Oracle Scheduler 程序的常見參數](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters)。

下列範例會停用 `SYS.CLEANUP_ONLINE_IND_BUILD` Oracle Scheduler 任務。

```
BEGIN
   rdsadmin.rdsadmin_dbms_scheduler.disable('SYS.CLEANUP_ONLINE_IND_BUILD');
END;
/
```

## 開啟 SYS 擁有的 Oracle Scheduler 任務
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Enabling"></a>

若要開啟 STS 擁有的 Oracle Scheduler 任務，請使用 `rdsadmin.rdsadmin_dbms_scheduler.enable` 程序。

這個程序會對 Oracle Scheduler 任務使用 `name` 一般參數。如需更多詳細資訊，請參閱 [Oracle Scheduler 程序的常見參數](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters)。

下列範例會啟用 `SYS.CLEANUP_ONLINE_IND_BUILD` Oracle Scheduler 任務。

```
BEGIN
   rdsadmin.rdsadmin_dbms_scheduler.enable('SYS.CLEANUP_ONLINE_IND_BUILD');
END;
/
```

## 針對 CALENDAR 類型的任務，修改 Oracle Scheduler 重複間隔
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Modifying_Calendar"></a>

若要修改重複間隔以修改 `CALENDAR` 類型、系統擁有的 Oracle Scheduler 任務，請使用 `rdsadmin.rdsadmin_dbms_scheduler.disable` 程序。

這個程序會對 Oracle Scheduler 任務使用下列一般參數：
+ `name`
+ `attribute`
+ `value`

如需更多詳細資訊，請參閱 [Oracle Scheduler 程序的常見參數](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters)。

下列範例會修改 `SYS.CLEANUP_ONLINE_IND_BUILD` Oracle Scheduler 任務的重複間隔。

```
BEGIN
     rdsadmin.rdsadmin_dbms_scheduler.set_attribute(
          name      => 'SYS.CLEANUP_ONLINE_IND_BUILD', 
          attribute => 'repeat_interval', 
          value     => 'freq=daily;byday=FRI,SAT;byhour=20;byminute=0;bysecond=0');
END;
/
```

## 針對 NAMED 類型的任務，修改 Oracle Scheduler 重複間隔
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Modifying_Named"></a>

有些 Oracle Scheduler 任務會使用排程名稱，而非間隔。針對此類型的任務，您必須在主要使用者結構描述中建立新的指定排程。請使用標準的 Oracle `sys.dbms_scheduler.create_schedule` 程序來執行此動作。同時，使用 `rdsadmin.rdsadmin_dbms_scheduler.set_attribute procedure` 將新命名的排程指派給任務。

這個程序會對 Oracle Scheduler 任務使用下列一般參數：
+ `name`
+ `attribute`
+ `value`

如需更多詳細資訊，請參閱 [Oracle Scheduler 程序的常見參數](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters)。

下列範例會修改 `SYS.BSLN_MAINTAIN_STATS_JOB` Oracle Scheduler 任務的重複間隔。

```
BEGIN
     DBMS_SCHEDULER.CREATE_SCHEDULE (
          schedule_name   => 'rds_master_user.new_schedule',
          start_date      => SYSTIMESTAMP,
          repeat_interval => 'freq=daily;byday=MON,TUE,WED,THU,FRI;byhour=0;byminute=0;bysecond=0',
          end_date        => NULL,
          comments        => 'Repeats daily forever');
END;
/
 
BEGIN
     rdsadmin.rdsadmin_dbms_scheduler.set_attribute (
          name      => 'SYS.BSLN_MAINTAIN_STATS_JOB', 
          attribute => 'schedule_name',
          value     => 'rds_master_user.new_schedule');
END;
/
```

## 建立 Oracle Scheduler 任務時關閉自動認可
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.autocommit"></a>

`DBMS_SCHEDULER.CREATE_JOB` 建立 Oracle Scheduler 任務時，其會立即建立任務並認可變更。您可能需要在使用者交易中納入 Oracle Scheduler 任務的建立，來執行下列動作：
+ 復原使用者交易後，復原 Oracle Schedule 任務。
+ 認可主要使用者交易後，建立 Oracle Scheduler 任務。

您可以使用程序 `rdsadmin.rdsadmin_dbms_scheduler.set_no_commit_flag` 開啟此行為。這個程序不需採用任何參數。您可以在下列 RDS for Oracle 版本中使用此程序：
+ 21.0.0.0.ru-2022-07.rur-2022-07.r1 和更新版本
+ 19.0.0.0.ru-2022-07.rur-2022-07.r1 和更新版本

下列範例會關閉 Oracle Scheduler 的自動認可、建立 Oracle Scheduler 任務，然後復原交易。因為自動認可已關閉，所以此資料庫也會復原 Oracle Scheduler 任務的建立。

```
BEGIN
  rdsadmin.rdsadmin_dbms_scheduler.set_no_commit_flag;
  DBMS_SCHEDULER.CREATE_JOB(job_name   => 'EMPTY_JOB', 
                            job_type   => 'PLSQL_BLOCK', 
                            job_action => 'begin null; end;',
                            auto_drop  => false);
  ROLLBACK;
END;
/

PL/SQL procedure successfully completed.

SELECT * FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME='EMPTY_JOB';

no rows selected
```

# 診斷 RDS for Oracle 資料庫執行個體的問題
<a name="Appendix.Oracle.CommonDBATasks.Diagnostics"></a>

Oracle 資料庫包含可用來調查資料庫問題的故障性基礎架構。在 Oracle 術語中，*problem (問題)* 是嚴重錯誤，例如程式碼錯誤或資料損毀。*Incident (事件)* 則是發生問題。如果同樣的錯誤發生三次，則基礎結構會顯示這個問題的三個事件。如需詳細資訊，請參閱 Oracle 資料庫文件中的[診斷和解決問題](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/diagnosing-and-resolving-problems.html#GUID-8DEB1BE0-8FB9-4FB2-A19A-17CF6F5791C3)。

自動診斷儲存器命令解譯器 (ADRCI) 公用程式是 Oracle 命令列工具，您可以用來管理診斷資料。例如，您可以使用這個工具來調查問題，並封裝診斷資料。*incident package (事件套件)* 包含事件或參考特定問題之所有事件的診斷資料。您可以將事件套件 (實作為 .zip 檔案) 上傳至 Oracle 支援。

為了提供受管的服務體驗，Amazon RDS 並不會提供 ADRCI 的 Shell 存取權。若要針對 RDS for Oracle 資料庫執行個體執行診斷任務，請使用 Amazon RDS 套件 `rdsadmin.rdsadmin_adrci_util`。

透過使用 `rdsadmin_adrci_util` 中的函數，您可以列出並封裝問題和事件，也可以顯示追蹤檔案。所有函數都會傳回工作 ID。此 ID 構成包含 ADRCI 輸出的記錄檔名稱的一部分，如 `dbtask-task_id.log` 中所示。記錄檔位於 BDUMP 目錄中。您可以藉由遵循 [下載資料庫日誌檔案](USER_LogAccess.Procedural.Downloading.md) 中所述的程序，下載日誌檔案。

## 診斷程序的常見參數
<a name="Appendix.Oracle.CommonDBATasks.CommonDiagParameters"></a>

若要執行診斷工作，請使用 Amazon RDS 封裝 `rdsadmin.rdsadmin_adrci_util` 中的函數。以下即為該套件的常見參數。


****  

| 參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `incident_id`  |  數字  |  有效的事件 ID 或 null   |  Null  |  否  |  如果值為 null，則函數會顯示所有事件。如果值不是 null 且代表有效的事件 ID，則函數會顯示指定的事件。  | 
|  `problem_id`  |  數字  |  有效的問題 ID 或 null  |  Null  |  否  |  如果該值為 null，該函數會顯示所有問題。如果值不為 null 且代表有效的問題 ID，則函數會顯示指定的問題。  | 
|  `last`  |  數字  |  大於 0 或 null 的有效整數  |  Null  |  否  |  如果該值為空，則該函數最多顯示 50 個項目。如果該值不為 null，函數會顯示指定的數字。  | 

## 列出事件
<a name="Appendix.Oracle.CommonDBATasks.Incidents"></a>

若要列出 Oracle 的診斷事件，請使用此 Amazon RDS 函數 `rdsadmin.rdsadmin_adrci_util.list_adrci_incidents`。您可以在基本或詳細模式中列出事件。依預設，此函數會列出最近 50 個事件。

此函數使用下列一般參數：
+  `incident_id`
+  `problem_id`
+  `last`

如果您指定 `incident_id` 和 `problem_id`，則 `incident_id` 會覆寫 `problem_id`。如需詳細資訊，請參閱[診斷程序的常見參數](#Appendix.Oracle.CommonDBATasks.CommonDiagParameters)。

此函數使用以下附加參數。


****  

| 參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `detail`  |  布林值  | TRUE 或 FALSE \$1 |  `FALSE`  |  否  |  如果 `TRUE`，該函數會以詳細模式列出事件。如果 `FALSE`，此函數會以基本模式列出事件。  | 

如要列出所有事件，請查詢不含任何引數的 `rdsadmin.rdsadmin_adrci_util.list_adrci_incidents` 函數。此查詢會傳回任務 ID。

```
SQL> SELECT rdsadmin.rdsadmin_adrci_util.list_adrci_incidents AS task_id FROM DUAL;

TASK_ID
------------------
1590786706158-3126
```

或者呼叫不含任何引數的 `rdsadmin.rdsadmin_adrci_util.list_adrci_incidents` 函數，並將輸出存放在 SQL 用戶端變數中。您可以在其他陳述式中使用變數。

```
SQL> VAR task_id VARCHAR2(80);
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_incidents;

PL/SQL procedure successfully completed.
```

若要讀取日誌檔案，請呼叫 Amazon RDS 程序 `rdsadmin.rds_file_util.read_text_file`。提供任務 ID 做為檔案名稱的一部分。下列輸出顯示三個事件：53523、53522 和 53521。

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
-------------------------------------------------------------------------------------------------------------------------
2020-05-29 21:11:46.193 UTC [INFO ] Listing ADRCI incidents.
2020-05-29 21:11:46.256 UTC [INFO ]
ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL:
*************************************************************************
INCIDENT_ID PROBLEM_KEY                                                 CREATE_TIME
----------- ----------------------------------------------------------- ----------------------------------------
53523       ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_003 2020-05-29 20:15:20.928000 +00:00
53522       ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_002 2020-05-29 20:15:15.247000 +00:00
53521       ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_001 2020-05-29 20:15:06.047000 +00:00
3 rows fetched


2020-05-29 21:11:46.256 UTC [INFO ] The ADRCI incidents were successfully listed.
2020-05-29 21:11:46.256 UTC [INFO ] The task finished successfully.

14 rows selected.
```

若要列出特定事件，請使用 `incident_id` 參數指定其 ID。在下列範例中，您只查詢事件 53523 的日誌檔案。

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_incidents(incident_id=>53523);

PL/SQL procedure successfully completed.

SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
------------------------------------------------------------------------------------------------------------------
2020-05-29 21:15:25.358 UTC [INFO ] Listing ADRCI incidents.
2020-05-29 21:15:25.426 UTC [INFO ]
ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL:
*************************************************************************
INCIDENT_ID          PROBLEM_KEY                                                 CREATE_TIME
-------------------- ----------------------------------------------------------- ---------------------------------
53523                ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_003 2020-05-29 20:15:20.928000 +00:00
1 rows fetched


2020-05-29 21:15:25.427 UTC [INFO ] The ADRCI incidents were successfully listed.
2020-05-29 21:15:25.427 UTC [INFO ] The task finished successfully.

12 rows selected.
```

## 列出問題
<a name="Appendix.Oracle.CommonDBATasks.Problems"></a>

若要列出 Oracle 的診斷問題，請使用 Amazon RDS 函數 `rdsadmin.rdsadmin_adrci_util.list_adrci_problems`。

依預設，該函數會列出 50 個最近的問題。

此函數使用一般參數`problem_id` 和 `last`。如需詳細資訊，請參閱[診斷程序的常見參數](#Appendix.Oracle.CommonDBATasks.CommonDiagParameters)。

若要取得所有問題的任務 ID，請呼叫不含任何引數的 `rdsadmin.rdsadmin_adrci_util.list_adrci_problems` 函數，並將輸出存放在 SQL 用戶端變數中。

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_problems;

PL/SQL procedure successfully completed.
```

若要讀取日誌檔案，請呼叫 `rdsadmin.rds_file_util.read_text_file` 函數，並提供任務 ID 做為檔案名稱的一部分。在下列輸出中，日誌檔案會顯示三個問題：1、2 和 3。

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
----------------------------------------------------------------------------------------------------------------------
2020-05-29 21:18:50.764 UTC [INFO ] Listing ADRCI problems.
2020-05-29 21:18:50.829 UTC [INFO ]
ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL:
*************************************************************************
PROBLEM_ID   PROBLEM_KEY                                                 LAST_INCIDENT        LASTINC_TIME
---------- ----------------------------------------------------------- ------------- ---------------------------------
2          ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_003 53523         2020-05-29 20:15:20.928000 +00:00
3          ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_002 53522         2020-05-29 20:15:15.247000 +00:00
1          ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_001 53521         2020-05-29 20:15:06.047000 +00:00
3 rows fetched


2020-05-29 21:18:50.829 UTC [INFO ] The ADRCI problems were successfully listed.
2020-05-29 21:18:50.829 UTC [INFO ] The task finished successfully.

14 rows selected.
```

在下列範例中，您只列出問題 3。

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_problems(problem_id=>3);

PL/SQL procedure successfully completed.
```

若要讀取問題 3 的日誌檔案，請呼叫 `rdsadmin.rds_file_util.read_text_file`。提供任務 ID 做為檔案名稱的一部分。

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
-------------------------------------------------------------------------
2020-05-29 21:19:42.533 UTC [INFO ] Listing ADRCI problems.
2020-05-29 21:19:42.599 UTC [INFO ]
ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL:
*************************************************************************
PROBLEM_ID PROBLEM_KEY                                                 LAST_INCIDENT LASTINC_TIME
---------- ----------------------------------------------------------- ------------- ---------------------------------
3          ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_002 53522         2020-05-29 20:15:15.247000 +00:00
1 rows fetched


2020-05-29 21:19:42.599 UTC [INFO ] The ADRCI problems were successfully listed.
2020-05-29 21:19:42.599 UTC [INFO ] The task finished successfully.

12 rows selected.
```

## 建立事件套件
<a name="Appendix.Oracle.CommonDBATasks.IncPackages"></a>

您可以使用該 Amazon RDS 函數 `rdsadmin.rdsadmin_adrci_util.create_adrci_package` 建立事件套件。該輸出是一個您可以提供給 Oracle 支援的 .zip 檔案。

此函數使用下列一般參數：
+ `problem_id`
+ `incident_id`

請務必指定上述其中一個參數。如果您同時指定兩個參數，則 `incident_id` 會覆寫 `problem_id`。如需更多詳細資訊，請參閱 [診斷程序的常見參數](#Appendix.Oracle.CommonDBATasks.CommonDiagParameters)。

若要為特定事件建立套件，請使用 `rdsadmin.rdsadmin_adrci_util.create_adrci_package` 參數呼叫 Amazon RDS 函數 `incident_id`。下列範例會為事件 53523 建立套件。

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.create_adrci_package(incident_id=>53523);

PL/SQL procedure successfully completed.
```

若要讀取日誌檔案，請呼叫 `rdsadmin.rds_file_util.read_text_file`。您可以提供任務 ID 做為檔案名稱的一部分。該輸出會顯示您產生的事件套件 `ORA700EVE_20200529212043_COM_1.zip`。

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
--------------------------------------------------------------------------------------------------------------------------------------
2020-05-29 21:20:43.031 UTC [INFO ] The ADRCI package is being created.
2020-05-29 21:20:47.641 UTC [INFO ] Generated package 1 in file /rdsdbdata/log/trace/ORA700EVE_20200529212043_COM_1.zip, mode complete
2020-05-29 21:20:47.642 UTC [INFO ] The ADRCI package was successfully created.
2020-05-29 21:20:47.642 UTC [INFO ] The task finished successfully.
```

若要封裝特定問題的診斷資料，請使用 `problem_id` 參數指定其 ID。在下列範例中，您只封裝問題 3 的資料。

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.create_adrci_package(problem_id=>3);

PL/SQL procedure successfully completed.
```

若要讀取任務輸出，請呼叫 `rdsadmin.rds_file_util.read_text_file`，提供任務 ID 做為檔案名稱的一部分。該輸出會顯示您產生的事件套件 `ORA700EVE_20200529212111_COM_1.zip`。

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
------------------------------------------------------------------------------------------------------------------------------------------------------------
2020-05-29 21:21:11.050 UTC [INFO ] The ADRCI package is being created.
2020-05-29 21:21:15.646 UTC [INFO ] Generated package 2 in file /rdsdbdata/log/trace/ORA700EVE_20200529212111_COM_1.zip, mode complete
2020-05-29 21:21:15.646 UTC [INFO ] The ADRCI package was successfully created.
2020-05-29 21:21:15.646 UTC [INFO ] The task finished successfully.
```

您也可以下載日誌檔案。如需詳細資訊，請參閱[下載資料庫日誌檔案](USER_LogAccess.Procedural.Downloading.md)。

## 顯示追蹤檔案
<a name="Appendix.Oracle.CommonDBATasks.ShowTrace"></a>

您可以使用 Amazon RDS 函數 `rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile`，列出追蹤目錄下的追蹤檔案，以及目前 ADR 主目錄下所有事件目錄下的追蹤檔案。您也可以顯示追蹤檔案和事件追蹤檔案的內容。

此函數使用下列參數。


****  

| 參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `filename`  |  varchar2  | 有效的追蹤檔案名稱 |  Null  |  否  |  如果值為 null，函數會顯示所有追蹤檔案。如果它不是 null，該函數顯示指定的檔案。  | 

若要顯示追蹤檔案，請呼叫 Amazon RDS 函數 `rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile`。

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile;

PL/SQL procedure successfully completed.
```

若要列出追蹤檔案名稱，請呼叫 Amazon RDS 程序 `rdsadmin.rds_file_util.read_text_file`，提供任務 ID 做為檔案名稱的一部分。

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log')) WHERE TEXT LIKE '%/alert_%';

TEXT
---------------------------------------------------------------
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-28
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-27
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-26
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-25
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-24
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-23
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-22
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-21
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log

9 rows selected.
```

在下列範例中，您會產生 `alert_ORCL.log` 的輸出。

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile('diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log');

PL/SQL procedure successfully completed.
```

若要讀取日誌檔案，請呼叫 `rdsadmin.rds_file_util.read_text_file`。提供任務 ID 做為檔案名稱的一部分。該輸出會顯示 alert\$1ORCL.log 的前 10 行。

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log')) WHERE ROWNUM <= 10;

TEXT
-----------------------------------------------------------------------------------------
2020-05-29 21:24:02.083 UTC [INFO ] The trace files are being displayed.
2020-05-29 21:24:02.128 UTC [INFO ] Thu May 28 23:59:10 2020
Thread 1 advanced to log sequence 2048 (LGWR switch)
  Current log# 3 seq# 2048 mem# 0: /rdsdbdata/db/ORCL_A/onlinelog/o1_mf_3_hbl2p8xs_.log
Thu May 28 23:59:10 2020
Archived Log entry 2037 added for thread 1 sequence 2047 ID 0x5d62ce43 dest 1:
Fri May 29 00:04:10 2020
Thread 1 advanced to log sequence 2049 (LGWR switch)
  Current log# 4 seq# 2049 mem# 0: /rdsdbdata/db/ORCL_A/onlinelog/o1_mf_4_hbl2qgmh_.log
Fri May 29 00:04:10 2020

10 rows selected.
```

您也可以下載日誌檔案。如需詳細資訊，請參閱[下載資料庫日誌檔案](USER_LogAccess.Procedural.Downloading.md)。

# 執行 Oracle 資料庫執行處理的雜項任務
<a name="Appendix.Oracle.CommonDBATasks.Misc"></a>

您可以在下文中找到如何在執行 Oracle 的 Amazon RDS 資料庫執行個體上執行雜項 DBA 任務。為了提供受管理的服務體驗，Amazon RDS 並不會提供資料庫執行個體的 Shell 存取權，而且會將存取權限制在某些需要進階權限的系統程序和資料表。

**Topics**
+ [在主要資料儲存空間中建立和捨棄目錄](#Appendix.Oracle.CommonDBATasks.NewDirectories)
+ [列出資料庫執行個體目錄中的檔案](#Appendix.Oracle.CommonDBATasks.ListDirectories)
+ [讀取資料庫執行個體目錄中的檔案](#Appendix.Oracle.CommonDBATasks.ReadingFiles)
+ [存取 Opatch 檔案](#Appendix.Oracle.CommonDBATasks.accessing-opatch-files)
+ [管理建議程式任務](#Appendix.Oracle.CommonDBATasks.managing-advisor-tasks)
+ [可傳輸的資料表空間](rdsadmin_transport_util.md)

## 在主要資料儲存空間中建立和捨棄目錄
<a name="Appendix.Oracle.CommonDBATasks.NewDirectories"></a>

若要建立目錄，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.create_directory`。您可以建立最多 10,000 個目錄，全位於您的主要資料儲存空間。若要建立目錄，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.drop_directory`。

`create_directory` 和 `drop_directory` 程序具有下列必要參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_directory_name`  |  VARCHAR2  |  —  |  是  |  目錄名稱。  | 

下列範例會建立名為 `PRODUCT_DESCRIPTIONS` 的新目錄。

```
EXEC rdsadmin.rdsadmin_util.create_directory(p_directory_name => 'product_descriptions');
```

資料字典會以大寫存放目錄名稱。您可以查詢 `DBA_DIRECTORIES` 來列出目錄。系統會自動選擇實際的主機路徑名稱。下列範例會取得名為 `PRODUCT_DESCRIPTIONS` 目錄的目錄路徑：

```
SELECT DIRECTORY_PATH 
  FROM DBA_DIRECTORIES 
 WHERE DIRECTORY_NAME='PRODUCT_DESCRIPTIONS';
        
DIRECTORY_PATH
----------------------------------------
/rdsdbdata/userdirs/01
```

資料庫執行個體的主要使用者名稱會具有新目錄中的讀寫權限，並且可將存取權授予其他使用者。`EXECUTE` 權限不適用於資料庫執行個體上的目錄。目錄會在您的主要資料儲存空間中建立，並且將耗用空間和輸入/輸出頻寬。

下列範例會捨棄名為 `PRODUCT_DESCRIPTIONS` 的目錄。

```
EXEC rdsadmin.rdsadmin_util.drop_directory(p_directory_name => 'product_descriptions');
```

**注意**  
您也可以使用 Oracle SQL 命令 `DROP DIRECTORY` 捨棄目錄。

捨棄目錄不會移除其內容。這是因為 `rdsadmin.rdsadmin_util.create_directory` 程序可能會重複使用路徑名稱，而已捨棄目錄中的檔案可能會出現在新建立的目錄中。捨棄目錄之前，我們建議您使用 `UTL_FILE.FREMOVE` 從目錄中移除檔案。如需更多詳細資訊，請參閱 Oracle 文件中的 [FREMOVE 程序](https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS70924)。

## 列出資料庫執行個體目錄中的檔案
<a name="Appendix.Oracle.CommonDBATasks.ListDirectories"></a>

若要列出目錄中的檔案，請使用 Amazon RDS 程序 `rdsadmin.rds_file_util.listdir`。Oracle 複本不支援此程序。`listdir` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_directory`  |  varchar2  |  —  |  是  |  要列出的目錄名稱。  | 

下列範例授予目錄 `PRODUCT_DESCRIPTIONS` 的讀/寫權限給使用者 `rdsadmin`，然後列出此目錄中的檔案。

```
GRANT READ,WRITE ON DIRECTORY PRODUCT_DESCRIPTIONS TO rdsadmin;
SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'PRODUCT_DESCRIPTIONS'));
```

## 讀取資料庫執行個體目錄中的檔案
<a name="Appendix.Oracle.CommonDBATasks.ReadingFiles"></a>

若要讀取文字檔案，請使用 Amazon RDS 程序 `rdsadmin.rds_file_util.read_text_file`。`read_text_file` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_directory`  |  varchar2  |  —  |  是  |  包含檔案的目錄名稱。  | 
|  `p_filename`  |  varchar2  |  —  |  是  |  要讀取的檔案名稱。  | 

下列範例會在目錄 `rice.txt` 中建立檔案 `PRODUCT_DESCRIPTIONS`。

```
declare
  fh sys.utl_file.file_type;
begin
  fh := utl_file.fopen(location=>'PRODUCT_DESCRIPTIONS', filename=>'rice.txt', open_mode=>'w');
  utl_file.put(file=>fh, buffer=>'AnyCompany brown rice, 15 lbs');
  utl_file.fclose(file=>fh);
end;
/
```

下列範例會從目錄 `rice.txt` 讀取 `PRODUCT_DESCRIPTIONS` 檔案。

```
SELECT * FROM TABLE
    (rdsadmin.rds_file_util.read_text_file(
        p_directory => 'PRODUCT_DESCRIPTIONS',
        p_filename  => 'rice.txt'));
```

## 存取 Opatch 檔案
<a name="Appendix.Oracle.CommonDBATasks.accessing-opatch-files"></a>

Opatch 是可將修補程式套用和復原到 Oracle 軟體的 Oracle 公用程式。針對確定已將哪些修補程式套用至資料庫，Oracle 採用機制是 `opatch lsinventory` 命令。為針對使用自有授權 (BYOL) 客戶開立服務請求，Oracle 支援會要求 `lsinventory` 檔案，有時也會要求 Opatch 產生的 `lsinventory_detail` 檔案。

為了提供受管的服務體驗，Amazon RDS 並不會提供 Opatch 的 Shell 存取權。相反地，BDUMP 目錄中的 `lsinventory-dbv.txt` 包含與您目前引擎版本相關的修補程式資訊。當您執行次要或主要升級時，Amazon RDS 會在套用修補程式的一小時內更新 `lsinventory-dbv.txt` 。如要確認套用的修補程式，請參閱 `lsinventory-dbv.txt`。此動作與執行 `opatch lsinventory` 命令類似。

**注意**  
本節的範例假設 BDUMP 目錄已命名為 `BDUMP`。在僅供讀取複本上，BDUMP 目錄名稱不同。若要了解如何透過在僅供讀取複本上查詢 `V$DATABASE.DB_UNIQUE_NAME` 以取得 BDUMP 名稱，請參閱[列出檔案](USER_LogAccess.Concepts.Oracle.md#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.ViewingBackgroundDumpDest)。

庫存檔案會使用 Amazon RDS 命名慣例 `lsinventory-dbv.txt` 和 `lsinventory_detail-dbv.txt`，其中 *dbv* 是資料庫版本的完整名稱。`lsinventory-dbv.txt` 檔案可在所有資料庫版本上使用。對應的 `lsinventory_detail-dbv.txt` 適用於 19.0.0.0、ru-2020-01.rur-2020-01.r1 或更新版本。

例如，若您的資料庫版本為 19.0.0.0.ru-2021-07.rur-2021-07.r1，則您的庫存檔案具有下列名稱。

```
lsinventory-19.0.0.0.ru-2021-07.rur-2021-07.r1.txt
lsinventory_detail-19.0.0.0.ru-2021-07.rur-2021-07.r1.txt
```

確保您下載的檔案符合您資料庫引擎的目前版本。

### 主控台
<a name="Appendix.Oracle.CommonDBATasks.accessing-opatch-files.console"></a>

**如何使用主控台下載庫存檔案**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

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

1. 選擇您想檢視的日誌檔案所在的資料庫執行個體的名稱。

1. 選擇 **Logs & events (日誌與事件)** 標籤。

1. 向下捲動至 **Logs (日誌)** 區段。

1. 在**日誌**區段中，搜尋 `lsinventory`。

1. 選取您要存取的檔案，然後選擇**下載**。

### SQL
<a name="Appendix.Oracle.CommonDBATasks.accessing-opatch-files.sql"></a>

若要在 SQL 用戶端中讀取 `lsinventory-dbv.txt`，您可以使用 `SELECT` 陳述式。針對此技術，請使用下列 `rdsadmin` 函數：`rdsadmin.rds_file_util.read_text_file` 或 `rdsadmin.tracefile_listing`。

在下列範例查詢中，將 *dbv* 取代為您的 Oracle 資料庫版本。例如，您的資料庫版本可能是 19.0.0.0.ru-2020-04.rur-2020-04.r1。

```
SELECT text
FROM   TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'lsinventory-dbv.txt'));
```

### PL/SQL
<a name="Appendix.Oracle.CommonDBATasks.accessing-opatch-files.plsql"></a>

若要在 SQL 用戶端中讀取 `lsinventory-dbv.txt`，您可以寫入 PL/SQL 程式。此程式會使用 `utl_file` 來讀取檔案，並使用 `dbms_output` 來列印檔案。這些是 Oracle 提供的套件。

在下列範例程式中，將 *dbv* 取代為您的 Oracle 資料庫版本。例如，您的資料庫版本可能是 19.0.0.0.ru-2020-04.rur-2020-04.r1。

```
SET SERVEROUTPUT ON
DECLARE
  v_file              SYS.UTL_FILE.FILE_TYPE;
  v_line              VARCHAR2(1000);
  v_oracle_home_type  VARCHAR2(1000);
  c_directory         VARCHAR2(30) := 'BDUMP';
  c_output_file       VARCHAR2(30) := 'lsinventory-dbv.txt';
BEGIN
  v_file := SYS.UTL_FILE.FOPEN(c_directory, c_output_file, 'r');
  LOOP
    BEGIN
      SYS.UTL_FILE.GET_LINE(v_file, v_line,1000);
      DBMS_OUTPUT.PUT_LINE(v_line);
    EXCEPTION
      WHEN no_data_found THEN
        EXIT;
    END;
  END LOOP;
END;
/
```

或者，查詢 `rdsadmin.tracefile_listing`，然後將輸出多工緩衝處理至檔案。下列範例會將輸出多工緩衝處理至 `/tmp/tracefile.txt`。

```
SPOOL /tmp/tracefile.txt
SELECT * 
FROM   rdsadmin.tracefile_listing 
WHERE  FILENAME LIKE 'lsinventory%';
SPOOL OFF;
```

## 管理建議程式任務
<a name="Appendix.Oracle.CommonDBATasks.managing-advisor-tasks"></a>

Oracle 資料庫包含許多建議程式。每個建議程式均支援自動化和手動任務。您可以使用 `rdsadmin.rdsadmin_util` 套件來管理一些建議程式任務。

下列引擎版本提供建議程式任務程序：
+ Oracle Database 21c (21.0.0)
+ 19.0.0.0.ru-2021-01.rur-2021-01.r1 版及更新的 Oracle Database 19c 版本 

  如需詳細資訊，請參閱 *Amazon RDS for Oracle 版本備註*中的[版本 19.0.0.0.ru-2021-01.rur-2021-01.r1](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html#oracle-version-RU-RUR.19.0.0.0.ru-2021-01.rur-2021-01.r1)。

**Topics**
+ [設定建議程式任務的參數](#Appendix.Oracle.CommonDBATasks.setting-task-parameters)
+ [停用 AUTO\$1STATS\$1ADVISOR\$1TASK](#Appendix.Oracle.CommonDBATasks.dropping-advisor-task)
+ [重新啟用 AUTO\$1STATS\$1ADVISOR\$1TASK](#Appendix.Oracle.CommonDBATasks.recreating-advisor-task)

### 設定建議程式任務的參數
<a name="Appendix.Oracle.CommonDBATasks.setting-task-parameters"></a>

若要設定某些建議程式任務的參數，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.advisor_task_set_parameter`。`advisor_task_set_parameter` 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_task_name`  |  varchar2  |  —  |  是  |  您要變更其參數的建議程式任務名稱。有效值如下： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.Misc.html)  | 
|  `p_parameter`  |  varchar2  |  —  |  是  |  任務參數的名稱。若要尋找建議程式任務的有效參數，請執行下列查詢。用 `p_task_name` 有效值替代 *p\$1task\$1name*： <pre>COL PARAMETER_NAME FORMAT a30<br />COL PARAMETER_VALUE FORMAT a30<br />SELECT PARAMETER_NAME, PARAMETER_VALUE<br />FROM DBA_ADVISOR_PARAMETERS<br />WHERE TASK_NAME='p_task_name'<br />AND PARAMETER_VALUE != 'UNUSED'<br />ORDER BY PARAMETER_NAME;</pre>  | 
|  `p_value`  |  varchar2  |  —  |  是  |  任務參數的值。若要尋找任務參數的有效值，請執行下列查詢。用 `p_task_name` 有效值替代 *p\$1task\$1name*： <pre>COL PARAMETER_NAME FORMAT a30<br />COL PARAMETER_VALUE FORMAT a30<br />SELECT PARAMETER_NAME, PARAMETER_VALUE<br />FROM DBA_ADVISOR_PARAMETERS<br />WHERE TASK_NAME='p_task_name'<br />AND PARAMETER_VALUE != 'UNUSED'<br />ORDER BY PARAMETER_NAME;</pre>  | 

對於 `ACCEPT_PLANS`，下列 PL/SQL 程式將 `FALSE` 設定為 `SYS_AUTO_SPM_EVOLVE_TASK`。SQL 計劃管理自動化任務會驗證計劃，並產生其問題清單的報告，但不會自動演進計劃。您可以使用報告來識別新的 SQL 計劃基準並手動接受它們。

```
BEGIN 
  rdsadmin.rdsadmin_util.advisor_task_set_parameter(
    p_task_name => 'SYS_AUTO_SPM_EVOLVE_TASK',
    p_parameter => 'ACCEPT_PLANS',
    p_value     => 'FALSE');
END;
```

對於 `EXECUTION_DAYS_TO_EXPIRE`，下列 PL/SQL 程式將 `10` 設定為 `AUTO_STATS_ADVISOR_TASK`。預先定義的任務 `AUTO_STATS_ADVISOR_TASK` 每天會在維護視窗中自動執行一次。此範例會將任務執行的保留期設定為 10 天。

```
BEGIN 
  rdsadmin.rdsadmin_util.advisor_task_set_parameter(
    p_task_name => 'AUTO_STATS_ADVISOR_TASK',
    p_parameter => 'EXECUTION_DAYS_TO_EXPIRE',
    p_value     => '10');
END;
```

### 停用 AUTO\$1STATS\$1ADVISOR\$1TASK
<a name="Appendix.Oracle.CommonDBATasks.dropping-advisor-task"></a>

若要停用 `AUTO_STATS_ADVISOR_TASK`，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.advisor_task_drop`。`advisor_task_drop` 程序接受下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_task_name`  |  varchar2  |  —  |  是  |  待停用建議程式任務的名稱。唯一有效的值為 `AUTO_STATS_ADVISOR_TASK`。  | 

下列命令會捨棄 `AUTO_STATS_ADVISOR_TASK`。

```
EXEC rdsadmin.rdsadmin_util.advisor_task_drop('AUTO_STATS_ADVISOR_TASK')
```

您可以使用 `rdsadmin.rdsadmin_util.dbms_stats_init` 重新啟用 `AUTO_STATS_ADVISOR_TASK`。

### 重新啟用 AUTO\$1STATS\$1ADVISOR\$1TASK
<a name="Appendix.Oracle.CommonDBATasks.recreating-advisor-task"></a>

若要重新啟用 `AUTO_STATS_ADVISOR_TASK`，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.dbms_stats_init`。`dbms_stats_init` 程序不需採用任何參數。

下列命令會重新啟用 `AUTO_STATS_ADVISOR_TASK`。

```
EXEC rdsadmin.rdsadmin_util.dbms_stats_init()
```

# 可傳輸的資料表空間
<a name="rdsadmin_transport_util"></a>

使用 Amazon RDS 套件 `rdsadmin.rdsadmin_transport_util`，將一組資料表空間從內部部署 Oracle 資料庫複製到 RDS for Oracle 資料庫執行個體。在實體層級，可傳輸資料表空間功能可將來源資料檔案與中繼資料檔案逐步複製到您的目標執行個體。您可以使用 Amazon EFS 或 Amazon S3 傳輸檔案。如需更多詳細資訊，請參閱 [使用 Oracle 可傳輸資料表空間進行移轉](oracle-migrating-tts.md)。

**Topics**
+ [將傳輸資料表空間匯入資料庫執行個體](rdsadmin_transport_util_import_xtts_tablespaces.md)
+ [將可傳輸資料表空間中繼資料匯入您的資料庫執行個體](rdsadmin_transport_util_import_xtts_metadata.md)
+ [在資料表空間匯入後列出遺棄的檔案](rdsadmin_transport_util_list_xtts_orphan_files.md)
+ [在資料表空間匯入後刪除遺棄的資料檔案](rdsadmin_transport_util_cleanup_incomplete_xtts_import.md)

# 將傳輸資料表空間匯入資料庫執行個體
<a name="rdsadmin_transport_util_import_xtts_tablespaces"></a>

使用程序 `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces`，從來源資料庫執行個體還原先前匯出的資料表空間。在傳輸階段中，您會備份唯讀資料表空間並匯出 Data Pump 中繼資料、將這些檔案傳輸到目標資料庫執行個體，然後匯入資料表空間。如需詳細資訊，請參閱[階段 4：傳輸資料表空間](oracle-migrating-tts.md#oracle-migrating-tts.final-br-phase)。

## 語法
<a name="rdsadmin_transport_util_import_xtts_tablespaces-syntax"></a>

```
FUNCTION import_xtts_tablespaces(
    p_tablespace_list IN CLOB,
    p_directory_name  IN VARCHAR2,
    p_platform_id     IN NUMBER DEFAULT 13,
    p_parallel        IN INTEGER DEFAULT 0) RETURN VARCHAR2;
```

## Parameters
<a name="rdsadmin_transport_util_import_xtts_tablespaces-parameters"></a>


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_tablespace_list`  |  `CLOB`  |  —  |  是  |  要匯入的資料表空間清單。  | 
|  `p_directory_name`  |  `VARCHAR2`  |  —  |  是  | 包含資料表空間備份的目錄。 | 
|  `p_platform_id`  |  `NUMBER`  |  `13`  |  否  |  提供與備份階段中指定平台 ID 相符的 ID。若要尋找平台列表，請查詢 `V$TRANSPORTABLE_PLATFORM`。預設平台是 Linux x86 64 位元，這是小端。  | 
|  `p_parallel`  |  `INTEGER`  |  `0`  |  否  |  平行處理的程度。根據預設，會停用平行處理。  | 

## 範例
<a name="rdsadmin_transport_util_import_xtts_tablespaces-examples"></a>

以下範例從目錄 *DATA\$1PUMP\$1DIR* 匯入資料表 *TBS1*、*TBS2* 和 *TBS3*。來源平台是 AIX 型系統 (64 位元)，其平台 ID 為 `6`。您可以查詢 `V$TRANSPORTABLE_PLATFORM` 以尋找平台 ID。

```
VAR task_id CLOB

BEGIN
  :task_id:=rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces(
        'TBS1,TBS2,TBS3',
        'DATA_PUMP_DIR',
        p_platform_id => 6);
END;
/

PRINT task_id
```

# 將可傳輸資料表空間中繼資料匯入您的資料庫執行個體
<a name="rdsadmin_transport_util_import_xtts_metadata"></a>

使用 `rdsadmin.rdsadmin_transport_util.import_xtts_metadata` 程序將可傳輸的資料表空間中繼資料匯入 RDS for Oracle 資料庫執行個體。在操作期間，資料表 `rdsadmin.rds_xtts_operation_info` 會顯示中繼資料匯入的狀態。如需詳細資訊，請參閱[步驟 5：匯入目標資料庫執行個體上的資料表空間中繼資料](oracle-migrating-tts.md#oracle-migrating-tts.transport.import-dmp)。

## 語法
<a name="rdsadmin_transport_util_import_xtts_metadata-syntax"></a>

```
PROCEDURE import_xtts_metadata(
    p_datapump_metadata_file IN SYS.DBA_DATA_FILES.FILE_NAME%TYPE,
    p_directory_name         IN VARCHAR2,
    p_exclude_stats          IN BOOLEAN DEFAULT FALSE,
    p_remap_tablespace_list  IN CLOB DEFAULT NULL,
    p_remap_user_list        IN CLOB DEFAULT NULL);
```

## Parameters
<a name="rdsadmin_transport_util_import_xtts_metadata-parameters"></a>


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_datapump_metadata_file`  |  `SYS.DBA_DATA_FILES.FILE_NAME%TYPE`  |  —  |  是  |  包含可傳輸資料表空間描述資料的 Oracle 資料汲取檔案名稱。  | 
|  `p_directory_name`  |  `VARCHAR2`  |  —  |  是  |  包含資料汲取檔案的目錄名稱。  | 
|  `p_exclude_stats`  |  `BOOLEAN`  |  `FALSE`  |  否  |  指示是否排除統計資料的標誌。  | 
|  `p_remap_tablespace_list`  |  `CLOB`  |  NULL  |  否  |  在中繼資料匯入期間要重新對應的資料表空間清單。使用 `from_tbs:to_tbs` 格式。例如，指定 `users:user_data`。  | 
|  `p_remap_user_list`  |  `CLOB`  |  NULL  |  否  |  在中繼資料匯入期間要重新對應的資料表空間清單。使用 `from_schema_name:to_schema_name` 格式。例如，指定 `hr:human_resources`。  | 

## 範例
<a name="rdsadmin_transport_util_import_xtts_metadata-examples"></a>

此範例會從檔案匯入資料表空間中繼資料 *xttdump.dmp*，它位於目錄中 *DATA\$1PUMP\$1DIR*。

```
BEGIN
  rdsadmin.rdsadmin_transport_util.import_xtts_metadata('xttdump.dmp','DATA_PUMP_DIR');
END;
/
```

# 在資料表空間匯入後列出遺棄的檔案
<a name="rdsadmin_transport_util_list_xtts_orphan_files"></a>

使用 `rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files` 列出在資料表空間匯入之後遺棄的資料檔的程序。識別出資料文件後，您可以通過呼叫 `rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import` 將其刪除。

## 語法
<a name="rdsadmin_transport_util_list_xtts_orphan_files-syntax"></a>

```
FUNCTION list_xtts_orphan_files RETURN xtts_orphan_files_list_t PIPELINED;
```

## 範例
<a name="rdsadmin_transport_util_list_xtts_orphan_files-examples"></a>

下列範例執行 `rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files`。輸出會顯示兩個遺棄的資料檔案。

```
SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files);

FILENAME       FILESIZE
-------------- ---------
datafile_7.dbf 104865792
datafile_8.dbf 104865792
```

# 在資料表空間匯入後刪除遺棄的資料檔案
<a name="rdsadmin_transport_util_cleanup_incomplete_xtts_import"></a>

使用 `rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files` 程序刪除在資料表空間匯入之後遺棄的資料檔案。執行此命令會產生使用 `BDUMP` 目錄中名稱格式的日誌檔 `rds-xtts-delete_xtts_orphaned_files-YYYY-MM-DD.HH24-MI-SS.FF.log`。使用 `rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import` 程序找到遺棄的檔案。您可以透過呼叫 `rdsadmin.rds_file_util.read_text_file` 程序來讀取日誌檔。如需詳細資訊，請參閱[階段 6：清理剩餘檔案](oracle-migrating-tts.md#oracle-migrating-tts.cleanup)。

## 語法
<a name="rdsadmin_transport_util_cleanup_incomplete_xtts_import-syntax"></a>

```
PROCEDURE cleanup_incomplete_xtts_import(
    p_directory_name IN VARCHAR2);
```

## Parameters
<a name="rdsadmin_transport_util_cleanup_incomplete_xtts_import-parameters"></a>


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
|  `p_directory_name`  |  `VARCHAR2`  |  —  |  是  |  包含遺棄的資料檔案的目錄。  | 

## 範例
<a name="rdsadmin_transport_util_cleanup_incomplete_xtts_import-examples"></a>

下列範例會刪除 *DATA\$1PUMP\$1DIR* 中遺棄的檔案。

```
BEGIN
  rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import('DATA_PUMP_DIR');
END;
/
```

下列範例會讀取上一個命令所產生的日誌檔。

```
SELECT * 
FROM TABLE(rdsadmin.rds_file_util.read_text_file(
       p_directory => 'BDUMP',
       p_filename  => 'rds-xtts-delete_xtts_orphaned_files-2023-06-01.09-33-11.868894000.log'));

TEXT
--------------------------------------------------------------------------------
orphan transported datafile datafile_7.dbf deleted.
orphan transported datafile datafile_8.dbf deleted.
```

# 在 RDS for Oracle 中使用儲存
<a name="User_Oracle_AdditionalStorage"></a>

每個 RDS for Oracle 執行個體都有一個主要儲存磁碟區。若要增加儲存容量，您最多可以將三個額外的儲存磁碟區連接至資料庫執行個體。根據您的工作負載需求，為每個磁碟區選擇 gp3 和 io2 儲存。例如，您可以將經常存取的資料放在 io2 磁碟區，並將歷史資料放在 gp3 磁碟區。

使用其他儲存磁碟區來啟用下列優點：
+ **增強容量** – 透過連接最多三個額外的儲存磁碟區，將每個資料庫執行個體的總儲存體擴展到 256 TiB。
+ **彈性儲存組態和效能最佳化** – 混合不同的儲存類型 (gp3 和 io2)，根據您的資料存取模式來最佳化成本和效能。將高效能 io2 儲存體上的經常存取資料與經濟實惠的 gp3 儲存體上的封存資料分開。
+ **視需要擴展和減少儲存容量** – 當您需要額外儲存時連接磁碟區，就像在資料遷移期間一樣，然後刪除磁碟區。透過這種方式，您可以擴展和減少總資料庫執行個體儲存體。
+ **線上資料移動** – 使用 Oracle 資料庫的內建功能，在不停機的情況下在磁碟區之間移動資料。

**注意**  
您可以移除其他儲存磁碟區，但無法移除主要磁碟區。

**Topics**
+ [搭配 RDS for Oracle 使用其他儲存磁碟區的考量事項](#User_Oracle_AdditionalStorage.considerations)
+ [搭配 RDS for Oracle 使用其他儲存磁碟區的限制](#User_Oracle_AdditionalStorage.limitations)
+ [RDS for Oracle 中具有其他儲存磁碟區的資料庫管理操作](#User_Oracle_AdditionalStorage.DBManagement)
+ [使用 RDS for Oracle 新增、移除或修改儲存磁碟區](User_Oracle_AdditionalStorage.ModifyStorageVolumes.md)
+ [使用 RDS for Oracle 中的其他儲存磁碟區來備份和還原資料](User_Oracle_AdditionalStorage.BackupRestore.md)
+ [RDS for Oracle 中其他儲存磁碟區的使用案例](User_Oracle_AdditionalStorage.UseCases.md)

## 搭配 RDS for Oracle 使用其他儲存磁碟區的考量事項
<a name="User_Oracle_AdditionalStorage.considerations"></a>

搭配 RDS for Oracle 使用其他儲存磁碟區時，請考慮下列事項：
+ 每個執行個體最多可以新增 3 個額外的儲存磁碟區。
+ 其他儲存磁碟區必須使用下列磁碟區名稱：
  + rdsdbdata2
  + rdsdbdata3
  + rdsdbdata4
+ 您只能新增一般用途 SSD (gp3) 和佈建 IOPS SSD (io2) 儲存類型。
+ 您可以使用 Oracle 的線上重新定位功能，在應用程式繼續執行時在磁碟區之間移動資料。
+ 當您透過修改資料庫執行個體來建立額外的儲存磁碟區時，RDS 會立即建立儲存磁碟區，無論排程修改設定為何。新增儲存磁碟區是線上操作，不會影響您的資料庫效能。請參閱 [使用排程修改設定](USER_ModifyInstance.ApplyImmediately.md)。

為了獲得最佳效能，當您使用其他儲存磁碟區時，請檢查下列項目：
+ 資料移動規劃
  + 在離峰時間排程大型移動
  + 將大型操作分成較小的區塊
  + 在移動期間監控系統資源
+ 資源管理
  + 在兩個磁碟區上保留足夠的可用空間
  + 使用 AWR 或 Statspack 監控 I/O 模式
  + 留意完整儲存案例
+ 最佳實務
  + 盡可能使用線上資料檔案重新定位操作
  + 維護適當的索引
  + 定期監控空間用量

搭配複本使用其他儲存磁碟區時：
+ 當您為具有其他儲存磁碟區的資料庫執行個體建立 RDS for Oracle 複本時，RDS 會自動在複本上設定其他儲存磁碟區。不過，在主要資料庫執行個體的儲存磁碟區中所做的任何後續修改都不會自動套用至複本。
+ 跨磁碟區管理資料檔案位置時，建議使用參數群組設定，而不是工作階段層級變更，以確保主要執行個體和複本執行個體之間的行為一致。

## 搭配 RDS for Oracle 使用其他儲存磁碟區的限制
<a name="User_Oracle_AdditionalStorage.limitations"></a>

下列限制適用於搭配 RDS for Oracle 使用其他儲存磁碟區：
+ 您無法將儲存磁碟區新增至記憶體小於 64GiB 的執行個體類型，因為它們沒有足夠的記憶體來支援大型儲存磁碟區。
+ 其他儲存磁碟區的最小儲存大小為 200GiB。資料庫執行個體的主要儲存磁碟區應等於或大於 200GiB，以連接額外的儲存磁碟區。在所有磁碟區中，資料庫執行個體的儲存大小上限為總計 256 TiB。
+ 具有其他儲存磁碟區的資料庫執行個體不支援下列功能：
  + 跨區域自動備份
  + 儲存體自動擴展 （適用於其他儲存磁碟區）
  + 跨帳戶快照複本
  + 公有快照
+ 您無法刪除主要儲存磁碟區 (`rdsdbdata`)，但您可以刪除其他額外的儲存磁碟區，只要它們是空的即可。
+ 您無法將線上重做日誌、封存的重做日誌和控制檔案存放在其他儲存磁碟區中。這些檔案只能存放在主要儲存磁碟區 () 中`rdsdbdata`。

## RDS for Oracle 中具有其他儲存磁碟區的資料庫管理操作
<a name="User_Oracle_AdditionalStorage.DBManagement"></a>

您可以執行資料庫管理操作，例如建立資料表空間或在儲存磁碟區之間移動資料，同時使用 RDS for Oracle 中的其他儲存磁碟區。如需使用其他儲存磁碟區進行資料庫管理操作的詳細資訊，請參閱下列各節：
+ [在 RDS for Oracle 中指定資料庫檔案位置](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.DatabaseFileLocations)
+ [在 RDS for Oracle 中建立和調整資料表空間的大小](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles)
+ [在 RDS for Oracle 中的磁碟區之間移動資料檔案](Appendix.Oracle.CommonDBATasks.MovingDataBetweenVolumes.md#Appendix.Oracle.CommonDBATasks.MovingDatafiles)

# 使用 RDS for Oracle 新增、移除或修改儲存磁碟區
<a name="User_Oracle_AdditionalStorage.ModifyStorageVolumes"></a>

您可以使用 AWS 管理主控台 或 新增、修改和移除其他儲存磁碟區 AWS CLI。所有操作都會搭配 `additional-storage-volumes` 參數使用 `modify-db-instance`命令。

**重要**  
新增或移除其他儲存磁碟區會建立備份待定動作和中斷時段。備份工作流程完成時，中斷時段會關閉。



## 新增儲存磁碟區
<a name="User_Oracle_AdditionalStorage.ModifyStorageVolumes.Add"></a>

除了主要儲存磁碟區之外，您最多可以新增三個儲存磁碟區。若要將新的儲存磁碟區新增至 RDS for Oracle 資料庫執行個體，請使用 `modify-db-instance`命令搭配 `additional-storage-volumes` 參數。

下列程式碼片段新增了 5，000 GiB 一般用途 SSD (gp3) 磁碟區，其中包含 4000 個佈建 IOPS 名稱 `rdsdbdata3`。

```
aws rds modify-db-instance \
  --db-instance-identifier my-oracle-instance \
  --region us-east-1 \
  --additional-storage-volumes '[
        {
            "VolumeName":"rdsdbdata3",
            "StorageType":"gp3",
            "AllocatedStorage":5000
            "IOPS":4000}
    ]' \
  --apply-immediately
```

## 修改儲存磁碟區
<a name="User_Oracle_AdditionalStorage.ModifyStorageVolumes.Modifying"></a>

您可以修改額外儲存磁碟區的儲存類型、配置的儲存大小、IOPS 和儲存輸送量設定。下列程式碼片段會修改`rdsdbdata2`磁碟區的 IOPS 設定。

```
aws rds modify-db-instance \
  --db-instance-identifier my-oracle-instance \
  --region us-east-1 \
  --additional-storage-volumes '[
        {
            "VolumeName":"rdsdbdata2",
            "IOPS":8000}
    ]' \
  --apply-immediately
```

**注意**  
將額外儲存磁碟區新增至執行個體後，就無法減少額外儲存磁碟區的儲存配置。

## 移除儲存磁碟區
<a name="User_Oracle_AdditionalStorage.ModifyStorageVolumes.Remove"></a>

不再需要儲存磁碟區時，您可以從 RDS for Oracle 資料庫執行個體中移除其他儲存磁碟區。在移除磁碟區之前，請確定您已從磁碟區移動所有資料庫檔案，而且沒有資料庫物件正在參考它。確認磁碟區狀態為 `Not-in-use`。您可以移除其他儲存磁碟區，但無法移除主要儲存磁碟區。

**警告**  
移除額外的儲存磁碟區之前，請確定磁碟區上沒有儲存資料庫檔案。移除具有作用中資料庫檔案的磁碟區會導致資料庫損毀。

下列範例會移除 `rdsdbdata4`磁碟區。

```
aws rds modify-db-instance \
  --db-instance-identifier my-oracle-instance \
  --region us-east-1 \
  --additional-storage-volumes '[
        {
            "VolumeName":"rdsdbdata2",
            "SetForDelete":true}
    ]' \
  --apply-immediately
```

# 使用 RDS for Oracle 中的其他儲存磁碟區來備份和還原資料
<a name="User_Oracle_AdditionalStorage.BackupRestore"></a>

您可以使用自動備份，並使用具有額外儲存磁碟區的資料庫執行個體建立資料庫快照。所有備份操作都包含主要磁碟區和其他儲存磁碟區。您也可以將資料庫執行個體的point-in-time復原與額外的儲存磁碟區搭配使用。還原資料庫時，您可以新增儲存磁碟區。您也可以修改現有磁碟區的儲存設定。當您從快照還原資料庫時，無法刪除其他儲存磁碟區。

**Topics**
+ [建立手動快照](#User_Oracle_AdditionalStorage.BackupRestore.ManualSnapshots)
+ [還原手動快照](#User_Oracle_AdditionalStorage.BackupRestore.RestoreSnapshots)
+ [時間點復原](#User_Oracle_AdditionalStorage.BackupRestore.PitR)

## 建立手動快照
<a name="User_Oracle_AdditionalStorage.BackupRestore.ManualSnapshots"></a>

下列範例會使用其他儲存磁碟區建立資料庫的手動快照：

```
aws rds create-db-snapshot \
--db-instance-identifier my-oracle-asv-instance \
--db-snapshot-identifier my-snapshot
```

## 還原手動快照
<a name="User_Oracle_AdditionalStorage.BackupRestore.RestoreSnapshots"></a>

從快照還原時，您可以新增新的其他儲存磁碟區，或修改現有磁碟區的 IOPS 或輸送量設定。下列範例會從快照還原資料庫執行個體，並修改`rdsdbdata2`磁碟區的 IOPS 設定：

```
aws rds restore-db-instance-from-db-snapshot \
  --db-instance-identifier my-restored-instance \
  --db-snapshot-identifier my-snapshot \
  --region us-east-1 \
  --additional-storage-volumes '[
        {
            "VolumeName":"rdsdbdata2",
            "IOPS":5000
        }
    ]'
```

## 時間點復原
<a name="User_Oracle_AdditionalStorage.BackupRestore.PitR"></a>

在point-in-time(PITR) 期間，您可以使用自訂組態新增額外的儲存磁碟區。下列範例會執行 PITR，並新增 5，000 GiB 一般用途 SSD (gp3)，其磁碟`rdsdbdata2`區的儲存輸送量為 5000 IOPS 和 200 MB/s：

```
aws rds restore-db-instance-to-point-in-time \
  --source-db-instance-identifier my-source-instancemy-source-instance \
  --target-db-instance my-pitr-instance\
  --use-latest-restorable-time \
  --region us-east-1 \
  --additional-storage-volumes '[
        {
            "VolumeName":"rdsdbdata2",
            "StorageType":"gp3",
            "AllocatedStorage":5000,
            "IOPS":5000,
            "StorageThroughput":200
        }
    ]'
```

# RDS for Oracle 中其他儲存磁碟區的使用案例
<a name="User_Oracle_AdditionalStorage.UseCases"></a>

其他儲存磁碟區支援各種資料庫管理案例。下列各節說明常見的使用案例和實作方法。

**Topics**
+ [將儲存容量擴展到超過 64 TiB](#User_Oracle_AdditionalStorage.UseCases.Extendingstoragecapacity)
+ [不同磁碟區上經常和不常存取資料的儲存分層](#User_Oracle_AdditionalStorage.UseCases.Storagetiering)
+ [用於載入和卸載資料的暫時儲存](#User_Oracle_AdditionalStorage.UseCases.Temporarystorage)
+ [使用 Oracle 可傳輸資料表空間搭配額外的儲存磁碟區](#User_Oracle_AdditionalStorage.UseCases.TransportableTablespaces)

## 將儲存容量擴展到超過 64 TiB
<a name="User_Oracle_AdditionalStorage.UseCases.Extendingstoragecapacity"></a>

當您的主要儲存磁碟區接近 64 TiB 限制，但資料庫中需要更多儲存空間時，您可以使用額外的儲存磁碟區。您可以使用 `modify-db-instance`命令，將額外的儲存磁碟區連接至資料庫執行個體，每個儲存磁碟區最多 64TiB。連接其他儲存磁碟區後，您可以在其他儲存磁碟區上建立資料表空間，並使用標準 Oracle SQL 將資料表、索引和分割區等物件移至這些資料表空間。如需詳細資訊，請參閱[RDS for Oracle 中具有其他儲存磁碟區的資料庫管理操作](User_Oracle_AdditionalStorage.md#User_Oracle_AdditionalStorage.DBManagement)。

## 不同磁碟區上經常和不常存取資料的儲存分層
<a name="User_Oracle_AdditionalStorage.UseCases.Storagetiering"></a>

您可以使用額外的儲存磁碟區，透過在磁碟區之間設定不同的儲存類型來最佳化成本和效能。例如，您可以將高效能佈建 IOPS SSD 儲存 (io2) 磁碟區用於經常存取的資料，同時在符合成本效益的一般用途 (gp3) 儲存磁碟區上儲存歷史資料。您可以使用標準 Oracle 命令，將特定資料庫物件 （資料表、索引和分割區） 移至這些資料表空間。如需詳細資訊，請參閱[RDS for Oracle 中具有其他儲存磁碟區的資料庫管理操作](User_Oracle_AdditionalStorage.md#User_Oracle_AdditionalStorage.DBManagement)。

## 用於載入和卸載資料的暫時儲存
<a name="User_Oracle_AdditionalStorage.UseCases.Temporarystorage"></a>

您可以透過下列步驟，使用額外的儲存磁碟區做為大型資料載入或匯出的暫時儲存：
+ 使用下列命令在其他儲存磁碟區上建立目錄：

  ```
  BEGIN
  rdsadmin.rdsadmin_util.create_directory(
              p_directory_name => 'DATA_PUMP_DIR2',
              p_database_volume_name => 'rdsdbdata2');
  END;
  /
  ```
+ 建立目錄之後，請依照中所述的步驟[使用 Oracle Data Pump 匯入](Oracle.Procedural.Importing.DataPump.md)，將您的資料匯出和匯入新目錄。
+ 操作完成後，移除檔案並選擇性地刪除磁碟區以節省儲存成本。您只能在磁碟區為空時移除額外的儲存磁碟區。

## 使用 Oracle 可傳輸資料表空間搭配額外的儲存磁碟區
<a name="User_Oracle_AdditionalStorage.UseCases.TransportableTablespaces"></a>

您可以使用額外的儲存磁碟區，透過下列步驟，使用 Oracle 可傳輸資料表空間將資料檔案移至額外的儲存磁碟區：
+ 在工作階段層級設定`db_create_file_dest`參數，然後再將可傳輸資料表空間匯入具有額外儲存磁碟區的目標資料庫。

  ```
  ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';
  
  VAR x CLOB;
  
  BEGIN
  :x := rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces(
  p_tablespace_list => 'TBTEST1',
  p_directory_name => 'XTTS_DIR_DATA2',
  p_platform_id => 13);
  END;
  /
  
  PRINT :x;
  ```
+ 檢查可傳輸資料表空間匯入狀態：

  ```
  ALTER SESSION SET nls_date_format = 'DD.MM.YYYY HH24:MI:SS';
  
  COL xtts_operation_start_utc FORMAT A30
  COL xtts_operation_end_utc FORMAT A30
  COL xtts_operation_state FORMAT A30
  COL xtts_operation_type FORMAT A30
  
  SELECT xtts_operation_start_utc, xtts_operation_type, xtts_operation_state
  FROM rdsadmin.rds_xtts_operation_info;
  ```
+ 當可傳輸資料表空間匯入完成時，匯入可傳輸資料表空間中繼資料。

  ```
  BEGIN
  rdsadmin.rdsadmin_transport_util.import_xtts_metadata(
  p_datapump_metadata_file => 'xttdump.dmp',
  p_directory_name => 'XTTS_DIR_DATA2');
  END;
  /
  ```

# 設定進階 RDS for Oracle 功能
<a name="CHAP_Oracle.advanced-features"></a>

RDS for Oracle 支援各種進階功能，包括 HugePages、執行個體儲存體和延伸資料類型。

**Topics**
+ [將暫存資料存放在 RDS for Oracle 執行個體儲存體中](CHAP_Oracle.advanced-features.instance-store.md)
+ [對 RDS for Oracle 執行個體開啟巨型分頁](Oracle.Concepts.HugePages.md)
+ [在 RDS for Oracle 中開啟擴充資料類型](Oracle.Concepts.ExtendedDataTypes.md)

# 將暫存資料存放在 RDS for Oracle 執行個體儲存體中
<a name="CHAP_Oracle.advanced-features.instance-store"></a>

在支援的 RDS for Oracle DB 資料庫執行個體類別上，將執行個體儲存體用於暫存資料表空間和資料庫智慧型快閃記憶體快取 (快閃記憶體快取)。

**Topics**
+ [RDS for Oracle 執行個體儲存體的概觀](#CHAP_Oracle.advanced-features.instance-store.overview)
+ [開啟 RDS for Oracle 執行個體儲存體](#CHAP_Oracle.advanced-features.instance-store.Enable)
+ [設定 RDS for Oracle 執行個體儲存體](CHAP_Oracle.advanced-features.instance-store.configuring.md)
+ [使用 Oracle 僅供讀取複本上的執行個體儲存體](CHAP_Oracle.advanced-features.instance-store.replicas.md)
+ [在執行個體儲存體和 Amazon EBS 上設定暫存資料表空間群組](CHAP_Oracle.advanced-features.instance-store.temp-ebs.md)
+ [移除 RDS for Oracle 執行個體儲存體](#CHAP_Oracle.advanced-features.instance-store.Disable)

## RDS for Oracle 執行個體儲存體的概觀
<a name="CHAP_Oracle.advanced-features.instance-store.overview"></a>

「執行個體儲存體」**為 RDS for Oracle 資料庫執行個體提供暫時的區塊層級儲存體。您可以使用執行個體儲存體來暫時儲存經常變更的資訊。

執行個體儲存體是以實際連接至主機電腦的非揮發性記憶體儲存裝置 (NVMe) 為基礎。此儲存體已針對低延遲、隨機 I/O 效能，以及循序讀取輸送量進行最佳化。

執行個體儲存體的大小會因資料庫執行個體類型而有所不同。如需執行個體儲存體的詳細資訊，請參閱《適用於 Linux 執行個體的 Amazon Elastic Compute Cloud 使用者指南》**中的 [Amazon EC2 執行個體儲存體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html)。

**Topics**
+ [RDS for Oracle 執行個體儲存體中的資料類型](#CHAP_Oracle.advanced-features.instance-store.overview.uses)
+ [RDS for Oracle 執行個體儲存體的好處](#CHAP_Oracle.advanced-features.instance-store.overview.benefits)
+ [RDS for Oracle 執行個體儲存體支援的執行個體類別](#CHAP_Oracle.advanced-features.instance-store.overview.instance-classes)
+ [RDS for Oracle 執行個體儲存體支援的引擎版本](#CHAP_Oracle.advanced-features.instance-store.overview.db-versions)
+ [AWS 區域 支援 RDS for Oracle 執行個體存放區](#CHAP_Oracle.advanced-features.instance-store.overview.regions)
+ [RDS for Oracle 執行個體儲存體的成本](#CHAP_Oracle.advanced-features.instance-store.overview.cost)

### RDS for Oracle 執行個體儲存體中的資料類型
<a name="CHAP_Oracle.advanced-features.instance-store.overview.uses"></a>

您可以將下列類型的 RDS for Oracle 暫存資料放置在執行個體儲存體中：

暫存資料表空間  
Oracle 資料庫會使用暫存資料表空間，存放不適合記憶體的中繼查詢結果。較大的查詢可能會產生大量中繼資料，這些資料需要暫時快取，但不需要持續存在。尤其，暂存資料表空間對於排序、雜湊彙總和聯結很有用。如果 RDS for Oracle 資料庫執行個體使用企業版或標準版 2，您可以在執行個體儲存體中放置暫存資料表空間。

快閃記憶體快取  
快閃記憶體快取可改善傳統路徑中單一區塊隨機讀取的效能。最佳實務是調整快取的大小，以容納大部分的作用中資料集。如果 RDS for Oracle 資料庫執行個體使用企業版，您可以在執行個體儲存體中放置快閃記憶體快取。

根據預設，執行個體儲存體會針對暫存資料表空間設定，但不會針對快閃記憶體快取設定。您無法在執行個體儲存體中放置 Oracle 資料檔和資料庫日誌檔。

### RDS for Oracle 執行個體儲存體的好處
<a name="CHAP_Oracle.advanced-features.instance-store.overview.benefits"></a>

您可能會考慮使用執行個體儲存體，存放可能遺失的暫存檔案和快取。如果您想要改善資料庫效能，或是如果不斷增加的工作負載導致 Amazon EBS 儲存體發生效能問題，請考慮擴展到支援執行個體儲存體的執行個體類別。

將暫存資料表空間和快閃記憶體快取放置在執行個體儲存體上，您可以獲得下列好處：
+ 較低的讀取延遲
+ 較高的輸送量
+ 減少 Amazon EBS 磁碟區的負載
+ 降低 Amazon EBS 負載，因為減少了 Amazon EBS 負載
+ 更不需要佈建高 IOPS，可能會降低整體成本

 將暫存資料表空間放置在執行個體儲存體上，您可以立即提升使用暫存空間的查詢效能。將快閃記憶體快取放置在執行個體儲存體時，快取區塊讀取的延遲通常比 Amazon EBS 讀取的延遲低得多。快閃記憶體快取必須先「熱身」，然後才能提供效能優勢。快取會自行熱身，因為資料庫會在區塊老化而離開資料庫緩衝區快取時，將這些區塊寫入至快閃記憶體快取。

**注意**  
在某些情況下，快閃記憶體快取會由於快取管理而造成效能負荷。在生產環境中開啟快閃記憶體快取之前，建議您先分析工作負載並在測試環境中測試快取。

### RDS for Oracle 執行個體儲存體支援的執行個體類別
<a name="CHAP_Oracle.advanced-features.instance-store.overview.instance-classes"></a>

Amazon RDS 支援下列資料庫執行個體類別的執行個體儲存體：
+ db.m5d
+ db.m6id
+ db.r5d
+ db.r6id
+ db.x2idn
+ db.x2iedn

RDS for Oracle 僅支援 BYOL 授權模式的上述資料庫執行個體類別。如需詳細資訊，請參閱[支援的 RDS for Oracle 資料庫執行個體類別](Oracle.Concepts.InstanceClasses.md#Oracle.Concepts.InstanceClasses.Supported)及[EE 和 SE2 的自帶授權 (BYOL)](Oracle.Concepts.Licensing.md#Oracle.Concepts.Licensing.BYOL)。

若要查看支援的資料庫執行個體類型的總執行個體儲存體，請在 CLI AWS 中執行下列命令。

**Example**  

```
aws ec2 describe-instance-types \
  --filters "Name=instance-type,Values=*5d.*large*,*6id.*large*" \
  --query "InstanceTypes[?contains(InstanceType,'m5d')||contains(InstanceType,'r5d')||contains(InstanceType,'m6id')||contains(InstanceType,'r6id')][InstanceType, InstanceStorageInfo.TotalSizeInGB]" \
  --output table
```

上述命令會傳回執行個體儲存體的原始裝置大小。RDS for Oracle 會將這個空間的一小部分用於組態。執行個體儲存體中可供暫存資料表空間或快閃記憶體快取使用的空間略小。

### RDS for Oracle 執行個體儲存體支援的引擎版本
<a name="CHAP_Oracle.advanced-features.instance-store.overview.db-versions"></a>

下列 RDS for Oracle 引擎版本支援執行個體儲存體。
+ 21.0.0.0.ru-2022-01.rur-2022-01.r1 或更高的 Oracle Database 21c 版本
+ 19.0.0.0.ru-2021-10.rur-2021-10.r1 或更高的 Oracle Database 19c 版本

### AWS 區域 支援 RDS for Oracle 執行個體存放區
<a name="CHAP_Oracle.advanced-features.instance-store.overview.regions"></a>

執行個體存放區可在支援一或多個這些執行個體類型的所有 AWS 區域 中使用。如需 db.m5d 和 db.r5d 執行個體類別的詳細資訊，請參閱 [ 資料庫執行個體類別](Concepts.DBInstanceClass.md)。如需 Amazon RDS for Oracle 支援之執行個體類別的詳細資訊，請參閱 [RDS for Oracle 資料庫執行個體類別](Oracle.Concepts.InstanceClasses.md)。

### RDS for Oracle 執行個體儲存體的成本
<a name="CHAP_Oracle.advanced-features.instance-store.overview.cost"></a>

執行個體儲存體的成本內建於執行個體儲存體開啟的執行個體成本中。在 RDS for Oracle 資料庫執行個體上啟用執行個體儲存體，不會產生額外成本。如需執行個體儲存體開啟的執行個體的詳細資訊，請參閱 [RDS for Oracle 執行個體儲存體支援的執行個體類別](#CHAP_Oracle.advanced-features.instance-store.overview.instance-classes)。

## 開啟 RDS for Oracle 執行個體儲存體
<a name="CHAP_Oracle.advanced-features.instance-store.Enable"></a>

若要開啟 RDS for Oracle 暫存資料的執行個體儲存體，請執行下列其中一個動作：
+ 使用支援的執行個體類別建立 RDS for Oracle 資料庫執行個體。如需詳細資訊，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
+ 修改現有的 RDS for Oracle 資料庫執行個體來使用支援的執行個體類別。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

# 設定 RDS for Oracle 執行個體儲存體
<a name="CHAP_Oracle.advanced-features.instance-store.configuring"></a>

根據預設，100% 的執行個體儲存體空間會配置給暫存資料表空間。若要設定執行個體儲存體，將空間配置給快閃記憶體快取和暫存資料表空間，請在執行個體的參數群組中設定下列參數：

**db\$1flash\$1cache\$1size=\$1DBInstanceStore\$1\$10,2,4,6,8,10\$1/10\$1**  
此參數指定配置給快閃記憶體快取的儲存空間量。此參數僅適用於 Oracle 資料庫企業版。預設值為 `{DBInstanceStore*0/10}`。如果您為 `db_flash_cache_size` 設定非零值，則您的 RDS for Oracle 執行個體會在重新啟動執行個體之後啟用快閃記憶體快取。

**rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$1\$10,2,4,6,8,10\$1/10\$1**  
此參數指定配置給暫存資料表空間的儲存空間量。預設值為 `{DBInstanceStore*10/10}`。此參數對 Oracle 資料庫企業版而言是可修改的，對於標準版 2 而言則是唯讀的。如果您為 `rds.instance_store_temp_size` 設定非零值，Amazon RDS 會在執行個體儲存體中為暫存資料表空間配置空間。  
您可以針對不使用執行個體儲存體的資料庫執行個體設定 `db_flash_cache_size` 和 `rds.instance_store_temp_size` 參數。在此情況下，這兩個設定都會評估為 `0`，這會關閉功能。在此情況下，您可以針對不同的執行個體大小和未使用執行個體儲存體的執行個體使用相同的參數群組。如果您修改這些參數，請務必重新啟動相關聯的執行個體，以便變更可以生效。  
如果您為暫存資料表空間配置空間，則 Amazon RDS 不會自動建立暫存資料表空間。若要了解如何在執行個體儲存體上建立暫存資料表空間，請參閱 [在執行個體儲存體上建立暫存資料表空間](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.creating-tts-instance-store)。

上述參數的合併值不得超過 10/10 或 100%。下表說明有效和無效的參數設定。


| db\$1flash\$1cache\$1size setting | rds.instance\$1store\$1temp\$1size setting | 說明 | 
| --- | --- | --- | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$10/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$110/10\$1  |  這是所有 Oracle 資料庫版本的有效組態。Amazon RDS 會將 100% 的執行個體儲存體空間配置給暫存資料表空間。此為預設值。  | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$110/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$10/10\$1  |  這是僅適用於 Oracle 資料庫企業版的組態。Amazon RDS 會將 100% 的執行個體儲存體空間配置給快閃記憶體快取。  | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$12/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$18/10\$1  |  這是僅適用於 Oracle 資料庫企業版的組態。Amazon RDS 會將 20% 的執行個體儲存體空間配置給快閃記憶體快取，而將 80% 的執行個體儲存體空間配置給暫存資料表空間。  | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$16/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$14/10\$1  |  這是僅適用於 Oracle 資料庫企業版的組態。Amazon RDS 會將 60% 的執行個體儲存體空間配置給快閃記憶體快取，而將 40% 的執行個體儲存體空間配置給暫存資料表空間。  | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$12/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$14/10\$1  | 這是僅適用於 Oracle 資料庫企業版的組態。Amazon RDS 會將 20% 的執行個體儲存體空間配置給快閃記憶體快取，而將 40% 的執行個體儲存體空間配置給暫存資料表空間。 | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$18/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$18/10\$1  |  這是無效的組態，因為執行個體儲存體空間的合併百分比超過 100%。在此情況下，Amazon RDS 無法嘗試。  | 

## 變更資料庫執行個體類型時的考量
<a name="CHAP_Oracle.advanced-features.instance-store.configuring.modifying"></a>

如果您變更資料庫執行個體類型，其可能會影響快閃記憶體快取的組態或執行個體儲存體上的暫存資料表空間。請考慮下列修改及其影響：

**您可以針對支援執行個體儲存體的資料庫執行個體進行縱向擴展或縮減規模。**  
下列值會隨著執行個體儲存體的新大小，按比例增加或減少：  
+ 快閃記憶體快取的新大小。
+ 配置給位於執行個體儲存體之暫存資料表空間的空間。
例如，db.m5d.4xlarge 執行個體上的設定 `db_flash_cache_size={DBInstanceStore*6/10}` 會提供約 340 GB 的快閃記憶體快取空間。如果您將執行個體類型縱向擴展至 db.m5d.8xlarge，快閃記憶體快取空間會增加到 約 680 GB。

**您可以將不使用執行個體儲存體的資料庫執行個體修改為確實使用執行個體儲存體的執行個體。**  
如果 `db_flash_cache_size` 設定為大於 `0` 的值，則會設定快閃記憶體快取。如果 `rds.instance_store_temp_size` 設定為大於 `0` 的值，則會配置執行個體儲存體空間，供暫存資料表空間使用。RDS for Oracle 不會自動將暫存檔移至執行個體儲存體。如需使用所配置空間的相關資訊，請參閱 [在執行個體儲存體上建立暫存資料表空間](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.creating-tts-instance-store) 或 [將暫存檔新增至僅供讀取複本上的執行個體儲存體](Appendix.Oracle.CommonDBATasks.using-tempfiles.md#Appendix.Oracle.CommonDBATasks.adding-tempfile-replica)。

**您可以將使用執行個體儲存體的資料庫執行個體修改為不使用執行個體儲存體的執行個體。**  
在此情況下，RDS for Oracle 會移除快閃記憶體快取。RDS 會重新建立目前位於 Amazon EBS 磁碟區上執行個體儲存體的暫存檔。新暫存檔的大小上限是 `rds.instance_store_temp_size` 參數的先前大小。

# 使用 Oracle 僅供讀取複本上的執行個體儲存體
<a name="CHAP_Oracle.advanced-features.instance-store.replicas"></a>

僅供讀取複本支援執行個體儲存體上的快閃記憶體快取和暫存資料表空間。雖然快閃記憶體快取的運作方式與主要資料庫執行個體相同，但請注意下列暫存資料表空間的差異：
+ 您無法在僅供讀取複本上建立暫存資料表空間。如果您在主要執行個體上建立新的暫存資料表空間，RDS for Oracle 會複寫不含暫存檔的資料表空間資訊。若要新增暫存檔，請使用下列任一技巧：
  + 使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.add_inst_store_tempfile` RDS for Oracle 會在僅供讀取複本的執行個體儲存體中建立暫存檔，並將其新增至指定的暫存資料表空間。
  + 執行 `ALTER TABLESPACE … ADD TEMPFILE` 命令。RDS for Oracle 將暫存檔放置在 Amazon EBS 儲存體上。
**注意**  
主要資料庫執行個體和僅供讀取複本上的暫存檔大小和儲存類型可能不同。
+ 您只能在主要資料庫執行個體上管理預設暫存資料表空間設定。RDS for Oracle 會將設定複寫到所有僅供讀取複本。
+ 您只能在主要資料庫執行個體上設定暫存資料表空間群組。RDS for Oracle 會將設定複寫到所有僅供讀取複本。

# 在執行個體儲存體和 Amazon EBS 上設定暫存資料表空間群組
<a name="CHAP_Oracle.advanced-features.instance-store.temp-ebs"></a>

您可以設定暫存資料表空間群組，在執行個體儲存體和 Amazon EBS 上同時包含暫存資料表空間。當您想要的暫存儲存體超過 `rds.instance_store_temp_size` 最大設定允許的空間時，此技巧很有用。

當您同時在執行個體儲存體和 Amazon EBS 上設定暫存資料表空間群組時，這兩個表格空間的效能特性明顯不同。Oracle 資料庫會根據內部演算法選擇要為查詢提供服務的資料表空間。因此，類似的查詢可能會在效能方面有所不同。

一般而言，您可以在執行個體儲存體中建立暫存資料表空間，如下所示：

1. 在執行個體儲存體中建立暫存資料表空間。

1. 將新的表格空間設定為資料庫預設暫存資料表空間。

如果執行個體儲存體中的資料表空間大小不足，您可以建立額外的暫存儲存體，如下所示：

1. 將執行個體儲存體中的暫存表格空間指派給暫存資料表空間群組。

1. 請在 Amazon EBS 中建立新的暫存資料表空間 (如果不存在)。

1. 將 Amazon EBS 中的暫存資料表空間指派給包含執行個體儲存體資料表空間的相同資料表空間群組。

1. 將表格空間群組設定為預設暫存資料表空間。

下列範例假設執行個體儲存體中的暫存資料表空間大小不符合您的應用程式要求。此範例會在執行個體儲存體中建立暫存資料表空間 `temp_in_inst_store`、將其指派給資料表空間群組 `temp_group`、將名為 `temp_in_ebs` 的現有 Amazon EBS 資料表空間新增至這個群組，然後將此群組設定為預設暫存資料表空間。

```
SQL> EXEC rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace('temp_in_inst_store');

PL/SQL procedure successfully completed.

SQL> ALTER TABLESPACE temp_in_inst_store TABLESPACE GROUP temp_group;

Tablespace altered.

SQL> ALTER TABLESPACE temp_in_ebs TABLESPACE GROUP temp_group;

Tablespace altered.

SQL> EXEC rdsadmin.rdsadmin_util.alter_default_temp_tablespace('temp_group');

PL/SQL procedure successfully completed.

SQL> SELECT * FROM DBA_TABLESPACE_GROUPS;

GROUP_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
TEMP_GROUP                     TEMP_IN_EBS
TEMP_GROUP                     TEMP_IN_INST_STORE

SQL> SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';

PROPERTY_VALUE
--------------
TEMP_GROUP
```

## 移除 RDS for Oracle 執行個體儲存體
<a name="CHAP_Oracle.advanced-features.instance-store.Disable"></a>

若要移除執行個體存放區，請修改您的 RDS for Oracle 資料庫執行個體，以使用不支援執行個體儲存體的執行個體類型，例如 db.m5 或 db.r5。

# 對 RDS for Oracle 執行個體開啟巨型分頁
<a name="Oracle.Concepts.HugePages"></a>

Amazon RDS for Oracle 支援 Linux 核心巨型分頁，以提高資料庫可擴展性。巨型分頁會造成較小型的分頁資料表，以及耗費在記憶體管理方面較少的 CPU，增加大型資料庫執行個體的效能。如需詳細資訊，請參閱 Oracle 文件中的[巨型分頁的概觀](https://docs.oracle.com/database/121/UNXAR/appi_vlm.htm#UNXAR400)。

您可以使用 HugePages 搭配 RDS for Oracle 的所有支援版本：

 `use_large_pages` 參數可控制是否已對資料庫執行個體開啟巨型分頁。此參數可能的設定為 `ONLY`、`FALSE` 和 `{DBInstanceClassHugePagesDefault}`。在 Oracle 的預設資料庫參數群組中，`use_large_pages` 參數是設為 `{DBInstanceClassHugePagesDefault}`。

若要控制是否對資料庫執行個體自動開啟巨型分頁，您可以在參數群組中使用 `DBInstanceClassHugePagesDefault` 公式變數。該值的判斷方式如下所示：
+ 針對下表提及的資料庫執行個體類別，依預設 `DBInstanceClassHugePagesDefault` 一律會評估為 `FALSE`，而 `use_large_pages` 則評估為 `FALSE`。如果資料庫執行個體類別擁有至少 14 GiB 的記憶體，則您可對這些資料庫執行個體手動開啟巨型分頁。
+ 針對下表未提及的資料庫執行個體類別，如果執行個體類別有少於 14 GiB 的記憶體，`DBInstanceClassHugePagesDefault` 一律會評估為 `FALSE`。此外， `use_large_pages` 評估為 `FALSE`。
+ 針對下表未提及的資料庫執行個體類別，如果執行個體類別有至少 14 GiB，且少於 100 GiB 的記憶體，依預設 `DBInstanceClassHugePagesDefault` 會評估為 `TRUE`。此外， `use_large_pages` 評估為 `ONLY`。您可將 `use_large_pages` 設定為 `FALSE`，手動關閉巨型分頁。
+ 針對下表未提及的資料庫執行個體類別，如果執行個體類別有至少 100 GiB 的記憶體，`DBInstanceClassHugePagesDefault` 一律會評估為 `TRUE`。此外，`use_large_pages` 評估為 `ONLY` 且無法停用巨型分頁。

針對下列資料庫執行個體類別，依預設不會開啟巨型分頁。


****  

| 資料庫執行個體類別系列 | 依預設不會開啟具有巨型分頁的資料庫執行個體類別 | 
| --- | --- | 
|  db.m5  |  db.m5.large  | 
|  db.m4  |  db.m4.large、db.m4.xlarge、db.m4.2xlarge、db.m4.4xlarge、db.m4.10xlarge  | 
|  db.t3  |  db.t3.micro、db.t3.small、db.t3.medium、db.t3.large  | 

如需資料庫執行個體類別的詳細資訊，請參閱[ 資料庫執行個體類別的硬體規格](Concepts.DBInstanceClass.Summary.md)。

若要對新的或現有的資料庫執行個體手動開啟巨型分頁，請將 `use_large_pages` 參數設定為 `ONLY`。您無法將巨型分頁用於 Oracle 自動記憶體管理 (AMM)。如果您將參數 `use_large_pages` 設定為 `ONLY`，則必須也將 `memory_target` 和 `memory_max_target` 設定為 `0`。如需設定資料庫執行個體之資料庫參數的詳細資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

您也可以設定 `sga_target`、`sga_max_size` 和 `pga_aggregate_target` 參數。設定系統全域區域 (SGA) 和程式全域區域 (PGA) 記憶體參數時，請將值一起新增。從您的可用執行個體記憶體 (`DBInstanceClassMemory`) 減去這個總計，以判斷巨型分頁配置以外的可用記憶體。您必須保留至少 2 GiB 的可用記憶體，或可用執行個體記憶體總數的 10%，以較小者為準。

設定參數之後，必須將您的資料庫執行個體重新開機，變更才能生效。如需更多詳細資訊，請參閱 [在資料庫執行個體](USER_RebootInstance.md)。

**注意**  
Oracle 資料庫執行個體會延遲對 SGA 相關初始化參數的變更，直到您重新啟動執行個體而不進行容錯移轉為止。在 Amazon RDS 主控台中，選擇 **Reboot (重新開機)**，但*不要*選擇 **Reboot with failover (使用容錯移轉重新開機)**。在 AWS CLI中，使用 `reboot-db-instance` 參數呼叫 `--no-force-failover` 命令。在容錯移轉期間或導致執行個體重新啟動的其他維護作業期間，資料庫執行個體不會處理 SGA 相關的參數。

下列是可手動啟用巨型分頁之巨型分頁的參數組態範例。您應該設定這些值以符合您的需求。

```
1. memory_target            = 0
2. memory_max_target        = 0
3. pga_aggregate_target     = {DBInstanceClassMemory*1/8}
4. sga_target               = {DBInstanceClassMemory*3/4}
5. sga_max_size             = {DBInstanceClassMemory*3/4}
6. use_large_pages          = ONLY
```

假設參數群組中設定了下列參數值。

```
1. memory_target            = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4})
2. memory_max_target        = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4})
3. pga_aggregate_target     = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*1/8}, 0)
4. sga_target               = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0)
5. sga_max_size             = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0)
6. use_large_pages          = {DBInstanceClassHugePagesDefault}
```

參數群組由具有少於 100 GiB 記憶體的 db.r4 資料庫執行個體類別所使用。使用這些參數設定並將 `use_large_pages` 設定為 `{DBInstanceClassHugePagesDefault}`，巨型分頁會在 db.r4 執行個體上開啟。

考慮在參數群組中設定了下列參數值的另一個範例。

```
1. memory_target           = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4})
2. memory_max_target       = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4})
3. pga_aggregate_target    = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*1/8}, 0)
4. sga_target              = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0)
5. sga_max_size            = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0)
6. use_large_pages         = FALSE
```

參數群組是由 db.r4 DB 資料庫執行個體類別和 db.r5 資料庫執行個體類別所使用，兩個的記憶體都小於 100 GiB。使用這些參數設定，巨型分頁會在 db.r4 和 db.r5 執行個體上關閉。

**注意**  
如果此參數群組是由具有至少 100 GiB 記憶體的 db.r4 資料庫執行個體類別或 db.r5 資料庫執行個體類別所使用，即會覆寫 `FALSE` 的 `use_large_pages` 設定，並將其設定為 `ONLY`。在此情況下，即會傳送關於覆寫的通知給客戶。

巨型分頁在您的資料庫執行個體上作用後，您可以透過啟用增強型監控來檢視巨型分頁資訊。如需更多詳細資訊，請參閱 [使用增強型監控來監控作業系統指標](USER_Monitoring.OS.md)。

# 在 RDS for Oracle 中開啟擴充資料類型
<a name="Oracle.Concepts.ExtendedDataTypes"></a>

Amazon RDS for Oracle 支援擴充資料類型。使用擴充資料類型，`VARCHAR2`、`NVARCHAR2` 和 `RAW` 資料類型的大小上限是 32,767 個位元組。若要使用擴充資料類型，請將 `MAX_STRING_SIZE` 參數設為 `EXTENDED`。如需詳細資訊，請參閱 Oracle 文件中的[擴充資料類型](https://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF55623)。

如果不要使用擴充資料類型，請將 `MAX_STRING_SIZE` 參數保持設為 `STANDARD` (預設值)。在此情況下，`VARCHAR2` 和 `NVARCHAR2` 資料類型的大小限制為 4,000 個位元組，而 RAW 資料類型的大小限制為 2,000 個位元組。

您可以在新的或現有的資料庫執行個體上執行擴充資料類型。對於新的資料庫執行個體，開啟擴充資料類型時，資料庫執行個體建立時間一般較長。對於現有的資料庫執行個體，在轉換期間無法使用資料庫執行個體。

## 擴充資料類型的考量
<a name="Oracle.Concepts.ExtendedDataTypes.considerations"></a>

針對資料庫執行個體啟用擴充資料類型時，請考慮下列事項：
+ 當您為新的或現有的資料庫執行個體開啟擴充資料類型時，必須將執行個體重新開機，變更才會生效。
+ 開啟擴充資料類型後，即無法將資料庫執行個體變回使用資料類型的標準大小。如果您將 `MAX_STRING_SIZE` 參數設回 `STANDARD`，將會導致 `incompatible-parameters` 狀態。
+ 您還原使用擴充資料類型的資料庫執行個體時，必須將具有 `MAX_STRING_SIZE` 參數的參數群組設為 `EXTENDED`。在還原期間，如果您指定預設參數群組，或指定 `MAX_STRING_SIZE` 設為 `STANDARD` 的其他任何參數群組，則會產生 `incompatible-parameters` 狀態。
+ 資料庫執行個體狀態由於 `incompatible-parameters` 設定而成為 `MAX_STRING_SIZE` 時，在您將 `MAX_STRING_SIZE` 參數設為 `EXTENDED` 並重新啟動資料庫執行個體之前，都無法使用資料庫執行個體。

## 針對新的資料庫執行個體開啟擴充資料類型
<a name="Oracle.Concepts.ExtendedDataTypes.CreateDBInstance"></a>

若您建立資料庫執行個體時將 `MAX_STRING_SIZE` 設定為 `EXTENDED`，執行個體會顯示 `MAX_STRING_SIZE` 設定為預設值 `STANDARD`。將執行個體重新開機以啟用變更。

**針對新的資料庫執行個體開啟擴充資料類型**

1. 在參數群組中，將 `MAX_STRING_SIZE` 參數設為 `EXTENDED`。

   若要設定參數，可以建立新的參數群組，也可以修改現有的參數群組。

   如需詳細資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

1. 建立新的 RDS for Oracle 資料庫執行個體。

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

1. 將 `MAX_STRING_SIZE` 設為 `EXTENDED` 的參數群組與資料庫執行個體建立關聯。

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

1. 為了使參數變更生效，請重新啟動資料庫執行個體。

   如需詳細資訊，請參閱[在資料庫執行個體](USER_RebootInstance.md)。

## 針對現有的資料庫執行個體開啟擴充資料類型
<a name="Oracle.Concepts.ExtendedDataTypes.ModifyDBInstance"></a>

修改資料庫執行個體以開啟擴充資料類型時，RDS 會將資料庫中的資料轉換為使用擴充大小。當您下次在參數變更之後重新啟動資料庫時，就會發生轉換和停機。在轉換期間無法使用資料庫執行個體。

轉換資料所需的時間量取決於資料庫執行個體類別、資料庫大小，以及最後一個資料庫快照的時間。若要減少停機時間，請考慮在重新開機之前立即建立快照。這樣可以縮短轉換工作流程期間備份的時間。

**注意**  
開啟擴充資料類型後，無法在轉換期間執行時間的時間點還原。您可還原到緊接在轉換前或轉換後的時間。

**針對現有的資料庫執行個體開啟擴充資料類型**

1. 擷取資料庫的快照。

   如果資料庫有無效的物件，Amazon RDS 會嘗試重新編譯這些物件。如果 Amazon RDS 無法重新轉譯無效的物件，擴充資料類型的轉換可能會失敗。如果轉換發生問題，快照可讓您還原資料庫。務必在轉換前檢查無效的物件，並修正或捨棄無效的物件。對於生產資料庫，建議先對於其中一個資料庫執行個體複本測試轉換程序。

   如需更多詳細資訊，請參閱 [為 Amazon RDS 的單一可用區域資料庫執行個體建立資料庫快照](USER_CreateSnapshot.md)。

1. 在參數群組中，將 `MAX_STRING_SIZE` 參數設為 `EXTENDED`。

   若要設定參數，可以建立新的參數群組，也可以修改現有的參數群組。

   如需更多詳細資訊，請參閱 [Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

1. 修改資料庫執行個體，以便與 `MAX_STRING_SIZE` 設為 `EXTENDED` 的參數群組產生關聯。

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

1. 為了使參數變更生效，請重新啟動資料庫執行個體。

   如需更多詳細資訊，請參閱 [在資料庫執行個體](USER_RebootInstance.md)。

# 將資料匯入 Amazon RDS 上的 Oracle
<a name="Oracle.Procedural.Importing"></a>

將資料匯入 Amazon RDS for Oracle 資料庫執行個體的方式取決於下列項目：
+ 您擁有的資料量
+ 資料庫中資料庫物件的數量
+ 資料庫中資料庫物件的多樣性

例如，您可以根據您的要求使用以下工具：
+ Oracle SQL Developer — 匯入簡單的 20 MB 資料庫。
+ Oracle Data Pump — 匯入複雜的資料庫，或是大小為數百 MB 或數 TB 的資料庫。例如，您可以將資料表空間從內部部署資料庫傳輸到 RDS for Oracle 資料庫執行個體。您可以使用 Amazon S3 或 Amazon EFS 來傳輸資料檔案和中繼資料。如需詳細資訊，請參閱[使用 Oracle 可傳輸資料表空間進行移轉](oracle-migrating-tts.md)、[Amazon EFS 整合](oracle-efs-integration.md)及[Amazon S3 整合](oracle-s3-integration.md)。
+ AWS Database Migration Service (AWS DMS) — 在不停機的情況下遷移資料庫。如需有關 AWS DMS 的詳細資訊，請參閱[什麼是 AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)，以及部落格文章[使用 AWS DMS 以近乎零的停機時間遷移 Oracle 資料庫](https://aws.amazon.com/blogs/database/migrating-oracle-databases-with-near-zero-downtime-using-aws-dms/)。

**重要**  
在您使用上述的遷移技術之前，我們建議您備份您的資料庫。匯入資料後，您可用建立快照的方式備份您的 RDS for Oracle 資料庫執行個體。之後，您可以還原快照。如需更多詳細資訊，請參閱 [備份、還原和匯出資料](CHAP_CommonTasks.BackupRestore.md)。

對於許多資料庫引擎，持續複寫可以繼續到您準備好切換至目標資料庫為止。您可以使用 AWS DMS 從相同資料庫引擎或從不同的引擎遷移到 RDS for Oracle。如果您是在不同資料庫引擎中進行遷移，則可使用 AWS Schema Conversion Tool 來遷移 AWS DMS 沒有移出的結構描述物件。​

**Topics**
+ [使用 Oracle SQL Developer 匯入](Oracle.Procedural.Importing.SQLDeveloper.md)
+ [使用 Oracle 可傳輸資料表空間進行移轉](oracle-migrating-tts.md)
+ [使用 Oracle Data Pump 匯入](Oracle.Procedural.Importing.DataPump.md)
+ [使用 Oracle Export/Import 進行匯入](Oracle.Procedural.Importing.ExportImport.md)
+ [使用 Oracle SQL\$1Loader 匯入](Oracle.Procedural.Importing.SQLLoader.md)
+ [使用 Oracle 具體化檢視進行遷移](Oracle.Procedural.Importing.Materialized.md)

# 使用 Oracle SQL Developer 匯入
<a name="Oracle.Procedural.Importing.SQLDeveloper"></a>

Oracle SQL Developer 是 Oracle 免費分發的一項圖形化 Java 工具。SQL Developer 提供選項讓您在兩個 Oracle 資料庫之間遷移資料，或從其他資料庫 (如 MySQL) 將資料遷移到 Oracle 資料庫。此工具最適合用來遷移小型資料庫。

您可以將此工具安裝在桌上型電腦 (Windows、Linux 或 Mac)，或安裝在您的其中一台伺服器上。安裝 SQL Developer 後，可用它連線至您的來源和目標資料庫。請使用 [工具] 功能表上的**資料庫複製**命令，將資料複製到您的 RDS for Oracle 資料庫執行個體。

若要下載 SQL Developer，請前往 [http://www.oracle.com/technetwork/developer-tools/sql-developer](http://www.oracle.com/technetwork/developer-tools/sql-developer)。

建議您先閱讀 Oracle SQL Developer 產品文件，再開始遷移資料。Oracle 也有文件說明如何從其他資料庫 (包括 MySQL 和 SQL Server) 進行遷移。如需詳細資訊，請參閱 Oracle 文件中的 [http://www.oracle.com/technetwork/database/migration](http://www.oracle.com/technetwork/database/migration)。

# 使用 Oracle 可傳輸資料表空間進行移轉
<a name="oracle-migrating-tts"></a>

您可以使用 Oracle 可傳輸資料表空間功能將一組資料表空間從內部部署 Oracle 資料庫複製到 RDS for Oracle 資料庫執行個體。在實體層級，您可以使用 Amazon EFS 或 Amazon S3 將來源資料檔案和中繼資料檔案傳輸至目標資料庫執行個體。可傳輸資料表空間功能會使用 `rdsadmin.rdsadmin_transport_util` 套件。如需此套件的語法和語意，請參閱 [可傳輸的資料表空間](rdsadmin_transport_util.md)。

如需說明如何傳輸資料表空間的部落格文章，請參閱[AWS 使用可傳輸資料表空間將 Oracle 資料庫遷移至](https://aws.amazon.com/blogs/database/migrate-oracle-databases-to-aws-using-transportable-tablespace/) ，以及[使用 RMAN 將 Amazon RDS for Oracle 可傳輸資料表空間遷移至 ](https://aws.amazon.com/blogs/database/amazon-rds-for-oracle-transportable-tablespaces-using-rman/)。

**Topics**
+ [Oracle 可傳輸資料表空間概觀](#oracle-migrating-tts.overview)
+ [階段 1：設定來源主機](#oracle-migrating-tts.setup-phase)
+ [階段 2：準備完整的資料表空間備份](#oracle-migrating-tts.initial-br-phase)
+ [階段 3：製作和傳輸增量備份](#oracle-migrating-tts.roll-forward-phase)
+ [階段 4：傳輸資料表空間](#oracle-migrating-tts.final-br-phase)
+ [階段 5：驗證所傳輸的資料表空間](#oracle-migrating-tts.validate)
+ [階段 6：清理剩餘檔案](#oracle-migrating-tts.cleanup)

## Oracle 可傳輸資料表空間概觀
<a name="oracle-migrating-tts.overview"></a>

可傳輸資料表空間集包含所要傳輸資料表空間集的資料檔案，以及含有資料表空間描述資料的匯出傾印檔案。在實體移轉解決方案 (例如可傳輸的資料表空間) 中，您可以傳輸實體檔案：資料檔案、組態檔案和 Data Pump 傾印檔案。

**Topics**
+ [可傳輸資料表空間的優缺點](#oracle-migrating-tts.overview.benefits)
+ [可傳輸資料表空間的限制](#oracle-migrating-tts.limitations)
+ [可傳輸資料表空間的先決條件](#oracle-migrating-tts.requirements)

### 可傳輸資料表空間的優缺點
<a name="oracle-migrating-tts.overview.benefits"></a>

當您需要以最短停機時間將一或多個大型資料表空間移轉至 RDS 時，建議您使用可傳輸的資料表空間。相較於邏輯移轉，可傳輸資料表空間具有下列優點：
+ 停機時間低於大多數其他 Oracle 移轉解決方案。
+ 由於可傳輸資料表空間功能僅複製實體檔案，因此可避免邏輯移轉中可能發生的資料完整性錯誤和邏輯損毀。
+ 不需要額外的授權。
+ 您可以在不同平台和位元組類型之間移轉一組資料表空間，例如從 Oracle Solaris 平台移轉至 Linux。但不支援在 Windows Server 之間傳輸資料表空間。
**注意**  
Linux 經過完整的測試和支援。並非所有的 UNIX 版本都經過測試。

如果您使用可傳輸的資料表空間，則可以使用 Amazon S3 或 Amazon EFS 來傳輸資料：
+ 使用 EFS 時，您的備份會在匯入期間保留在 EFS 檔案系統中。您可以在之後刪除檔案。在此技術中，您無需為資料庫執行個體佈建 EBS 儲存體。因此，我們建議使用 Amazon EFS 而不是 S3。如需詳細資訊，請參閱[Amazon EFS 整合](oracle-efs-integration.md)。
+ 使用 S3 時，您可以將 RMAN 備份下載到資料庫執行個體所連接的 EBS 儲存體。在匯入期間，檔案會保留在 EBS 儲存體中。匯入之後，您可以釋放此空間，該空間仍會配置給您的資料庫執行個體。

可傳輸資料表空間的主要缺點，在於您需要具備關於 Oracle 資料庫相對進階的知識。如需詳細資訊，請參閱*Oracle 資料庫管理員指南*中的[在資料庫之間傳輸資料表空間](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/transporting-data.html#GUID-F7B2B591-AA88-4D16-8DCF-712763923FFB)。

### 可傳輸資料表空間的限制
<a name="oracle-migrating-tts.limitations"></a>

當您在 RDS for Oracle 中使用此功能時，可傳輸資料表空間的 Oracle 資料庫限制也同樣適用。如需詳細資訊，請參閱 *Oracle 資料庫管理員指南*中的[可傳輸資料表空間的限制]( https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/transporting-data.html#GUID-DAB51E42-9BBC-4001-B5CB-0ECDBE128787)和[傳輸資料的一般限制](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/transporting-data.html#GUID-28800719-6CB9-4A71-95DD-4B61AA603173)。請注意，下列 RDS 適用於 Oracle 可傳輸資料表空間的額外限制：
+ 來源或目標資料庫都不能使用標準版 2 (SE2)。僅支援企業版。
+ 您無法使用 Oracle Database 11g 資料庫做為來源。RMAN 跨平台可傳輸資料表空間功能需依賴 RMAN 傳輸機制，但 Oracle Database 11g 不加以支援。
+ 您無法使用可傳輸的資料表空間從 RDS for Oracle 資料庫執行個體移轉資料。可傳輸的資料表空間僅可用於將資料移轉至 RDS for Oracle DB 資料庫執行個體。
+ 不支援 Windows 作業系統。
+ 在較低版本層級，您無法將資料表空間傳輸到資料庫中。目標資料庫必須與來源資料庫位於相同或更新的版本層級。例如，您無法將資料表空間從 Oracle 資料庫 21c 傳輸到 Oracle 資料庫 19c。
+ 您無法傳輸系統管理專用的資料表空間，例如 `SYSTEM` 和 `SYSAUX`。
+ 您無法傳輸非資料物件，例如 PL/SQL 套件、Java 類別、檢視、觸發程序、序列、使用者、角色和暫存資料表。若要傳輸非資料物件，請手動建立，或使用 Data Pump 中繼資料匯出和匯入。如需詳細資訊，請參閱 [My Oracle Support 備註 1454872.1](https://support.oracle.com/knowledge/Oracle%20Cloud/1454872_1.html)。
+ 您無法傳輸已加密或使用加密資料欄的資料表空間。
+ 如果您使用 Amazon S3 傳輸檔案，則支援的檔案大小上限為 5 TiB。
+ 如果來源資料庫使用 Oracle 選項 (例如 Spatial)，則除非在目標資料庫上設定相同的選項，否則您無法傳輸資料表空間。
+ 您無法將資料表空間傳輸到 Oracle 複本組態中的 RDS for Oracle 資料庫執行個體。解決方法是刪除所有複本、傳輸資料表空間，然後重新建立複本。

### 可傳輸資料表空間的先決條件
<a name="oracle-migrating-tts.requirements"></a>

 開始之前，請先完成以下任務：
+ 請於 My Oracle Support 檢閱下列文件所述的可傳輸資料表空間需求：
  + [使用跨平台增量備份來減少可傳輸資料表空間停機時間 (文件 ID 2471245.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2471245.1)
  + [可傳輸資料表空間 (TTS) 的約束與限制：適用的詳細資訊、參考和版本 (文件 ID 1454872.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1454872.1)
  + [可傳輸資料表空間 (TTS) 的主要備註 - 常見疑問與問題 (文件 ID 1166564.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1166564.1)
+ 規劃端序轉換。如果您指定來源平台 ID，RDS for Oracle 會自動轉換端序。若要了解如何找到平台 ID，請參閱[相同 Data Guard 組態中異質主要和實體待命的 Data Guard 支援 (文件 ID 413484.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=413484.1)。
+ 確定已在目標資料庫執行個體上啟用可傳輸資料表空間功能。僅在您執行下列查詢而未收到 `ORA-20304` 錯誤訊息時，才會啟用此功能：

  ```
  SELECT * FROM TABLE(rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files);
  ```

  如果未啟用可傳輸資料表空間功能，請重新啟動資料庫執行個體。如需詳細資訊，請參閱[在資料庫執行個體](USER_RebootInstance.md)。
+ 確定來源和目標資料庫中的時區檔案相同。
+ 確定來源和目標資料庫上的資料庫字元集符合下列任一需求：
  + 字元集相同。
  + 字元集相容。如需相容性需求清單，請參閱 Oracle Database 文件中的[傳輸資料的一般限制](https://docs.oracle.com/en/database/oracle/oracle-database/19/spmdu/general-limitations-on-transporting-data.html#GUID-28800719-6CB9-4A71-95DD-4B61AA603173)。
+ 如果您規劃使用 Amazon S3 傳輸檔案，請執行以下操作：
  + 請確定 Amazon S3 儲存貯體可用於檔案傳輸，且 Amazon S3 儲存貯體與資料庫執行個體位於相同的 AWS 區域。如需指示說明，請參閱《Amazon Simple Storage Service 入門指南》**中的[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html)。
  + 依照 [設定 IAM 許可權限以進行 RDS for Oracle 與 Amazon S3 的整合](oracle-s3-integration.preparing.md) 的指示來準備 Amazon S3 儲存貯體，進行 Amazon RDS 整合。
+ 如果您規劃使用 Amazon EFS 傳輸檔案，請確定您已根據 [Amazon EFS 整合](oracle-efs-integration.md) 中的指示設定 EFS。
+ 強烈建議您在目標資料庫執行個體中開啟自動備份。由於[中繼資料匯入步驟](#oracle-migrating-tts.transport.import-dmp)可能失敗，因此請務必將資料庫執行個體還原至匯入前的狀態，以免需要重新備份、傳輸和匯入資料表空間。

## 階段 1：設定來源主機
<a name="oracle-migrating-tts.setup-phase"></a>

在此步驟中，您會複製 My Oracle Support 提供的傳輸資料表空間指令碼，並設定必要的組態檔案。在下列步驟中，*來源主機*執行的資料庫含有預定傳輸至*目標執行個體*的資料表空間。

**設定來源主機的方法如下**

1. 以 Oracle 主目錄擁有者身分登入來源主機。

1. 請確定您的 `ORACLE_HOME` 和 `ORACLE_SID` 環境變數指向您的來源資料庫。

1. 以系統管理員身分登入資料庫，並確認時區版本、資料庫字元集和國家字元集與目標資料庫中的相同。

   ```
   SELECT * FROM V$TIMEZONE_FILE;
   SELECT * FROM NLS_DATABASE_PARAMETERS 
     WHERE PARAMETER IN ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');
   ```

1. 依照 [Oracle Support 備註 2471245.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2471245.1) 的說明設定可傳輸資料表空間公用程式。

   此設定包括編輯來源主機上的 `xtt.properties` 檔案。下列範例 `xtt.properties` 檔案會指定 `/dsk1/backups` 目錄中三個資料表空間的備份。這些是您規劃傳輸到目標資料庫執行個體的資料表空間。它還會指定來源平台 ID 以自動轉換端序。
**注意**  
如需有效的平台 ID，請參閱[相同 Data Guard 組態中異質主要和實體待命的 Data Guard 支援 (文件 ID 413484.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=413484.1)。

   ```
   #linux system 
   platformid=13
   #list of tablespaces to transport
   tablespaces=TBS1,TBS2,TBS3
   #location where backup will be generated
   src_scratch_location=/dsk1/backups
   #RMAN command for performing backup
   usermantransport=1
   ```

## 階段 2：準備完整的資料表空間備份
<a name="oracle-migrating-tts.initial-br-phase"></a>

您會在此階段初次備份資料表空間、將備份傳輸到目標主機，然後使用 `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces` 程序還原這些備份。完成此階段時，初始資料表空間備份會存放在目標資料庫執行個體上，並且可以使用增量備份加以更新。

**Topics**
+ [步驟 1：備份來源主機上的資料表空間](#oracle-migrating-tts.backup-full)
+ [步驟 2：將備份檔案傳輸到目標資料庫執行個體](#oracle-migrating-tts.transfer-full)
+ [步驟 3：在目標資料庫執行個體上匯入資料表空間](#oracle-migrating-tts.initial-tts-import)

### 步驟 1：備份來源主機上的資料表空間
<a name="oracle-migrating-tts.backup-full"></a>

在此步驟中，您會使用 `xttdriver.pl` 指令碼進行資料表空間的完整備份。`xttdriver.pl` 的輸出會儲存在 `TMPDIR` 環境變數中。

**備份資料表空間的方法如下**

1. 如果您的資料表空間處於唯讀模式，請以具有 `ALTER TABLESPACE` 權限的使用者身分登入來源資料庫，然後將資料表空間設為讀取/寫入模式。否則，跳至下一步。

   下列範例將 `tbs1`、`tbs2` 和 `tbs3` 設為讀取/寫入模式。

   ```
   ALTER TABLESPACE tbs1 READ WRITE;
   ALTER TABLESPACE tbs2 READ WRITE;
   ALTER TABLESPACE tbs3 READ WRITE;
   ```

1. 使用指令碼 `xttdriver.pl` 備份您的資料表空間。或者，您可以指定 `--debug` 在偵錯模式下執行指令碼。

   ```
   export TMPDIR=location_of_log_files
   cd location_of_xttdriver.pl
   $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup
   ```

### 步驟 2：將備份檔案傳輸到目標資料庫執行個體
<a name="oracle-migrating-tts.transfer-full"></a>

在此步驟中，請將備份和組態檔案從暫用位置複製到目標資料庫執行個體。請選擇下列其中一個選項：
+ 如果來源主機和目標主機共用 Amazon EFS 檔案系統，請使用作業系統公用程式 (例如 `cp`) 將備份檔案和 `res.txt` 檔案從暫用位置複製到共用目錄。然後跳至 [步驟 3：在目標資料庫執行個體上匯入資料表空間](#oracle-migrating-tts.initial-tts-import)。
+ 如需將備份暫存到 Amazon S3 儲存貯體，請完成以下步驟。

![\[使用 Amazon S3 或 Amazon EFS 傳輸文件。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-tts.png)


#### 步驟 2.2：將傾印檔案上傳至 Amazon S3 儲存貯體
<a name="oracle-migrating-tts.upload-full"></a>

將備份和 `res.txt` 檔案從暫存目錄上傳到 Amazon S3 儲存貯體。如需詳細資訊，請參閱 *Amazon Simple Storage Service 使用者指南*中的[上傳物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)。

#### 步驟 2.3：將傾印檔案從 Amazon S3 儲存貯體下載到您的目標資料庫執行個體
<a name="oracle-migrating-tts.download-full"></a>

在此步驟中，您可以使用 `rdsadmin.rdsadmin_s3_tasks.download_from_s3` 程序將備份下載到您的 RDS for Oracle 資料庫執行個體。

**從 Amazon S3 儲存貯體下載備份的方法如下**

1. 啟動 SQL\$1Plus 或 Oracle SQL Developer，並登入 RDS for Oracle 資料庫執行個體。

1. 使用 Amazon RDS 程序 `rdsadmin.rdsadmin_s3_tasks.download_from_s3` 將備份從 Amazon S3 儲存貯體下載到目標資料庫執行個體。以下範例會從名為 `amzn-s3-demo-bucket` 的 Amazon S3 儲存貯體下載所有檔案至 `DATA_PUMP_DIR` 目錄。

   ```
   EXEC UTL_FILE.FREMOVE ('DATA_PUMP_DIR', 'res.txt');
   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;
   ```

   `SELECT` 陳述式以 `VARCHAR2` 資料類型傳回任務 ID。如需詳細資訊，請參閱[將檔案從 Amazon S3 儲存貯體下載至 Oracle 資料庫執行個體](oracle-s3-integration.using.md#oracle-s3-integration.using.download)。

### 步驟 3：在目標資料庫執行個體上匯入資料表空間
<a name="oracle-migrating-tts.initial-tts-import"></a>

使用程序 `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces`，將資料表空間還原至目標資料庫執行個體。此程序會自動將資料檔案轉換為正確的 endian 格式。

如果是從 Linux 以外的平台匯入，在呼叫 `import_xtts_tablespaces` 時請使用 `p_platform_id` 參數指定來源平台。請確定您指定的平台 ID 符合 [步驟 2：匯出來源主機上的資料表空間描述資料](#oracle-migrating-tts.transport.export) 中的 `xtt.properties` 檔案所指定的 ID。

**匯入目標資料庫執行個體上的資料表空間**

1. 啟動 Oracle SQL 用戶端，並以主要使用者身分登入 RDS for Oracle 資料庫執行個體。

1. 執行程序 `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces`，指定要匯入的資料表空間及含有備份的目錄。

   以下範例從目錄 *DATA\$1PUMP\$1DIR* 匯入資料表 *TBS1*、*TBS2* 和 *TBS3*。來源平台是 AIX 型系統 (64 位元)，其平台 ID 為 `6`。您可以查詢 `V$TRANSPORTABLE_PLATFORM` 以尋找平台 ID。

   ```
   VAR task_id CLOB
   
   BEGIN
     :task_id:=rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces(
           'TBS1,TBS2,TBS3',
           'DATA_PUMP_DIR',
           p_platform_id => 6);
   END;
   /
   
   PRINT task_id
   ```

1. (選用) 透過查詢資料表 `rdsadmin.rds_xtts_operation_info` 來監控進度。`xtts_operation_state` 資料欄會顯示值 `EXECUTING`、`COMPLETED` 或`FAILED`。

   ```
   SELECT * FROM rdsadmin.rds_xtts_operation_info;
   ```
**注意**  
對於長時間執行的操作，您也可以查詢 `V$SESSION_LONGOPS`、`V$RMAN_STATUS`、和 `V$RMAN_OUTPUT`。

1. 使用上一個步驟的任務 ID 來檢視已完成匯入的記錄。

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||'&task_id'||'.log'));
   ```

   請確定匯入已成功完成，再繼續下一個步驟。

## 階段 3：製作和傳輸增量備份
<a name="oracle-migrating-tts.roll-forward-phase"></a>

在這個階段中，您會在來源資料庫作用的同時定期建立和傳輸增量備份。此技術可減少最終資料表空間備份的大小。如果您進行多個增量備份，則必須在最後一次增量備份之後複製 `res.txt` 檔案，然後才能將其套用至目標執行個體。

這些步驟與 [階段 2：準備完整的資料表空間備份](#oracle-migrating-tts.initial-br-phase) 中的相同，不同之處在於匯入步驟具有選擇性。

## 階段 4：傳輸資料表空間
<a name="oracle-migrating-tts.final-br-phase"></a>

在此階段中，您會備份唯讀資料表空間並匯出 Data Pump 中繼資料、將這些檔案傳輸到目標主機，以及匯入資料表空間和中繼資料。

**Topics**
+ [步驟 1：備份唯讀資料表空間](#oracle-migrating-tts.final-backup)
+ [步驟 2：匯出來源主機上的資料表空間描述資料](#oracle-migrating-tts.transport.export)
+ [步驟 3：(僅限 Amazon S3) 將備份和匯出檔案傳輸到目標資料庫執行個體](#oracle-migrating-tts.transport)
+ [步驟 4：在目標資料庫執行個體上匯入資料表空間](#oracle-migrating-tts.restore-full)
+ [步驟 5：匯入目標資料庫執行個體上的資料表空間中繼資料](#oracle-migrating-tts.transport.import-dmp)

### 步驟 1：備份唯讀資料表空間
<a name="oracle-migrating-tts.final-backup"></a>

此步驟與 [步驟 1：備份來源主機上的資料表空間](#oracle-migrating-tts.backup-full) 相同，但有一項關鍵差異：在最後一次備份資料表空間之前，需將資料表空間設為唯讀模式。

下列範例將 `tbs1`、`tbs2` 和 `tbs3` 設為唯讀模式。

```
ALTER TABLESPACE tbs1 READ ONLY;
ALTER TABLESPACE tbs2 READ ONLY;
ALTER TABLESPACE tbs3 READ ONLY;
```

### 步驟 2：匯出來源主機上的資料表空間描述資料
<a name="oracle-migrating-tts.transport.export"></a>

在來源主機上執行`expdb`公用程式，以匯出資料表空間中繼資料。以下範例將資料表空間 *TBS1*、*TBS2* 及 *TBS3* 匯出至目錄 *DATA\$1PUMP\$1DIR* 中的傾印檔案 *xttdump.dmp*。

```
expdp username/pwd \
dumpfile=xttdump.dmp \
directory=DATA_PUMP_DIR \
statistics=NONE \
transport_tablespaces=TBS1,TBS2,TBS3 \
transport_full_check=y \
logfile=tts_export.log
```

如果 *DATA\$1PUMP\$1DIR* 是Amazon EFS 中的共用目錄，請跳至。[步驟 4：在目標資料庫執行個體上匯入資料表空間](#oracle-migrating-tts.restore-full)

### 步驟 3：(僅限 Amazon S3) 將備份和匯出檔案傳輸到目標資料庫執行個體
<a name="oracle-migrating-tts.transport"></a>

如果您使用 Amazon S3 來暫存資料表空間備份和 Data Pump 匯出檔案，請完成以下步驟。

#### 步驟 3.1：將備份和傾印檔案從來源主機上傳到 Amazon S3 儲存貯體
<a name="oracle-migrating-tts.transport.upload-dmp"></a>

將備份和傾印檔案從來源主機上傳到 Amazon S3 儲存貯體 如需詳細資訊，請參閱 *Amazon Simple Storage Service 使用者指南*中的[上傳物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)。

#### 步驟 3.2：將備份和傾印檔案從 Amazon S3 儲存貯體下載到您的目標資料庫執行個體
<a name="oracle-migrating-tts.transport.download-dmp"></a>

在此步驟中，您可以使用 `rdsadmin.rdsadmin_s3_tasks.download_from_s3` 程序將備份與傾印檔案下載到您的 RDS for Oracle 資料庫執行個體。請遵循 [步驟 2.3：將傾印檔案從 Amazon S3 儲存貯體下載到您的目標資料庫執行個體](#oracle-migrating-tts.download-full) 中的步驟。

### 步驟 4：在目標資料庫執行個體上匯入資料表空間
<a name="oracle-migrating-tts.restore-full"></a>

使用程序 `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces` 來還原資料表空間。如需此程序的語法和語意，請參閱 [將傳輸資料表空間匯入資料庫執行個體](rdsadmin_transport_util_import_xtts_tablespaces.md)

**重要**  
完成最後的資料表空間匯入程序後，下一個步驟是[匯入 Oracle Data Pump 中繼資料](#oracle-migrating-tts.transport.export)。如果匯入失敗，請務必在資料庫執行個體回復失敗前的狀態。因此，我們建議您按照[為 Amazon RDS 的單一可用區域資料庫執行個體建立資料庫快照](USER_CreateSnapshot.md)中的說明建立資料庫執行個體的資料庫快照。快照會包含所有匯入的資料表空間，因此如果匯入失敗，您不需要重複備份和匯入程序。  
如果目標資料庫執行個體已開啟自動備份，且 Amazon RDS 在匯入中繼資料之前未偵測到任何有效快照已啟動，則 RDS 會嘗試建立快照。取決於您的執行個體活動，此快照可能但未必會成功。如果未偵測到有效的快照或無法啟動快照，則會結束中繼資料匯入程序，並顯示錯誤訊息。

**匯入目標資料庫執行個體上的資料表空間**

1. 啟動 Oracle SQL 用戶端，並以主要使用者身分登入 RDS for Oracle 資料庫執行個體。

1. 執行程序 `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces`，指定要匯入的資料表空間及含有備份的目錄。

   以下範例從目錄 *DATA\$1PUMP\$1DIR* 匯入資料表 *TBS1*、*TBS2* 和 *TBS3*。

   ```
   BEGIN
     :task_id:=rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces('TBS1,TBS2,TBS3','DATA_PUMP_DIR');
   END;
   /
   PRINT task_id
   ```

1. (選用) 透過查詢資料表 `rdsadmin.rds_xtts_operation_info` 來監控進度。`xtts_operation_state` 資料欄會顯示值 `EXECUTING`、`COMPLETED` 或`FAILED`。

   ```
   SELECT * FROM rdsadmin.rds_xtts_operation_info;
   ```
**注意**  
對於長時間執行的操作，您也可以查詢 `V$SESSION_LONGOPS`、`V$RMAN_STATUS`、和 `V$RMAN_OUTPUT`。

1. 使用上一個步驟的任務 ID 來檢視已完成匯入的記錄。

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||'&task_id'||'.log'));
   ```

   請確定匯入已成功完成，再繼續下一個步驟。

1. 請依照 [為 Amazon RDS 的單一可用區域資料庫執行個體建立資料庫快照](USER_CreateSnapshot.md) 中的指示擷取手動資料庫快照。

### 步驟 5：匯入目標資料庫執行個體上的資料表空間中繼資料
<a name="oracle-migrating-tts.transport.import-dmp"></a>

在此步驟中，您可以使用 `rdsadmin.rdsadmin_transport_util.import_xtts_metadata` 程序將可傳輸的資料表空間中繼資料匯入 RDS for Oracle 資料庫執行個體。如需此程序的語法和語意，請參閱 [將可傳輸資料表空間中繼資料匯入您的資料庫執行個體](rdsadmin_transport_util_import_xtts_metadata.md)。在操作期間，資料表 `rdsadmin.rds_xtts_operation_info` 會顯示匯入狀態。

**重要**  
強烈建議您在匯入資料表空間之後確認已成功建立資料庫快照，然後再匯入中繼資料。如果匯入步驟失敗，請還原資料庫執行個體、解決匯入錯誤，然後再次嘗試匯入。

**將 Data Pump 中繼資料匯入 RDS for Oracle 資料庫執行個體。**

1. 啟動 Oracle SQL 用戶端，並以主要使用者身分登入目標資料庫執行個體。

1. 如果這些使用者不存在，請在所傳輸資料表空間中建立擁有結構描述的使用者。

   ```
   CREATE USER tbs_owner IDENTIFIED BY password;
   ```

1. 匯入中繼資料，指定傾印檔案的名稱及其目錄位置。

   ```
   BEGIN
     rdsadmin.rdsadmin_transport_util.import_xtts_metadata('xttdump.dmp','DATA_PUMP_DIR');
   END;
   /
   ```

1. (選用) 查詢可傳輸的資料表空間歷史記錄表，以查看中繼資料匯入的狀態。

   ```
   SELECT * FROM rdsadmin.rds_xtts_operation_info;
   ```

   操作完成時，您的資料表空間會處於唯讀模式。

1. (選用) 檢視日誌檔案。

   下列範例列出 BDUMP 目錄的內容，然後查詢匯入記錄。

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'BDUMP'));
   
   SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file(
     p_directory => 'BDUMP',
     p_filename => 'rds-xtts-import_xtts_metadata-2023-05-22.01-52-35.560858000.log'));
   ```

## 階段 5：驗證所傳輸的資料表空間
<a name="oracle-migrating-tts.validate"></a>

在此選用步驟中，您可以使用程序 `rdsadmin.rdsadmin_rman_util.validate_tablespace` 來驗證所傳輸的資料表空間，然後將資料表空間設為讀取/寫入模式。

**驗證所傳輸資料的方法如下**

1. 動 SQL\$1Plus 或 SQL Developer，並以主要使用者身分登入目標資料庫執行個體。

1. 使用程序 `rdsadmin.rdsadmin_rman_util.validate_tablespace` 驗證資料表空間。

   ```
   SET SERVEROUTPUT ON
   BEGIN
       rdsadmin.rdsadmin_rman_util.validate_tablespace(
           p_tablespace_name     => 'TBS1',
           p_validation_type     => 'PHYSICAL+LOGICAL',
           p_rman_to_dbms_output => TRUE);
       rdsadmin.rdsadmin_rman_util.validate_tablespace(
           p_tablespace_name     => 'TBS2',
           p_validation_type     => 'PHYSICAL+LOGICAL',
           p_rman_to_dbms_output => TRUE);
       rdsadmin.rdsadmin_rman_util.validate_tablespace(
           p_tablespace_name     => 'TBS3',
           p_validation_type     => 'PHYSICAL+LOGICAL',
           p_rman_to_dbms_output => TRUE);
   END;
   /
   ```

1. 將資料表空間設唯讀取/寫入模式。

   ```
   ALTER TABLESPACE TBS1 READ WRITE;
   ALTER TABLESPACE TBS2 READ WRITE;
   ALTER TABLESPACE TBS3 READ WRITE;
   ```

## 階段 6：清理剩餘檔案
<a name="oracle-migrating-tts.cleanup"></a>

在此可選步驟中，您會刪除所有不需要的檔案。使用 `rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files` 程序列出在資料表空間匯入之後遺棄的資料檔，然後使用 `rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files` 程序將其刪除。如需這些程序的語法和語意，請參閱 [在資料表空間匯入後列出遺棄的檔案](rdsadmin_transport_util_list_xtts_orphan_files.md) 和 [在資料表空間匯入後刪除遺棄的資料檔案](rdsadmin_transport_util_cleanup_incomplete_xtts_import.md)。

**清除剩餘檔案**

1. 移除 *DATA\$1PUMP\$1DIR* 中的舊有備份，如下所示：

   1. 執行 `rdsadmin.rdsadmin_file_util.listdir` 以列出備份檔案。

      ```
      SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'DATA_PUMP_DIR'));
      ```

   1. 呼叫 `UTL_FILE.FREMOVE` 以逐一移除備份。

      ```
      EXEC UTL_FILE.FREMOVE ('DATA_PUMP_DIR', 'backup_filename');
      ```

1. 若已匯入資料表空間，但未匯入這些資料表空間的中繼資料，您可以依照下列方式刪除孤立的資料檔案：

   1. 列出您需要刪除的孤立資料檔案。下列範例執行 `rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files`。

      ```
      SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files);
      
      FILENAME       FILESIZE
      -------------- ---------
      datafile_7.dbf 104865792
      datafile_8.dbf 104865792
      ```

   1. 執行程序 `rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import` 以刪除孤立檔案。

      ```
      BEGIN
        rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import('DATA_PUMP_DIR');
      END;
      /
      ```

      清除操作會產生日誌檔案，該檔案在 `BDUMP` 目錄中使用名稱格式 `rds-xtts-delete_xtts_orphaned_files-YYYY-MM-DD.HH24-MI-SS.FF.log`。

   1. 讀取上一個步驟中產生的日誌檔案。讀取日誌 `rds-xtts-delete_xtts_orphaned_files-2023-06-01.09-33-11.868894000.log` 如下列範例所示：

      ```
      SELECT * 
      FROM TABLE(rdsadmin.rds_file_util.read_text_file(
             p_directory => 'BDUMP',
             p_filename  => 'rds-xtts-delete_xtts_orphaned_files-2023-06-01.09-33-11.868894000.log'));
      
      TEXT
      --------------------------------------------------------------------------------
      orphan transported datafile datafile_7.dbf deleted.
      orphan transported datafile datafile_8.dbf deleted.
      ```

1. 若已匯入這些資料表空間及其中繼資料，但發生相容性錯誤或其他 Oracle Data Pump 問題，請按以下方式清除部分傳輸的資料檔案：

   1. 查詢 `DBA_TABLESPACES` 列出含有部分傳輸資料檔案的資料表空間。

      ```
      SQL> SELECT TABLESPACE_NAME FROM DBA_TABLESPACES WHERE PLUGGED_IN='YES';
      
      TABLESPACE_NAME
      --------------------------------------------------------------------------------
      TBS_3
      ```

   1. 刪除資料表空間和部分傳輸的資料檔案。

      ```
      DROP TABLESPACE TBS_3 INCLUDING CONTENTS AND DATAFILES;
      ```

# 使用 Oracle Data Pump 匯入
<a name="Oracle.Procedural.Importing.DataPump"></a>

Oracle Data Pump 是一個公用程式，可讓您將 Oracle 資料匯出至傾印檔案，並將其匯入至另一個 Oracle 資料庫。是 Oracle 匯出/匯入公用程式的長期替代方案。將大量資料從 Oracle 資料庫移動到 Amazon RDS 資料庫執行個體時，建議使用 Oracle Data Pump。

本節中的範例顯示將資料匯入 Oracle 資料庫的一種方法，但是 Oracle Data Pump 支援其他技術。如需詳細資訊，請參閱 [Oracle 資料庫文件](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump.html#GUID-501A9908-BCC5-434C-8853-9A6096766B5A)。

本節中的範例使用 `DBMS_DATAPUMP` 套件。您可以使用 Oracle Data Pump 命令列公用程式 `impdp` 和 `expdp` 來完成相同的工作。您可以在安裝 Oracle 用戶端 (包括 Oracle Instant Client) 期間，將這些公用程式安裝在遠端主機上。如需詳細資訊，請參閱《[如何使用 Oracle 用戶端為我的 Amazon RDS for Oracle 資料庫執行個體執行 Data Pumt 來匯入或匯出？](https://aws.amazon.com/premiumsupport/knowledge-center/rds-oracle-instant-client-datapump/)》

**Topics**
+ [Oracle Data Pump 概觀](#Oracle.Procedural.Importing.DataPump.Overview)
+ [以 Oracle Data Pump 及 Amazon S3 儲存貯體匯入資料](#Oracle.Procedural.Importing.DataPump.S3)
+ [以 Oracle Data Pump 及資料庫連結匯入資料](#Oracle.Procedural.Importing.DataPump.DBLink)

## Oracle Data Pump 概觀
<a name="Oracle.Procedural.Importing.DataPump.Overview"></a>

Oracle Data Pump 由下列元件組成：
+ 命令列用戶端 `expdp` 和 `impdp`
+ `DBMS_DATAPUMP` PL/SQL 套件
+ `DBMS_METADATA` PL/SQL 套件

Oracle Data Pump 可以用於以下案例：
+ 將資料由 Oracle 資料庫 (內部部署或 Amazon EC2 執行個體) 匯入 RDS for Oracle 資料庫執行個體。
+ 將資料從 RDS for Oracle 資料庫執行個體匯入 Oracle 資料庫 (內部部署或 Amazon EC2 執行個體)。
+ 在 RDS for Oracle 資料庫執行個體之間匯入資料 (例如將資料從 EC2-Classic 遷移到 VPC)。

如需下載 Oracle Data Pump 公用程式，請參閱 Oracle Technology Network 網站的 [Oracle 資料庫軟體下載](http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html)。如需了解在 Oracle 資料庫各版本間遷移的相容性考量，請參閱 [Oracle 資料庫文件](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-BAA3B679-A758-4D55-9820-432D9EB83C68)。

### Oracle Data Pump 工作流程
<a name="Oracle.Procedural.Importing.DataPump.Overview.how-it-works"></a>

通常，您會在下列階段使用 Oracel Data Pump：

1. 將資料匯出至來源資料庫上的傾印檔案。

1. 將傾印檔案上傳至目的地 RDS for Oracle 資料庫執行個體。您可使用 Amazon S3 儲存貯體或兩個資料庫之間的資料庫連結進行傳輸。

1. 將資料從傾印檔案匯入 RDS for Oracle 資料庫執行個體。

### Oracle Data Pump 最佳實務
<a name="Oracle.Procedural.Importing.DataPump.Overview.best-practices"></a>

當您使用 Oracle Data Pump 將資料匯入 RDS for Oracle 執行個體時，我們建議您採用下列最佳實務：
+  `schema` 或 `table` 模式執行匯入，以匯入特定結構描述及物件。
+ 匯入的結構描述僅限於應用程式需要的結構描述。
+ 請勿匯入 `full` 模式或匯入系統維護元件的結構描述。

  由於 RDS for Oracle 不允許存取 `SYS` 或 `SYSDBA` 管理使用者，這些動作可能會損害 Oracle 資料目錄，進而影響資料庫的穩定度。
+ 當載入大量資料時，請執行下列作業：

  1. 將傾印檔案傳輸至目標 RDS for Oracle 資料庫執行個體。

  1. 拍攝您執行個體的資料庫快照。

  1. 測試匯入，以確認其是否成功。

  如果資料庫元件失效，您可以刪除資料庫執行個體，並由資料庫快照重新建立。還原的資料庫執行個體，包括您在製作資料庫快照時，暫存於資料庫執行個體的任何傾印檔案。
+ 請勿匯入使用 Oracle Data Pump 匯出參數 `TRANSPORT_TABLESPACES`、`TRANSPORTABLE` 或`TRANSPORT_FULL_CHECK` 建立的傾印檔案。RDS for Oracle 資料庫執行個體不支援匯入這些傾印檔案。
+ 請勿匯入包含 `SYS`、`SYSTEM`、`RDSADMIN`、`RDSSEC` 和 `RDS_DATAGUARD` 中之 Oracle Scheduler 物件的傾印檔案，且屬於下列類別：
  + 任務
  + 程式
  + 排程
  + Chain
  + Rules
  + 評估內容
  + 規則集

  RDS for Oracle 資料庫執行個體不支援匯入這些傾印檔案。
+ 若要排除不支援的 Oracle Scheduler 物件，請在 Data Pump 匯出期間使用其他指令。如果您使用 `DBMS_DATAPUMP`，您可以在 `DBMS_METADATA.START_JOB` 之前新增一個額外的 `METADATA_FILTER`：

  ```
  DBMS_DATAPUMP.METADATA_FILTER(
    v_hdnl,
    'EXCLUDE_NAME_EXPR',
    q'[IN (SELECT NAME FROM SYS.OBJ$ 
           WHERE TYPE# IN (66,67,74,79,59,62,46) 
           AND OWNER# IN
             (SELECT USER# FROM SYS.USER$ 
              WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC')
              )
          )
    ]',
    'PROCOBJ'
  );
  ```

  如果您使用 `expdp`，請建立包含 `exclude` 下列範例中所示之指令的參數檔案。然後透過 `PARFILE=parameter_file` 命令使用 `expdp`。

  ```
  exclude=procobj:"IN 
    (SELECT NAME FROM sys.OBJ$
     WHERE TYPE# IN (66,67,74,79,59,62,46) 
     AND OWNER# IN 
       (SELECT USER# FROM SYS.USER$ 
        WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC')
       )
    )"
  ```

## 以 Oracle Data Pump 及 Amazon S3 儲存貯體匯入資料
<a name="Oracle.Procedural.Importing.DataPump.S3"></a>

以下匯入程序使用 Oracle Data Pump 及 Amazon S3 儲存貯體。步驟如下：

1. 使用 Oracle [DBMS\$1DATAPUMP](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DATAPUMP.html) 套件匯出來源資料庫上的資料庫。

1. 將傾印檔案放入 Amazon S3 儲存貯體。

1. 從 Amazon S3 儲存貯體將傾印檔案下載至目標 Amazon RDS for Oracle 資料庫執行個體的 `DATA_PUMP_DIR` 目錄。

1. 使用套件 `DBMS_DATAPUMP`，將資料從複製的傾印檔案匯入 RDS for Oracle 資料庫執行個體。

**Topics**
+ [要求以 Oracle Data Pump 及 Amazon S3 儲存貯體匯入資料](#Oracle.Procedural.Importing.DataPumpS3.requirements)
+ [步驟 1：授予權限給 RDS for Oracle 目標資料庫執行個體上的資料庫使用者](#Oracle.Procedural.Importing.DataPumpS3.Step1)
+ [步驟 2：使用 DBMS\$1DAPUMP 將資料匯出倒傾印檔案](#Oracle.Procedural.Importing.DataPumpS3.Step2)
+ [步驟 3：將傾印檔案上傳至 Amazon S3 儲存貯體](#Oracle.Procedural.Importing.DataPumpS3.Step3)
+ [步驟 4：將傾印檔案從 Amazon S3 儲存貯體下載到您的目標資料庫執行個體](#Oracle.Procedural.Importing.DataPumpS3.Step4)
+ [步驟 5：使用 DBMS\$1DATAPUMP 將您的傾印檔案匯入目標資料庫執行個體](#Oracle.Procedural.Importing.DataPumpS3.Step5)
+ [步驟 6：清除](#Oracle.Procedural.Importing.DataPumpS3.Step6)

### 要求以 Oracle Data Pump 及 Amazon S3 儲存貯體匯入資料
<a name="Oracle.Procedural.Importing.DataPumpS3.requirements"></a>

此程序有以下要求：
+ 請確定 Amazon S3 儲存貯體可用於檔案傳輸，且 Amazon S3 AWS 區域 儲存貯體與資料庫執行個體位於相同位置。如需指示說明，請參閱《Amazon Simple Storage Service 入門指南》**中的[建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html)。
+ 您上傳到 Amazon S3 儲存貯體的物件必須為 5 TB 或更少。如需在 Amazon S3 中使用物件的詳細資訊，請參閱《[Amazon Simple Storage Service 使用者指南](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingObjects.html)》。
**注意**  
如果您傾印檔案超過 5 TB，您可以使用平行選項執行 Oracle Data Pump 匯出。這項作業會將資料分散到多個傾印檔案，讓您不會超過個別檔案的 5 TB 限制。
+ 您必須遵循 [設定 IAM 許可權限以進行 RDS for Oracle 與 Amazon S3 的整合](oracle-s3-integration.preparing.md) 的指示內容，準備 Amazon S3 儲存貯體進行 Amazon RDS 整合。
+ 您必須確定在來源執行個體和目前的資料庫執行個體上，有足夠的儲存空間可容納傾印檔案。

**注意**  
此程序會將傾印檔案匯入 `DATA_PUMP_DIR` 目錄，這是在所有 Oracle 資料庫執行個體上預先設定好的目錄。此目錄和您的資料檔案位於相同的儲存磁碟區。您匯入傾印檔案時，現有 Oracle 資料檔案會使用更多空間。因此請確保資料庫執行個體能夠容納額外使用的空間。匯入的傾印檔案不會自動刪除或從 `DATA_PUMP_DIR` 目錄清除。如欲移除匯入的傾印檔案，請使用 Oracle 網站上的 [UTL\$1FILE.FREMOVE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_FILE.html#GUID-09B09C2A-2C21-4F70-BF04-D0EEA7B59CAF)。

### 步驟 1：授予權限給 RDS for Oracle 目標資料庫執行個體上的資料庫使用者
<a name="Oracle.Procedural.Importing.DataPumpS3.Step1"></a>

在此步驟中，您會建立要匯入資料的結構描述，並授與使用者必要的權限。

**若要在 Oracle 目標執行個體的 RDS 上建立使用者並授與必要權限**

1. 使用 SQL\$1Plus 或 Oracle SQL Developer 以主要使用者的身分登入，將 RDS for Oracle 資料庫執行個體連線至資料將匯入之處。如需連線至資料庫執行個體的詳細資訊，請參閱 [連線至 Oracle 資料庫執行個體](USER_ConnectToOracleInstance.md)。

1. 匯入資料前，請先建立所需的資料表空間。如需詳細資訊，請參閱[在 RDS for Oracle 中建立和調整資料表空間的大小](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles)。

1. 如果接收匯入資料的使用者帳戶不存在，請建立使用者帳戶並授予所需的許可和角色。如果要將資料匯入多個使用者結構描述，請建立每個使用者帳戶並授予所需的權限和角色。

   例如，以下 SQL 陳述式會建立新的使用者，並授予必需的許可和角色，以便將資料匯入該使用者擁有的結構描述。請將此步驟及後續步驟的 `schema_1` 替換為結構描述名稱。

   ```
   CREATE USER schema_1 IDENTIFIED BY my_password;
   GRANT CREATE SESSION, RESOURCE TO schema_1;
   ALTER USER schema_1 QUOTA 100M ON users;
   ```
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

   上述的陳述式會授予新使用者 `CREATE SESSION` 權限和 `RESOURCE` 角色。您可能會需要其他權限和角色，視您匯入的資料庫物件而定。

### 步驟 2：使用 DBMS\$1DAPUMP 將資料匯出倒傾印檔案
<a name="Oracle.Procedural.Importing.DataPumpS3.Step2"></a>

若要建立傾印檔案，請使用 `DBMS_DATAPUMP` 套件。

**將 Oracle 資料匯出到傾印檔案**

1. 以管理使用者身分，使用 SQL Plus 或 Oracle SQL Developer 連線至來源 RDS for Oracle 資料庫執行個體。如果來源資料庫是 RDS for Oracle 資料庫執行個體，請以 Amazon RDS 主要使用者身分進行連線。

1. 透過呼叫 `DBMS_DATAPUMP` 程序匯出資料。

   下列指令碼會匯出 `SCHEMA_1` 結構描述至 `DATA_PUMP_DIR` 目錄中名為 `sample.dmp` 的傾印檔案。以您要匯出之結構描述的名稱取代 `SCHEMA_1`。

   ```
   DECLARE
     v_hdnl NUMBER;
   BEGIN
     v_hdnl := DBMS_DATAPUMP.OPEN(
       operation => 'EXPORT', 
       job_mode  => 'SCHEMA', 
       job_name  => null
     );
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl         , 
       filename  => 'sample.dmp'   , 
       directory => 'DATA_PUMP_DIR', 
       filetype  => dbms_datapump.ku$_file_type_dump_file
     );
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl, 
       filename  => 'sample_exp.log', 
       directory => 'DATA_PUMP_DIR' , 
       filetype  => dbms_datapump.ku$_file_type_log_file
     );
     DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''SCHEMA_1'')');
     DBMS_DATAPUMP.METADATA_FILTER(
       v_hdnl,
       'EXCLUDE_NAME_EXPR',
       q'[IN (SELECT NAME FROM SYS.OBJ$ 
              WHERE TYPE# IN (66,67,74,79,59,62,46) 
              AND OWNER# IN 
                (SELECT USER# FROM SYS.USER$ 
                 WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC')
                )
             )
       ]',
       'PROCOBJ'
     );
     DBMS_DATAPUMP.START_JOB(v_hdnl);
   END;
   /
   ```
**注意**  
Data Pump 會以非同步方式開始工作。如需有關監控 Data Pump 任務的詳細資訊，請參閱 Oracle 文件中的[監控工作狀態](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-E365D74E-12CD-495C-BA23-5A55F679C7E7)。

1. (選用) 透過呼叫 `rdsadmin.rds_file_util.read_text_file` 程序檢視匯出日誌的內容。如需詳細資訊，請參閱[讀取資料庫執行個體目錄中的檔案](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles)。

### 步驟 3：將傾印檔案上傳至 Amazon S3 儲存貯體
<a name="Oracle.Procedural.Importing.DataPumpS3.Step3"></a>

使用 Amazon RDS 程序 `rdsadmin.rdsadmin_s3_tasks.upload_to_s3`，將傾印檔案複製到 Amazon S3 儲存貯體。以下範例將所有檔案從 `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_directory_name =>  'DATA_PUMP_DIR') 
AS TASK_ID FROM DUAL;
```

`SELECT` 陳述式以 `VARCHAR2` 資料類型傳回任務 ID。如需詳細資訊，請參閱[將檔案從 RDS for Oracle 資料庫執行個體上傳至 Amazon S3 儲存貯體](oracle-s3-integration.using.md#oracle-s3-integration.using.upload)。

### 步驟 4：將傾印檔案從 Amazon S3 儲存貯體下載到您的目標資料庫執行個體
<a name="Oracle.Procedural.Importing.DataPumpS3.Step4"></a>

使用 Amazon RDS 程序 `rdsadmin.rdsadmin_s3_tasks.download_from_s3` 執行此步驟。當您將文件下載到目錄時，如果目錄中已存在名稱相同的檔案，則程序 `download_from_s3` 會略過下載。如欲從下載目錄移除檔案，請使用 Oracle 網站上的 [UTL\$1FILE.FREMOVE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_FILE.html#GUID-09B09C2A-2C21-4F70-BF04-D0EEA7B59CAF)。

**若要下載您的傾印檔案**

1. 開始 SQL\$1Plus 或 Oracle SQL Developer，並以主要身分登入 Amazon RDS 目標 Oracle 資料庫執行個體

1. 使用 Amazon RDS 程序 `rdsadmin.rdsadmin_s3_tasks.download_from_s3` 下載傾印檔案。

   以下範例會從名為 `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;
   ```

   `SELECT` 陳述式以 `VARCHAR2` 資料類型傳回任務 ID。如需詳細資訊，請參閱[將檔案從 Amazon S3 儲存貯體下載至 Oracle 資料庫執行個體](oracle-s3-integration.using.md#oracle-s3-integration.using.download)。

### 步驟 5：使用 DBMS\$1DATAPUMP 將您的傾印檔案匯入目標資料庫執行個體
<a name="Oracle.Procedural.Importing.DataPumpS3.Step5"></a>

使用 `DBMS_DATAPUMP` 將結構描述匯入 RDS for Oracle 資料庫執行個體。您可能需要額外選項，例如 `METADATA_REMAP`。

**將資料匯入目標資料庫執行個體**

1. 開始 SQL\$1Plus 或 SQL Developer，並以主要使用者身分登入 RDS for Oracle 資料庫執行個體。

1. 藉由呼叫 `DBMS_DATAPUMP` 程序匯入資料。

   下列範例會從 `sample_copied.dmp` 將 *SCHEMA\$11* 資料匯入目標資料庫執行個體。

   ```
   DECLARE
     v_hdnl NUMBER;
   BEGIN
     v_hdnl := DBMS_DATAPUMP.OPEN( 
       operation => 'IMPORT', 
       job_mode  => 'SCHEMA', 
       job_name  => null);
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl, 
       filename  => 'sample_copied.dmp', 
       directory => 'DATA_PUMP_DIR', 
       filetype  => dbms_datapump.ku$_file_type_dump_file);
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl, 
       filename  => 'sample_imp.log', 
       directory => 'DATA_PUMP_DIR', 
       filetype  => dbms_datapump.ku$_file_type_log_file);
     DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''SCHEMA_1'')');
     DBMS_DATAPUMP.START_JOB(v_hdnl);
   END;
   /
   ```
**注意**  
Data Pump 工作會以非同步的方式啟動。如需有關監控 Data Pump 任務的詳細資訊，請參閱 Oracle 文件中的[監控工作狀態](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-E365D74E-12CD-495C-BA23-5A55F679C7E7)。您可以使用 `rdsadmin.rds_file_util.read_text_file` 程序來檢視匯入日誌的內容。如需詳細資訊，請參閱[讀取資料庫執行個體目錄中的檔案](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles)。

1. 列出目標資料庫執行個體上的結構描述，以驗證資料匯入。

   例如，以下查詢會傳回 `SCHEMA_1` 的資料表數目。

   ```
   SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER='SCHEMA_1';
   ```

### 步驟 6：清除
<a name="Oracle.Procedural.Importing.DataPumpS3.Step6"></a>

匯入資料後，您可以刪除不繼續保留的檔案。

**若要移除不需要的檔案**

1. 開始 SQL\$1Plus 或 SQL Developer，並以主要使用者身分登入 RDS for Oracle 資料庫執行個體。

1. 使用以下命令列出 `DATA_PUMP_DIR` 中的檔案。

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) ORDER BY MTIME;
   ```

1. 使用以下命令刪除 `DATA_PUMP_DIR` 中不再需要的檔案。

   ```
   EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','filename');
   ```

   例如以下命令會刪除名為 `sample_copied.dmp` 的檔案。

   ```
   EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample_copied.dmp'); 
   ```

## 以 Oracle Data Pump 及資料庫連結匯入資料
<a name="Oracle.Procedural.Importing.DataPump.DBLink"></a>

以下匯入程序會使用 Oracle Data Pump 和 Oracle [DBMS\$1FILE\$1TRANSFER](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_FILE_TRANSFER.html) 套件。步驟如下：

1. 連接至來源 Oracle 資料庫 (可以是內部部署資料庫、Amazon EC2 執行個體或 RDS for Oracle 資料庫執行個體)。

1. 使用 [DBMS\$1DATAPUMP](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DATAPUMP.html) 套件匯出資料。

1. 使用 `DBMS_FILE_TRANSFER.PUT_FILE` 將傾印檔案從 Oracle 資料庫複製到目標 RDS for Oracle 資料庫執行個體的 `DATA_PUMP_DIR` 目錄 (資料庫執行個體使用資料庫連結與目標連線)。

1. 使用套件 ` DBMS_DATAPUMP` 將資料從複製的傾印檔案匯入 RDS for Oracle 資料庫執行個體。

使用 Oracle Data Pump 及 `DBMS_FILE_TRANSFER` 套件的匯入程序具有下列步驟。

**Topics**
+ [匯入 Oracle Data Pump 及資料庫連結的要求](#Oracle.Procedural.Importing.DataPumpDBLink.requirements)
+ [步驟 1：授予權限給 RDS for Oracle 目標資料庫執行個體上的使用者](#Oracle.Procedural.Importing.DataPumpDBLink.Step1)
+ [步驟 2：向來源資料庫的使用者授予權限](#Oracle.Procedural.Importing.DataPumpDBLink.Step2)
+ [步驟 3：使用 DBMS\$1DATAPUMP 建立傾印檔案](#Oracle.Procedural.Importing.DataPumpDBLink.Step3)
+ [步驟 4：建立與目標資料庫執行個體的資料庫連結](#Oracle.Procedural.Importing.DataPumpDBLink.Step4)
+ [步驟 5：使用 DBMS\$1FILE\$1TRANSFER 將匯出的傾印檔案，複製到目標資料庫執行個體](#Oracle.Procedural.Importing.DataPumpDBLink.Step5)
+ [步驟 6：使用 DBMS\$1DATAPUMP 將資料檔案匯入至目標資料庫執行個體](#Oracle.Procedural.Importing.DataPumpDBLink.Step6)
+ [步驟 7：清理](#Oracle.Procedural.Importing.DataPumpDBLink.Step7)

### 匯入 Oracle Data Pump 及資料庫連結的要求
<a name="Oracle.Procedural.Importing.DataPumpDBLink.requirements"></a>

此程序有以下要求：
+ 您必須具有在 `DBMS_FILE_TRANSFER` 上和 `DBMS_DATAPUMP` 套件的執行權限。
+ 您必須有寫入來源資料庫執行個體 `DATA_PUMP_DIR` 目錄的權限。
+ 您必須確定在來源執行個體和目前的資料庫執行個體上，有足夠的儲存空間可容納傾印檔案。

**注意**  
此程序會將傾印檔案匯入 `DATA_PUMP_DIR` 目錄，這是在所有 Oracle 資料庫執行個體上預先設定好的目錄。此目錄和您的資料檔案位於相同的儲存磁碟區。您匯入傾印檔案時，現有 Oracle 資料檔案會使用更多空間。因此請確保資料庫執行個體能夠容納額外使用的空間。匯入的傾印檔案不會自動刪除或從 `DATA_PUMP_DIR` 目錄清除。如欲移除匯入的傾印檔案，請使用 Oracle 網站上的 [UTL\$1FILE.FREMOVE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_FILE.html#GUID-09B09C2A-2C21-4F70-BF04-D0EEA7B59CAF)。

### 步驟 1：授予權限給 RDS for Oracle 目標資料庫執行個體上的使用者
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step1"></a>

如欲向 RDS for Oracle 目標資料庫執行個體的使用者授予權限，請進行下列步驟：

1. 使用 SQL Plus 或 Oracle SQL Developer，將 RDS for Oracle 資料庫執行個體連線至資料將匯入之處。以 Amazon RDS 主要使用者身分進行連線。如需連線至資料庫執行個體的詳細資訊，請參閱 [連線至 Oracle 資料庫執行個體](USER_ConnectToOracleInstance.md)。

1. 匯入資料前，請先建立所需的資料表空間。如需更多詳細資訊，請參閱 [在 RDS for Oracle 中建立和調整資料表空間的大小](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles)。

1. 如果接受匯入資料的使用者帳戶不存在，請建立使用者帳戶並授予所需的許可和角色。如果要將資料匯入多個使用者結構描述，請建立每個使用者帳戶並授予所需的權限和角色。

   例如，以下命令會建立名稱為 *schema\$11* 的新使用者，並授予必需的許可和角色，以便將資料匯入該使用者的結構描述。

   ```
   CREATE USER schema_1 IDENTIFIED BY my-password;
   GRANT CREATE SESSION, RESOURCE TO schema_1;
   ALTER USER schema_1 QUOTA 100M ON users;
   ```
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

   上述範例向新使用者授予 `CREATE SESSION` 權限及 `RESOURCE` 角色。您可能會需要其他權限和角色，視您匯入的資料庫物件而定。
**注意**  
請將此步驟及後續步驟的 `schema_1` 替換為結構描述名稱。

### 步驟 2：向來源資料庫的使用者授予權限
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step2"></a>

使用 SQL\$1Plus 或 Oracle SQL Developer，連線至包含要匯入之資料的 RDS for Oracle 資料庫執行個體。如有需要，建立使用者帳戶並授予必需的許可。

**注意**  
若來源資料庫是 Amazon RDS 執行個體，您可以略過此步驟。您會使用您的 Amazon RDS 主要使用者帳戶執行匯出。

以下命令會建立新的使用者並授予必需的許可。

```
CREATE USER export_user IDENTIFIED BY my-password;
GRANT CREATE SESSION, CREATE TABLE, CREATE DATABASE LINK TO export_user;
ALTER USER export_user QUOTA 100M ON users;
GRANT READ, WRITE ON DIRECTORY data_pump_dir TO export_user;
GRANT SELECT_CATALOG_ROLE TO export_user;
GRANT EXECUTE ON DBMS_DATAPUMP TO export_user;
GRANT EXECUTE ON DBMS_FILE_TRANSFER TO export_user;
```

**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

### 步驟 3：使用 DBMS\$1DATAPUMP 建立傾印檔案
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step3"></a>

若要建立傾印檔案，請執行下列步驟：

1. 以管理使用者或您在步驟 2 建立的使用者身分，使用 SQL\$1Plus 或 Oracle SQL Developer 連線至來源 Oracle 資料庫。如果來源資料庫是 Amazon RDS for Oracle 資料庫執行個體，請以 Amazon RDS 主要使用者身分進行連線。

1. 使用 Oracle Data Pump 公用程式建立傾印檔案。

   以下指令碼會在 `DATA_PUMP_DIR` 目錄中建立名為 *sample.dmp* 的傾印檔案。

   ```
   DECLARE
     v_hdnl NUMBER;
   BEGIN
     v_hdnl := DBMS_DATAPUMP.OPEN( 
       operation => 'EXPORT' , 
       job_mode  => 'SCHEMA' , 
       job_name  => null
     );
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl, 
       filename  => 'sample.dmp'    , 
       directory => 'DATA_PUMP_DIR' , 
       filetype  => dbms_datapump.ku$_file_type_dump_file
     );
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl           , 
       filename  => 'sample_exp.log' , 
       directory => 'DATA_PUMP_DIR'  , 
       filetype  => dbms_datapump.ku$_file_type_log_file
     );
     DBMS_DATAPUMP.METADATA_FILTER(
       v_hdnl              ,
       'SCHEMA_EXPR'       ,
       'IN (''SCHEMA_1'')'
     );
     DBMS_DATAPUMP.METADATA_FILTER(
       v_hdnl,
       'EXCLUDE_NAME_EXPR',
       q'[IN (SELECT NAME FROM sys.OBJ$ 
              WHERE TYPE# IN (66,67,74,79,59,62,46) 
              AND OWNER# IN 
                (SELECT USER# FROM SYS.USER$ 
                 WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC')
                )
             )
       ]',
       'PROCOBJ'
     );
     DBMS_DATAPUMP.START_JOB(v_hdnl);
   END;
   /
   ```
**注意**  
Data Pump 工作會以非同步的方式啟動。如需有關監控 Data Pump 任務的詳細資訊，請參閱 Oracle 文件中的[監控工作狀態](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-E365D74E-12CD-495C-BA23-5A55F679C7E7)。您可以使用 `rdsadmin.rds_file_util.read_text_file` 程序檢視匯出日誌的內容。如需更多詳細資訊，請參閱 [讀取資料庫執行個體目錄中的檔案](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles)。

### 步驟 4：建立與目標資料庫執行個體的資料庫連結
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step4"></a>

在來源資料庫執行個體與目標資料庫執行個體之間建立資料庫連結。您的本機 Oracle 執行個體必須可以和資料庫執行個體網路連線，才能建立資料庫連結以及傳輸匯出傾印檔案。

請以前一步驟的相同使用者身分執行此步驟。

如果是在相同 VPC 或對等連接 VPC 內的兩個資料庫執行個體之間建立資料庫連結，兩個資料庫執行個體之間應具備有效路由。這兩個資料庫執行個體的安全群組，皆必須允許輸入和輸出到其他資料庫執行個體。安全群組的傳入和傳出規則可以參考相同 VPC 或對等連接 VPC 的安全群組。如需更多詳細資訊，請參閱 [調整資料庫連結以搭配使用 VPC 中的資料庫執行個體](Appendix.Oracle.CommonDBATasks.DBLinks.md)。

以下命令會建立名為 `to_rds` 的資料庫連結，可連接至目標資料庫執行個體的 Amazon RDS 主要使用者。

```
CREATE DATABASE LINK to_rds 
  CONNECT TO <master_user_account> IDENTIFIED BY <password>
  USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<dns or ip address of remote db>)
         (PORT=<listener port>))(CONNECT_DATA=(SID=<remote SID>)))';
```

### 步驟 5：使用 DBMS\$1FILE\$1TRANSFER 將匯出的傾印檔案，複製到目標資料庫執行個體
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step5"></a>

使用 `DBMS_FILE_TRANSFER`，將傾印檔案從來源資料庫執行個體複製到目標資料庫執行個體。以下指令碼會將名為 sample.dmp 的傾印檔案，從來源執行個體複製到名為 *to\$1rds* 的目標資料庫連結 (在先前步驟中建立)。

```
BEGIN
  DBMS_FILE_TRANSFER.PUT_FILE(
    source_directory_object       => 'DATA_PUMP_DIR',
    source_file_name              => 'sample.dmp',
    destination_directory_object  => 'DATA_PUMP_DIR',
    destination_file_name         => 'sample_copied.dmp', 
    destination_database          => 'to_rds' );
END;
/
```

### 步驟 6：使用 DBMS\$1DATAPUMP 將資料檔案匯入至目標資料庫執行個體
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step6"></a>

使用 Oracle Data Pump 匯入資料庫執行個體上的結構描述。您可能需要額外選項，例如 METADATA\$1REMAP。

 使用 Amazon RDS 主要使用者帳戶連線到資料庫執行個體以進行匯入。

```
DECLARE
  v_hdnl NUMBER;
BEGIN
  v_hdnl := DBMS_DATAPUMP.OPEN( 
    operation => 'IMPORT', 
    job_mode  => 'SCHEMA', 
    job_name  => null);
  DBMS_DATAPUMP.ADD_FILE( 
    handle    => v_hdnl, 
    filename  => 'sample_copied.dmp',
    directory => 'DATA_PUMP_DIR', 
    filetype  => dbms_datapump.ku$_file_type_dump_file );
  DBMS_DATAPUMP.ADD_FILE( 
    handle    => v_hdnl, 
    filename  => 'sample_imp.log', 
    directory => 'DATA_PUMP_DIR', 
    filetype  => dbms_datapump.ku$_file_type_log_file);
  DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''SCHEMA_1'')');
  DBMS_DATAPUMP.START_JOB(v_hdnl);
END;
/
```

**注意**  
Data Pump 工作會以非同步的方式啟動。如需有關監控 Data Pump 任務的詳細資訊，請參閱 Oracle 文件中的[監控工作狀態](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-E365D74E-12CD-495C-BA23-5A55F679C7E7)。您可以使用 `rdsadmin.rds_file_util.read_text_file` 程序來檢視匯入日誌的內容。如需更多詳細資訊，請參閱 [讀取資料庫執行個體目錄中的檔案](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles)。

您可以檢視資料庫執行個體上的使用者資料表，以確認資料的匯入。例如，以下查詢會傳回 `schema_1` 的資料表數目。

```
SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER='SCHEMA_1'; 
```

### 步驟 7：清理
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step7"></a>

匯入資料後，您可以刪除不繼續保留的檔案。您可以使用以下命令列出 `DATA_PUMP_DIR` 中的檔案。

```
SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) ORDER BY MTIME;
```

以下命令可用來刪除 `DATA_PUMP_DIR` 中不再需要的檔案。

```
EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','<file name>');
```

例如以下命令會刪除名為 `"sample_copied.dmp"` 的檔案。

```
EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample_copied.dmp'); 
```

# 使用 Oracle Export/Import 進行匯入
<a name="Oracle.Procedural.Importing.ExportImport"></a>

在下列情況下，您可以考慮使用 Oracle Export/Import 公用程式來進行遷移：
+ 您的資料很小。
+ 不需要二進位浮點數和雙精度等資料類型。

匯入程序會建立必要的結構描述物件。因此不需要事先執行指令碼來建立物件。

安裝 Oracle 匯出和匯入公用程式的最簡單方法是安裝 Oracle Instant Client。若要下載該軟體，請前往 [https://www.oracle.com/database/technologies/instant-client.html](https://www.oracle.com/database/technologies/instant-client.html)。如需說明文件，請參閱《Oracle 資料庫公用程式》**手冊中的 [SQL\$1Loader 即時用戶端、匯出和匯入](https://docs.oracle.com/en/database/oracle/oracle-database/21/sutil/instant-client-sql-loader-export-import.html#GUID-FF1B6F75-09F5-4911-9317-9776FAD15965)。

**匯出資料表然後匯入**

1. 請使用 `exp` 命令從來源資料庫匯出資料表。

   下列命令會匯出名為 `tab1`、`tab2` 及 `tab3` 的資料表。`exp_file.dmp` 是傾印檔案。

   ```
   exp cust_dba@ORCL FILE=exp_file.dmp TABLES=(tab1,tab2,tab3) LOG=exp_file.log
   ```

   匯出會建立一個二進位傾印檔案，其中包含指定資料表的結構描述和資料。

1. 使用 `imp` 命令將此結構描述和資料匯入目標資料庫。

   下列命令會從傾印檔案 `exp_file.dmp` 匯入名為 `tab1`、`tab2` 及 `tab3` 的資料表。

   ```
   imp cust_dba@targetdb FROMUSER=cust_schema TOUSER=cust_schema \  
   TABLES=(tab1,tab2,tab3) FILE=exp_file.dmp LOG=imp_file.log
   ```

匯出和匯出可能還有其版本更適合您的要求。請參閱 Oracle 資料庫文件以獲得完整的詳細資訊。

# 使用 Oracle SQL\$1Loader 匯入
<a name="Oracle.Procedural.Importing.SQLLoader"></a>

您可以考慮針對有數量物件限制的大型資料庫使用 Oracle SQL\$1Loader。因為此程序會從來源資料庫匯出並載入到目標資料庫，所以與結構描述非常相關；以下範例會建立範例結構描述物件、從來源匯出、然後將資料載入到目標資料庫。

安裝 Oracle SQL\$1Loader 最簡單的方法是安裝 Oracle Instant Client。若要下載該軟體，請前往 [https://www.oracle.com/database/technologies/instant-client.html](https://www.oracle.com/database/technologies/instant-client.html)。如需說明文件，請參閱《Oracle 資料庫公用程式》**手冊中的 [SQL\$1Loader 即時用戶端、匯出和匯入](https://docs.oracle.com/en/database/oracle/oracle-database/21/sutil/instant-client-sql-loader-export-import.html#GUID-FF1B6F75-09F5-4911-9317-9776FAD15965)。

**使用 Oracle SQL\$1Loader 匯入資料**

1. 使用下列 SQL 陳述式建立樣本來源資料表。

   ```
   CREATE TABLE customer_0 TABLESPACE users 
      AS (SELECT ROWNUM id, o.* 
          FROM   ALL_OBJECTS o, ALL_OBJECTS x 
          WHERE  ROWNUM <= 1000000);
   ```

1. 在目標 RDS for Oracle 資料庫執行個體上建立目標資料表，用於載入資料。子句 `WHERE 1=2` 確保您複製 `ALL_OBJECTS` 的結構，但不複製任何資料列。

   ```
   CREATE TABLE customer_1 TABLESPACE users 
     AS (SELECT 0 AS ID, OWNER, OBJECT_NAME, CREATED
         FROM   ALL_OBJECTS
         WHERE  1=2);
   ```

1. 將資料從來源資料庫匯出成為文字檔。下列範例使用 SQL\$1Plus。針對您的資料，您可能需要建立指令碼來執行資料庫中所有物件的匯出。

   ```
   ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS'
   
   SET LINESIZE 800 HEADING OFF FEEDBACK OFF ARRAY 5000 PAGESIZE 0
   SPOOL customer_0.out 
   SET MARKUP HTML PREFORMAT ON
   SET COLSEP ','
   
   SELECT id, owner, object_name, created 
   FROM   customer_0; 
   
   SPOOL OFF
   ```

1. 建立控制檔案來描述資料。您可能需要撰寫指令碼來執行此步驟。

   ```
   cat << EOF > sqlldr_1.ctl 
   load data
   infile customer_0.out
   into table customer_1
   APPEND
   fields terminated by "," optionally enclosed by '"'
   (
     id           POSITION(01:10)    INTEGER EXTERNAL,
     owner        POSITION(12:41)    CHAR,
     object_name  POSITION(43:72)    CHAR,
     created      POSITION(74:92)    date "YYYY/MM/DD HH24:MI:SS"
   )
   ```

   如有需要，請將先前程式碼產生的檔案複製到暫存區域，例如 Amazon EC2 執行個體中。

1. 使用 SQL\$1Loader 和適當的目標資料庫使用者名稱與密碼來匯入資料。

   ```
   sqlldr cust_dba@targetdb CONTROL=sqlldr_1.ctl BINDSIZE=10485760 READSIZE=10485760 ROWS=1000 
   ```

# 使用 Oracle 具體化檢視進行遷移
<a name="Oracle.Procedural.Importing.Materialized"></a>

若要有效的遷移大型資料庫，您也可以使用 Oracle 的具體化檢視複寫功能。透過複寫，您可以使目標資料表與來源資料表維持同步。因此，您可以視需要之後切換為 Amazon RDS。

請確保您符合下列要求，才能使用具體化檢視進行遷移：
+ 設定目標資料庫到來源資料庫之間的存取。在以下範例中，來源資料庫上所啟用的存取規則，會允許 RDS for Oracle 目標資料庫透過 SQL\$1Net 連線到來源。
+ 建立從 RDS for Oracle 資料庫執行個體到來源資料庫之間的資料庫連結。

**若要使用具體化檢視遷移資料**

1. 在來源和 RDS for Oracle 目標執行個體上，建立可以使用相同密碼進行身分驗證的使用者帳戶。以下範例會建立名為 `dblink_user` 的使用者。

   ```
   CREATE USER dblink_user IDENTIFIED BY my-password
     DEFAULT TABLESPACE users
     TEMPORARY TABLESPACE temp;
      
   GRANT CREATE SESSION TO dblink_user;
   
   GRANT SELECT ANY TABLE TO dblink_user;
   
   GRANT SELECT ANY DICTIONARY TO dblink_user;
   ```
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

1. 使用您新建立的使用者，建立從 RDS for Oracle 目標執行個體到來源執行個體的資料庫連結。

   ```
   CREATE DATABASE LINK remote_site
     CONNECT TO dblink_user IDENTIFIED BY my-password
     USING '(description=(address=(protocol=tcp) (host=my-host) 
       (port=my-listener-port)) (connect_data=(sid=my-source-db-sid)))';
   ```
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

1. 測試連結：

   ```
   SELECT * FROM V$INSTANCE@remote_site;
   ```

1. 在來源執行個體上，建立包含主要索引鍵和具體化檢視日誌的範例資料表。

   ```
   CREATE TABLE customer_0 TABLESPACE users 
     AS (SELECT ROWNUM id, o.* 
         FROM   ALL_OBJECTS o, ALL_OBJECTS x
         WHERE  ROWNUM <= 1000000);
   
   ALTER TABLE customer_0 ADD CONSTRAINT pk_customer_0 PRIMARY KEY (id) USING INDEX;
   
   CREATE MATERIALIZED VIEW LOG ON customer_0;
   ```

1. 在目標 RDS for Oracle 資料庫執行個體上建立具體化檢視。

   ```
   CREATE MATERIALIZED VIEW customer_0 
     BUILD IMMEDIATE REFRESH FAST 
     AS (SELECT * 
         FROM   cust_dba.customer_0@remote_site);
   ```

1. 在目標 RDS for Oracle 資料庫執行個體上重新整理具體化檢視。

   ```
   EXEC DBMS_MVIEW.REFRESH('CUSTOMER_0', 'f');
   ```

1. 捨棄具體化檢視，納入 `PRESERVE TABLE` 子句，以保留具體化檢視容器資料表及其內容。

   ```
   DROP MATERIALIZED VIEW customer_0 PRESERVE TABLE;
   ```

   前述保留資料表的名稱，與捨棄的具體化檢視相同。

# 使用適用於 Amazon RDS for Oracel 的僅供讀取複本
<a name="oracle-read-replicas"></a>

若要設定 Oracle 資料庫執行個體之間的複寫，您可以建立複本資料庫。如需 Amazon RDS 僅供讀取複本的概觀，請參閱 [Amazon RDS 僅供讀取複本的概觀 概觀](USER_ReadRepl.md#USER_ReadRepl.Overview)。如需 Oracle 複本和其他資料庫引擎之間差異的摘要，請參閱 [資料庫引擎的僅供讀取複本之間的差異](USER_ReadRepl.Overview.Differences.md)。

**Topics**
+ [RDS for Oracle 複本的概觀](oracle-read-replicas.overview.md)
+ [RDS for Oracle 複本的要求與考量](oracle-read-replicas.limitations.md)
+ [準備建立 Oracle 複本](oracle-read-replicas.Configuration.md)
+ [在掛載模式中建立 RDS for Oracle 複本](oracle-read-replicas.creating-in-mounted-mode.md)
+ [修改 RDS for Oracle 複本模式](oracle-read-replicas.changing-replica-mode.md)
+ [使用 RDS for Oracle 複本備份](oracle-read-replicas.backups.md)
+ [執行 Oracle Data Guard 容錯移轉](oracle-replication-switchover.md)
+ [對 RDS for Oracle 複本進行故障診斷](oracle-read-replicas.troubleshooting.md)
+ [RDS for Oracle 的重做傳輸壓縮](oracle-read-replicas.redo-transport-compression.md)

# RDS for Oracle 複本的概觀
<a name="oracle-read-replicas.overview"></a>

*Oracle 複本*資料庫是主要資料庫的實體複本。唯讀模式中的 Oracle 複本稱為*僅供讀取複本*。掛載模式中的 Oracle 複本稱為*掛載複本*。Oracle 資料庫不允許在複本中寫入，但是您可以升級複本以使其可寫入。提升的僅供讀取複本會將複製的資料置於提升請求提出的時機。

以下影片提供 RDS for Oracle 災難復原的實用概觀。

[![AWS Videos](http://img.youtube.com/vi/-XpzhIevwVg/0.jpg)](http://www.youtube.com/watch?v=-XpzhIevwVg)


如需詳細資訊，請參閱部落格文章[使用 Amazon RDS for Oracle 跨區域自動備份的受管災難復原第 1 部分](https://aws.amazon.com/blogs/database/managed-disaster-recovery-with-amazon-rds-for-oracle-cross-region-automated-backups-part-1/)和[使用 Amazon RDS for Oracle 跨區域自動備份的受管災難復原第 2 部分](https://aws.amazon.com/blogs/database/part-2-managed-disaster-recovery-with-amazon-rds-for-oracle-xrab/)。

**Topics**
+ [唯讀和掛載複本](#oracle-read-replicas.overview.modes)
+ [CDB 的僅供讀取複本](#oracle-read-replicas.overview.data-guard)
+ [封存重做日誌保留](#oracle-read-replicas.overview.log-retention)
+ [Oracle 複寫期間的中斷](#oracle-read-replicas.overview.outages)

## 唯讀和掛載複本
<a name="oracle-read-replicas.overview.modes"></a>

建立或修改 Oracle 複本時，您可以將其置於下列任一模式中：

唯讀  
這是預設值。Active Data Guard 會將來源資料庫的變更傳輸並套用至所有僅供讀取複本資料庫。  
單一來源資料庫執行個體可建立至多 5 個僅供讀取複本。如需套用至所有資料庫引擎之僅供讀取複本的一般資訊，請參閱[使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。如需 Oracle Data Guard 的詳細資訊，請參閱 Oracle 文件中的 [Oracle Data Guard concepts and administration](https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/oracle-data-guard-concepts.html#GUID-F78703FB-BD74-4F20-9971-8B37ACC40A65)。

掛載  
在此情況下，複寫會使用 Oracle Data Guard，但複本資料庫不接受使用者連線。掛載複本的主要用途是跨區域災難復原。  
掛載複本無法提供唯讀工作負載。無論封存日誌保留政策為何，掛載複本會在套用封存重做日誌檔後刪除它們。

您可以為相同的來源資料庫執行個體建立掛載和唯讀資料庫複本的組合。您可以將唯讀複本變更為掛載模式，或將掛載複本變更為唯讀模式。無論是哪一種情況，Oracle 資料庫都會保留封存日誌的保留設定。

## CDB 的僅供讀取複本
<a name="oracle-read-replicas.overview.data-guard"></a>

RDS for Oracle 支援單租用戶和多租用戶組態中 Oracle 資料庫 19c 和 21c CDBs Data Guard 僅供讀取複本。您可以在 CDB 中建立、管理和升級僅供讀取複本，就像在非 CDB 中一樣。也支援掛載的複本。您可以獲得以下好處：
+ 受管的災難復原、高可用性，以及對您複本的僅供讀取存取
+ 在不同的 中建立僅供讀取複本的能力 AWS 區域。
+ 與現有的 RDS 僅供讀取複本 API 整合：[CreateDBInstanceReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html)、[PromoteReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html) 和 [SwitchoverReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_SwitchoverReadReplica.html)

若要使用此功能，您的複本和主要資料庫執行個體，都需要有效的 Data Guard 授權和 Oracle 資料庫企業版授權。不會產生使用 CDB 架構相關的額外費用。您只需為資料庫執行個體付費。

如需 CDB 架構之單一租戶和多租戶組態的詳細資訊，請參閱 [RDS for Oracle CDB 概觀](Oracle.Concepts.CDBs.md)。

## 封存重做日誌保留
<a name="oracle-read-replicas.overview.log-retention"></a>

如果主要資料庫執行個體沒有跨區域僅供讀取複本，Amazon RDS for Oracle 在來源資料庫執行個體上會保留至少兩小時的封存重做日誌。無論 `rdsadmin.rdsadmin_util.set_configuration` 中 `archivelog retention hours` 的設定為何，都會成立。

兩小時之後，或過了封存日誌保留時數設定後 (視何者較長而定)，RDS 會從來源資料庫執行個體中清除日誌。只有在日誌已成功套用至資料庫後，RDS 才會在過了封存日誌保留時數設定之後從僅供讀取複本中清除日誌。

在某些情況下，一個主要資料庫執行個體可能有一或多個跨區域僅供讀取複本。如果是這樣，Amazon RDS for Oracle 會將交易日誌保留在來源資料庫執行個體上，直到傳輸並套用至所有跨區域僅供讀取複本為止。如需 `rdsadmin.rdsadmin_util.set_configuration` 的詳細資訊，請參閱[保留封存的重做日誌](Appendix.Oracle.CommonDBATasks.RetainRedoLogs.md)。

## Oracle 複寫期間的中斷
<a name="oracle-read-replicas.overview.outages"></a>

建立僅供讀取複本時，Amazon RDS 會對來源資料庫執行個體建立資料庫快照，接著開始複寫。資料庫快照操作開始時，來源資料庫執行個體會經歷非常短暫的 I/O 暫停。I/O 暫停通常持續約一秒。假如來源資料庫執行個體為多可用區域部署，則可避免 I/O 暫停，因為此時快照是從次要資料庫執行個體建立。

資料庫快照會成為 Oracle 複本。Amazon RDS 會為來源資料庫和複本設定必要的參數和權限，而不會中斷服務。同樣地，如果您刪除複本，也不會發生中斷。

# RDS for Oracle 複本的要求與考量
<a name="oracle-read-replicas.limitations"></a>

建立 Oracle 複本之前，請先深入了解下列要求與注意事項。

**Topics**
+ [RDS for Oracle 複本的版本和授權需求](#oracle-read-replicas.limitations.versions-and-licenses)
+ [RDS for Oracle 複本的選項群組限制](#oracle-read-replicas.limitations.options)
+ [RDS for Oracle 複本的備份與還原考量](#oracle-read-replicas.limitations.backups)
+ [RDS for Oracle 複本 Oracle 資料保護的需求和限制](#oracle-read-replicas.data-guard.requirements)
+ [RDS for Oracle 複本的多租戶組態限制](#oracle-read-replicas.limitations.multitenant)
+ [RDS for Oracle 複本的其他事項需求](#oracle-read-replicas.limitations.miscellaneous)

## RDS for Oracle 複本的版本和授權需求
<a name="oracle-read-replicas.limitations.versions-and-licenses"></a>

建立 RDS for Oracle 複本之前，請先考量下列項目：
+ 如果複本處於唯讀模式，請確定您擁有 Active Data Guard 授權。如果您將複本置於掛載模式，則不需要 Active Data Guard 授權。只有 Oracle 資料庫引擎支援掛載的複本。
+ 僅支援將 Oracle 複本用於 Oracle Enterprise Edition (EE)。
+ 非 CDB 的 Oracle 複本僅支援使用非 CDB 執行個體 (執行 Oracle Database 19c) 建立的 CDB 執行個體。
+ Oracle 複本只適用於資料庫執行個體執行於資料庫執行個體類別具有兩個或以上的虛擬 vCPU。來源資料庫執行個體無法使用 db.t3.small 執行個體類別。
+ 來源資料庫執行個體及其所有複本的 Oracle 資料庫引擎版本必須相同。Amazon RDS 升級來源資料庫執行個體後會立即升級複本，無論複本的維護時段為何。對於跨區域複本的主要版本升級，Amazon RDS 會自動執行下列動作：
  + 產生目標版本的選項群組。
  + 將原始選項群組中的所有選項和選項設定複製到新選項群組。
  + 將升級的跨區域複本與新選項群組建立關聯。

  如需有關升級資料庫引擎版本的詳細資訊，請參閱[升級 RDS for Oracle 資料庫引擎](USER_UpgradeDBInstance.Oracle.md)。

## RDS for Oracle 複本的選項群組限制
<a name="oracle-read-replicas.limitations.options"></a>

使用 RDS for Oracle 複本的選項群組時，請考量下列事項：
+ 當來源和複本位於相同 AWS 區域時，您無法使用不同於來源資料庫執行個體選項群組的複本選項群組。

  對來源選項群組或來源選項群組成員的修改，會傳播到 Oracle 複本。套用至來源資料庫執行個體後變更會立即套用至複本，不論複本是否在維護視窗。如需選項群組的詳細資訊，請參閱[使用選項群組](USER_WorkingWithOptionGroups.md)。
+ 您無法從專用選項群組中移除 RDS for Oracle 跨區域複本，那是自動為複本建立的群組。
+ 您無法將 RDS for Oracle 跨區域複本的專用選項群組新增至其他資料庫執行個體。
+ 您無法從 RDS for Oracle 跨區域複本的專用選項群組新增或移除非複寫選項，但下列選項除外：
  + `NATIVE_NETWORK_ENCRYPTION`
  + `OEM`
  + `OEM_AGENT`
  + `SSL`

  若要將其他選項新增至 RDS for Oracle 跨區域複本，請將選項新增至來源資料庫執行個體的選項群組。選項也安裝在所有來源資料庫執行個體的複本上。對於授權選項，請確定複本有足夠的授權。

  當您提升 RDS for Oracle 跨區域複本時，提升的複本就像其他 Oracle 資料庫執行個體一樣運作，包括管理其選項。您可以刪除來源資料庫執行個體，以明確或隱含提升複本。

  如需選項群組的詳細資訊，請參閱[使用選項群組](USER_WorkingWithOptionGroups.md)。
+ 您無法將 `EFS_INTEGRATION` 選項新增至 RDS for Oracle 跨區域複本。

## RDS for Oracle 複本的備份與還原考量
<a name="oracle-read-replicas.limitations.backups"></a>

建立 RDS for Oracle 複本之前，請先考量下列項目：
+ 若要建立 RDS for Oracle 複本的快照或開啟自動備份，請務必手動設定備份保留期間。根據預設，不會啟用自動備份。
+ 當您還原複本備份時，會還原到資料庫時間，而不是開始備份的時間。資料庫時間指備份中資料最近套用的交易時間。其中的差異非常明顯，因為複本的時間可能會延後幾分鐘或幾小時。

  若要了解差異，請使用 `describe-db-snapshots` 命令。比較 `snapshotDatabaseTime` (也就是複本備份的資料庫時間) 及 `OriginalSnapshotCreateTime` 欄位 (也就是主要資料庫上最新套用的交易時間)。

## RDS for Oracle 複本 Oracle 資料保護的需求和限制
<a name="oracle-read-replicas.data-guard.requirements"></a>

建立 RDS for Oracle 複本之前，請注意下列需求和限制：
+ 如果您的主要資料庫執行個體使用多租用戶架構的單一租用戶或多租用戶組態，請考慮下列事項：
  + 您必須使用 Oracle 資料庫 19c 或更新版本與企業版搭配使用。
  + 您的主要 CDB 執行個體必須位於 `ACTIVE` 生命週期。
  + 您無法將非 CDB 主執行個體轉換為 CDB 執行個體，並在相同的作業中轉換其複本。相反，請刪除非 CDB 複本，將主要資料庫執行個體轉換為 CDB，然後建立新複本
+ 確保主要執行個體上的登入觸發程序必須允許 `RDS_DATAGUARD` 使用者以及其 `AUTHENTICATED_IDENTITY` 值為 `RDS_DATAGUARD` 或 `rdsdb` 之任何使用者的存取權。此外，觸發程序不得設定 `RDS_DATAGUARD` 使用者的目前結構描述。
+ 若要避免封鎖 Data Guard 中介處理作業的連線，請勿啟用受限制的階段作業。如需限制工作階段的詳細資訊，請參閱[啟用和停用受限制的工作階段](Appendix.Oracle.CommonDBATasks.RestrictedSession.md)。

## RDS for Oracle 複本的多租戶組態限制
<a name="oracle-read-replicas.limitations.multitenant"></a>

在 RDS for Oracle 複本上使用多租戶組態時，請注意下列限制：
+ 您只能在主要資料庫執行個體上建立、刪除或修改租用戶資料庫。這些變更會自動傳播到複本。
+ RDS for Oracle 主要、來源或複本上的租用戶資料庫無法使用自訂字元集建立。如果您需要自訂字元集，請先建立租戶資料庫，再為資料庫執行個體建立僅供讀取複本。

## RDS for Oracle 複本的其他事項需求
<a name="oracle-read-replicas.limitations.miscellaneous"></a>

建立 RDS for Oracle 複本之前，請先考量下列項目：
+ 當您為具有其他儲存磁碟區的資料庫執行個體建立 RDS for Oracle 複本時，RDS 會自動在複本上設定其他儲存磁碟區。不過，在主要資料庫執行個體的儲存磁碟區中所做的任何後續修改都不會自動套用至複本。
+ 如果您在主要資料庫執行個體中新增其他儲存磁碟區，RDS 不會自動將其他儲存磁碟區新增至複本。您需要修改複本以新增其他儲存磁碟區。
+ 如果您在主要資料庫執行個體中修改儲存磁碟區組態，例如儲存大小和 IOPS，RDS 不會自動修改複本中的儲存磁碟區。您需要修改複本來更新儲存磁碟區組態。
+ 跨磁碟區管理資料檔案位置時，請注意，在主要執行個體上所做的變更不會自動同步至複本。
  + 對於唯讀複本：您可以使用參數群組設定來控制預設檔案位置，或在建立檔案之後手動移動檔案。
  + 對於掛載複本：手動變更主資料庫中的資料檔案位置需要重新建立掛載複本以反映這些變更。為了避免這種情況，我們建議您使用參數群組設定來管理預設檔案位置。
+ 如果您的資料庫執行個體是一或多個跨區域複本的來源，則來源資料庫會將其封存的重做日誌檔案保留到套用至所有跨區域複本為止。封存的重做日誌可能導致耗用更多儲存空間。
+ 若要避免中斷 RDS 自動化，系統觸發程序必須允許特定使用者登入主要和複本資料庫。[系統觸發程序](https://docs.oracle.com/en/database/oracle/oracle-database/19/lnpls/plsql-triggers.html#GUID-FE23FCE8-DE36-41EF-80A9-6B4B49E80E5B)包括 DDL、登入和資料庫角色觸發程序。我們建議您將程式碼新增至您的觸發程序，以排除下列範本程式碼中所列的使用者：

  ```
  -- Determine who the user is
  SELECT SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY') INTO CURRENT_USER FROM DUAL;
  -- The following users should always be able to login to either the Primary or Replica
  IF CURRENT_USER IN ('master_user', 'SYS', 'SYSTEM', 'RDS_DATAGUARD', 'rdsdb') THEN
  RETURN;
  END IF;
  ```
+ 唯讀複本支援區塊變更追蹤，但不支援掛載複本。您可以將掛載複本變更為唯讀複本，然後啟用區塊變更追蹤。如需詳細資訊，請參閱[啟用和停用區塊變更追蹤功能](Appendix.Oracle.CommonDBATasks.BlockChangeTracking.md)。
+ 當來源資料庫使用 Secrets Manager 管理主要使用者憑證時，您無法建立 Oracle 僅供讀取複本。

# 準備建立 Oracle 複本
<a name="oracle-read-replicas.Configuration"></a>

在開始使用複本之前，請先執行下列工作。

**Topics**
+ [啟用自動備份](#oracle-read-replicas.configuration.autobackups)
+ [啟用強制記錄模式](#oracle-read-replicas.configuration.force-logging)
+ [變更您的記錄組態](#oracle-read-replicas.configuration.logging-config)
+ [設定 MAX\$1STRING\$1SIZE 參數](#oracle-read-replicas.configuration.string-size)
+ [規劃運算和儲存資源](#oracle-read-replicas.configuration.planning-resources)

## 啟用自動備份
<a name="oracle-read-replicas.configuration.autobackups"></a>

當您將資料庫執行個體作為來源資料庫執行個體之前，請務必在來源資料庫執行個體上啟用自動備份。若要了解如何執行此程序，請參閱[啟用自動備份](USER_WorkingWithAutomatedBackups.Enabling.md)。

## 啟用強制記錄模式
<a name="oracle-read-replicas.configuration.force-logging"></a>

建議您啟用強制記錄模式。在強制記錄模式中，即使 `NOLOGGING` 與資料定義語言 (DDL) 陳述式搭配使用，Oracle 資料庫仍會寫入重做記錄。

**啟用強制記錄模式**

1. 使用用戶端工具 (例如 SQL Developer) 登入 Oracle 資料庫。

1. 執行下列程序，以啟用強制記錄模式。

   ```
   exec rdsadmin.rdsadmin_util.force_logging(p_enable => true);
   ```

如需此程序的詳細資訊，請參閱 [設定強制記錄](Appendix.Oracle.CommonDBATasks.Log.md#Appendix.Oracle.CommonDBATasks.SettingForceLogging)。

## 變更您的記錄組態
<a name="oracle-read-replicas.configuration.logging-config"></a>

若有 *n* 個大小為 *m* 的線上重做日誌，RDS 會自動在主要資料庫執行個體和所有複本上建立大小為 *m* 的 *n*\$11 個待命日誌。每當您變更主要執行個體上的記錄組態時，變更就會自動傳播到複本。

如果您變更了記錄組態，請考量下列指導方針：
+ 建議您先完成變更，再將資料庫執行個體設為複本的來源。RDS for Oracle 也支援在執行個體成為來源後加以更新。
+ 在主要資料庫執行個體上變更記錄組態之前，請確認每個複本都有足夠的儲存空間可容納新的組態。

您可以使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.add_logfile` 及 `rdsadmin.rdsadmin_util.drop_logfile` 來修改資料庫執行個體的記錄組態。如需詳細資訊，請參閱[新增線上重做日誌](Appendix.Oracle.CommonDBATasks.Log.md#Appendix.Oracle.CommonDBATasks.RedoLogs)及[捨棄線上重做日誌](Appendix.Oracle.CommonDBATasks.Log.md#Appendix.Oracle.CommonDBATasks.DroppingRedoLogs)。

## 設定 MAX\$1STRING\$1SIZE 參數
<a name="oracle-read-replicas.configuration.string-size"></a>

在您建立 Oracle 複本之前，請確保 `MAX_STRING_SIZE` 參數的設定與來源資料庫執行個體和複本上的設定相同。您可以使用相同的參數群組建立關聯以達到此目的。如果來源和複本有不同的參數群組，您可以將 `MAX_STRING_SIZE` 設定為相同的值。如需此參數的詳細資訊，請參閱[針對新的資料庫執行個體開啟擴充資料類型](Oracle.Concepts.ExtendedDataTypes.md#Oracle.Concepts.ExtendedDataTypes.CreateDBInstance)。

## 規劃運算和儲存資源
<a name="oracle-read-replicas.configuration.planning-resources"></a>

確保資料庫執行個體及複本都依照運算和儲存適當的調整大小，以搭配工作負載。如複本達到運算、網路或儲存資源上限時，複本會停止接受或套用來源的變更。Amazon RDS for Oracle 的來源資料庫執行個體與其複本之間不會相互干涉，以降低複寫時的高延遲。您可以從來源和其他複本獨立修改複本的儲存和 CPU 資源。

# 在掛載模式中建立 RDS for Oracle 複本
<a name="oracle-read-replicas.creating-in-mounted-mode"></a>

依預設，Oracle 複本是唯讀的。若要在掛載模式中建立複本，請使用主控台、AWS CLI 或 RDS API。

## 主控台
<a name="oracle-read-replicas.creating-in-mounted-mode.console"></a>

**從來源 Oracle 資料庫執行個體建立掛載的複本**

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

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

1. 選擇要做為掛載複本之來源的 Oracle 資料庫執行個體。

1. 在 **Actions** (動作) 中，選擇 **Create replica** (建立複本)。

1. 對於 **Replica mode (複本模式)**，選擇 **Mounted (掛載)**。

1. 選擇您想要使用的設定。在 **DB instance identifier (資料庫執行個體識別碼)** 中，輸入僅供讀取複本的名稱。視需要調整其他設定。

1. 對於 **Regions (區域)**，選擇要啟動掛載複本的區域。

1. 選擇您的執行個體大小和儲存體類型。建議您使用與僅供讀取複本來源資料庫執行個體相同的資料庫執行個體類別和儲存類型。

1. 在 **Multi-AZ deployment (異地同步備份部署)** 中，選擇 **Create a standby instance (建立待命執行個體)**，以在另一個可用區域中，建立複本的待命複本，以便支援掛載的複本。建立您的掛載複本做為異地同步備份部署資料庫執行個體，與來源資料庫是否為異地同步備份部署資料庫執行個體無關。

1. 選擇您想要使用的其他設定。

1. 選擇 **Create replica (建立複本)**。

在 **Databases** (資料庫) 頁面中，掛載的複本具有角色「複本」。

## AWS CLI
<a name="oracle-read-replicas.creating-in-mounted-mode.cli"></a>

若要在掛載模式中建立 Oracle 複本， 請在 `--replica-mode` 命令 [create-db-instance-read-replica](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance-read-replica.html) 中將 `mounted` 設定為 AWS CLI。

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

```
aws rds create-db-instance-read-replica \
    --db-instance-identifier myreadreplica \
    --source-db-instance-identifier mydbinstance \
    --replica-mode mounted
```
針對 Windows：  

```
aws rds create-db-instance-read-replica ^
    --db-instance-identifier myreadreplica ^
    --source-db-instance-identifier mydbinstance ^
    --replica-mode mounted
```

若要將唯讀複本變更為掛載狀態，請在 `--replica-mode` 命令 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 中將 `mounted` 設定為 AWS CLI。若要將掛載複本置於唯讀模式，請將 `--replica-mode` 設定為 `open-read-only`。

## RDS API
<a name="oracle-read-replicas.creating-in-mounted-mode.api"></a>

若要在掛載模式中建立 Oracle 複本，請 在 RDS API 作業 [CreateDBInstanceReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html) 中指定 `ReplicaMode=mounted`。

# 修改 RDS for Oracle 複本模式
<a name="oracle-read-replicas.changing-replica-mode"></a>

若要變更現有複本的複本模式，請使用主控台、AWS CLI 或 RDS API。當您變更為掛載模式時，複本會中斷所有作用中的連線。當您變更為唯讀模式時，Amazon RDS 會初始化 Active Data Guard。

變更作業可能需要幾分鐘的時間。在作業期間，資料庫執行個體狀態會變更為 **modifying (正在修改)**。如需狀態變更的詳細資訊，請參閱[在 Amazon RDS 資料庫執行個體狀態](accessing-monitoring.md#Overview.DBInstance.Status)。

## 主控台
<a name="oracle-read-replicas.changing-replica-mode.console"></a>

**將 Oracle 複本的複本模式從掛載變更為唯讀**

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

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

1. 選擇掛載的複本資料庫。

1. 選擇 **Modify (修改)**。

1. 對於 **Replica mode (複本模式)**，選擇 **Read-only (唯讀)**。

1. 選擇您想要變更的其他設定。

1. 選擇 **Continue (繼續)**。

1. 在 **Scheduling of modifications** (修改排程) 中，選擇 **Apply immediately** (立即套用)。

1. 選擇 **Modify DB instance (修改資料庫執行個體)**。

## AWS CLI
<a name="oracle-read-replicas.changing-replica-mode.cli"></a>

若要將僅供讀取複本變更為掛載模式，請在 `--replica-mode` 命令 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 中將 `mounted` 設定為 AWS CLI。若要將掛載複本變更為唯讀模式，請將 `--replica-mode` 設定為 `open-read-only`。

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

```
aws rds modify-db-instance \
    --db-instance-identifier myreadreplica \
    --replica-mode mode
```
針對 Windows：  

```
aws rds modify-db-instance ^
    --db-instance-identifier myreadreplica ^
    --replica-mode mode
```

## RDS API
<a name="oracle-read-replicas.changing-replica-mode.api"></a>

若要將唯讀複本變更為掛載模式，請在 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html) 中設定 `ReplicaMode=mounted`。若要將掛載複本變更為唯讀模式，請設定 `ReplicaMode=read-only`。

# 使用 RDS for Oracle 複本備份
<a name="oracle-read-replicas.backups"></a>

您可以建立和還原 RDS for Oracle 複本的備份。同時支援自動備份和手動快照。如需詳細資訊，請參閱 [備份、還原和匯出資料](CHAP_CommonTasks.BackupRestore.md)。下列部分說明管理主要複本備份和 RDS for Oracle 複本之間的主要差異。

## 開啟 RDS for Oracle 複本備份
<a name="oracle-read-replicas.backups.turning-on"></a>

預設情況下，Oracle 複本不會開啟自動備份功能。您可以將備份保留期間設定為正的非零值以開啟自動備份。

### 主控台
<a name="USER_WorkingWithAutomatedBackups.Enabling.CON"></a>

**立即啟用自動備份**

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

1. 在導覽窗格中選擇**資料庫**，然後選擇您要修改的資料庫執行個體或多可用區域資料庫叢集。

1. 選擇 **Modify** (修改)。

1. 針對**備份保留期間**，選擇非零正值，例如三天。

1. 選擇 **Continue (繼續)**。

1. 選擇 **Apply immediately** (立即套用)。

1. 選擇**修改資料庫執行個體**或**修改叢集**，以儲存您的變更並啟用自動備份。

### AWS CLI
<a name="USER_WorkingWithAutomatedBackups.Enabling.CLI"></a>

若要啟用自動備份，請使用 AWS CLI [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 或 [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) 命令。

包含以下參數：
+ `--db-instance-identifier` (或多可用區域資料庫叢集的 `--db-cluster-identifier`)
+ `--backup-retention-period`
+ `--apply-immediately` 或 `--no-apply-immediately` \$1

在以下範例中，我們將備份保留期間設定為三天來啟用自動備份。變更會立即套用。

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

```
aws rds modify-db-instance \
    --db-instance-identifier my_db_instance  \
    --backup-retention-period 3 \
    --apply-immediately
```
針對 Windows：  

```
aws rds modify-db-instance ^
    --db-instance-identifier my_db_instance  ^
    --backup-retention-period 3 ^
    --apply-immediately
```

### RDS API
<a name="USER_WorkingWithAutomatedBackups.Enabling.API"></a>

若要啟用自動備份，請使用 RDS API [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 或 [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) 操作，並搭配下列必要參數：
+ `DBInstanceIdentifier` 或 `DBClusterIdentifier` \$1
+ `BackupRetentionPeriod`

## 還原 RDS for Oracle 複本備份
<a name="oracle-read-replicas.backups.restoring"></a>

您可以還原 Oracle 複本備份，就像還原主要執行個體的備份一樣。如需詳細資訊，請參閱下列內容：
+ [還原至資料庫執行個體](USER_RestoreFromSnapshot.md)
+ [將 Amazon RDS 的資料庫執行個體還原至指定時間](USER_PIT.md)

還原複本備份時的主要考量是決定要還原的時間點。資料庫時間指備份中資料最近套用的交易時間。還原複本備份時，您會還原到資料庫時間，而不是備份完成的時間。其中的差異很大，因為 RDS for Oracle 複本的時間可能會延後幾分鐘或幾小時。因此，複本備份的資料庫時間，以及您還原備份的時間點，可能會比備份建立時間早得多。

若要了解資料庫時間與建立時間之間的差異，請使用 `describe-db-snapshots` 命令。比較 `SnapshotDatabaseTime` (也就是複本備份的資料庫時間) 及 `OriginalSnapshotCreateTime` 欄位 (也就是主要資料庫上最新套用的交易時間)。下列範例會傳回兩個時間之間的差異：

```
aws rds describe-db-snapshots \
    --db-instance-identifier my-oracle-replica
    --db-snapshot-identifier my-replica-snapshot

{
    "DBSnapshots": [
        {
            "DBSnapshotIdentifier": "my-replica-snapshot",
            "DBInstanceIdentifier": "my-oracle-replica", 
            "SnapshotDatabaseTime": "2022-07-26T17:49:44Z",
            ...
            "OriginalSnapshotCreateTime": "2021-07-26T19:49:44Z"
        }
    ]
}
```

# 執行 Oracle Data Guard 容錯移轉
<a name="oracle-replication-switchover"></a>

*容錯移轉*是主要資料庫與待命資料庫之間的角色反轉。在容錯移轉期間，原始主要資料庫會轉換為待命角色，而原始待命資料庫則會轉換為主要角色。

在「Oracle Data Guard」環境中，主要資料庫支援一或多個待命資料庫。您可以從主要資料庫執行以容錯移轉為基礎的受管理角色轉換至待命資料庫。*容錯移轉*是主要資料庫與待命資料庫之間的角色反轉。在容錯移轉期間，原始主要資料庫會轉換為待命角色，而原始待命資料庫則會轉換為主要角色。

**Topics**
+ [Oracle Data Guard 容錯移轉概觀](#oracle-replication-switchover.overview)
+ [Oracle Data Guard 轉換需求](oracle-switchover.preparing.md)
+ [啟動 Oracle Data Guard 容錯移轉](oracle-switchover.initiating.md)
+ [監控 Oracle Data Guard 容錯移轉](oracle-switchover.monitoring.md)

## Oracle Data Guard 容錯移轉概觀
<a name="oracle-replication-switchover.overview"></a>

Amazon RDS 支援 Oracle 資料庫複本的全受管、以容錯移轉為基礎的角色轉換。您只能啟動容錯移轉為已裝載或以唯讀方式開啟的待命資料庫。

複本可以位於單一區域的個別 AWS 區域 或不同可用區域 (AZs) 中。 AWS 區域 支援所有 。

![\[轉換至待命執行個體，使其成為主要資料庫執行個體\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/read-replica-switchover.png)


轉換與僅供讀取複本提升不同。在轉換中，來源和複本資料庫執行個體會變更角色。在提升中，僅供讀取複本會成為來源資料庫執行個體，但來源資料庫執行個體不會成為複本。如需詳細資訊，請參閱[提升僅供讀取複本為獨立的資料庫執行個體](USER_ReadRepl.Promote.md)。

**Topics**
+ [Oracle Data Guard 容錯移轉的優點](#oracle-replication-switchover.overview.benefits)
+ [支援的 Oracle Database 版本](#oracle-replication-switchover.overview.engine-support)
+ [Oracle Data Guard 容錯移轉的成本](#oracle-replication-switchover.overview.cost)
+ [Oracle Data Guard 容錯移轉運作方式](#oracle-replication-switchover.overview.how-it-works)

### Oracle Data Guard 容錯移轉的優點
<a name="oracle-replication-switchover.overview.benefits"></a>

如同 RDS for Oracle 僅供讀取複本一樣，受管容錯移轉依賴 Oracle Data Guard。該操作被設計為零資料丟失。Amazon RDS 會將以下的容錯移轉方面自動化：
+ 反轉主要資料庫和指定待命資料庫的角色，讓新待命資料庫處於與原始待命資料庫相同的狀態 (已裝載或唯讀)
+ 確保資料一致性
+ 轉換後維護您的複寫組態
+ 支援重複回轉，允許新的待命資料庫恢復到原始的主要角色

### 支援的 Oracle Database 版本
<a name="oracle-replication-switchover.overview.engine-support"></a>

Oracle Database 19c 和更高版本支援 Oracle Data Guard 轉換。

### Oracle Data Guard 容錯移轉的成本
<a name="oracle-replication-switchover.overview.cost"></a>

Oracle Data Guard 容錯移轉功能不會產生額外費用。Oracle Database Enterprise Edition 包含支援處於掛載模式的待命資料庫。若要以唯讀模式開啟待命資料庫，您需要 Oracle Active Data Guard 選項。

### Oracle Data Guard 容錯移轉運作方式
<a name="oracle-replication-switchover.overview.how-it-works"></a>

Oracle Data Guard 容錯移轉是完全受管理的操作。您可以發出 CLI 命令 `switchover-read-replica` 來啟動待命資料庫的容錯移轉。然後，Amazon RDS 會修改複寫組態中的主要角色和待命角色。

所以此*原始待機*和*原始主要*是容錯移轉之前存在的角色。所以此*新待機*和*新主要*是容錯移轉之後存在的角色。*待命者複本*是一個複本資料庫，在 Oracle Data Guide 環境中做為待命資料庫，但不會切換角色。

**Topics**
+ [Oracle Data Guard 容錯移轉的階段](#oracle-replication-switchover.overview.how-it-works.during-switchover)
+ [Oracle Data Guard 容錯移轉後](#oracle-replication-switchover.overview.how-it-works.after-switchover)

#### Oracle Data Guard 容錯移轉的階段
<a name="oracle-replication-switchover.overview.how-it-works.during-switchover"></a>

若要執行容錯移轉，Amazon RDS 必須採取下列步驟：

1. 封鎖原始主要資料庫上的新交易。在容錯移轉期間，Amazon RDS 會中斷 Oracle Data Guide 組態中所有資料庫的複寫。在容錯移轉期間，原始主要資料庫無法處理寫入請求。

1. 將未套用的交易傳輸至原始待命資料庫，然後套用這些交易。

1. 以唯讀或裝載模式重新啟動新的待命資料庫。此模式取決於容錯移轉前原始待命資料庫的開啟狀態。

1. 以讀寫模式開啟新的主要資料庫。

#### Oracle Data Guard 容錯移轉後
<a name="oracle-replication-switchover.overview.how-it-works.after-switchover"></a>

Amazon RDS 會切換主要和待命資料庫的角色。您有責任重新連接應用程式並執行任何其他所需的組態。

**Topics**
+ [成功條件](#oracle-replication-switchover.overview.how-it-works.after-switchover.success)
+ [連線到新的主要資料庫](#oracle-replication-switchover.overview.how-it-works.after-switchover.connection)
+ [新主要資料庫的組態](#oracle-replication-switchover.overview.how-it-works.after-switchover.success.configuration)

##### 成功條件
<a name="oracle-replication-switchover.overview.how-it-works.after-switchover.success"></a>

當原始待命資料庫執行下列操作時，Oracle Data Guide 容錯移轉成功：
+ 轉換為新主要資料庫的角色
+ 完成其重新組態

為了限制停機時間，您的新主要資料庫會盡快變為作用中狀態。由於 Amazon RDS 會以非同步方式設定待命者複本，因此這些複本可能會在原始主要資料庫之後變為作用中狀態。

##### 連線到新的主要資料庫
<a name="oracle-replication-switchover.overview.how-it-works.after-switchover.connection"></a>

容錯移轉後，Amazon RDS 不會將您目前的資料庫連線傳播到新的主要資料庫。Oracle Data Guard 容錯移轉完成後，請將您的應用程式重新連線至新的主要資料庫。

##### 新主要資料庫的組態
<a name="oracle-replication-switchover.overview.how-it-works.after-switchover.success.configuration"></a>

若要執行容錯移轉為新的主要資料庫，Amazon RDS 會將原始待命資料庫的模式變更為開啟。角色的變化是對資料庫的唯一更改。Amazon RDS 不會設定多可用區域複寫等功能。

如果您使用不同的選項執行跨區域複本的容錯移轉，新的主要資料庫會保留自己的選項。Amazon RDS 不會遷移原始主要資料庫上的選項。如果原始主要資料庫具有 SSL、NNE、OEM 和 OEM\$1AGENT 等選項，則 Amazon RDS 不會將它們傳播到新的主要資料庫。

# Oracle Data Guard 轉換需求
<a name="oracle-switchover.preparing"></a>

啟動 Oracle Data Guard 容錯移轉前，請確定您的複本環境符合下列要求：
+ 原始待命資料庫已裝載或以唯讀方式開啟。
+ 原始待命資料庫上已啟用自動備份。
+ 原始主要資料庫和原始待命資料庫皆處於 `available` 狀態。
+ 原始主要資料庫和原始待命資料庫沒有處於下列任何狀態的待處理維護動作：`required`、`next window` 或 `in progress`。這些狀態下的動作會封鎖轉換。若要了解如何檢查待處理維護更新的狀態，請參閱 [檢視待處理維護更新](USER_UpgradeDBInstance.Maintenance.md#USER_UpgradeDBInstance.Maintenance.Viewing)。

  `available` 狀態下的待處理維護動作不會封鎖轉換。RDS for Oracle 經常發行 `available` 狀態的作業系統 (OS) 更新。這些待處理作業系統更新不會封鎖轉換，除非您將其排程到下一個維護時段，而使其處於 `next window` 狀態。
**注意**  
如果您想要延遲排程的維護動作以便執行轉換，請在 RDS 主控台依序選擇**動作**和**延遲升級**。您也可以套用待定維護動作，或將維護時段移至轉換前的間隔，以防止轉換遭到封鎖。如需詳細資訊，請參閱 re:Post 文章：[如何移除 RDS 待處理維護項目](https://repost.aws/questions/QUV3dBjmVVRnmVV1pAlzjx1w/how-to-remove-rds-pending-maintenance-item)。
+ 原始待命資料庫處於複寫狀態。
+ 當主要資料庫或待命資料庫目前處於轉換生命週期時，您不會嘗試啟動容錯移轉。如果複本資料庫在容錯移轉後重新設定，Amazon RDS 會阻止您啟動另一次容錯移轉。
**注意**  
*待命者複本*是 Oracle Data Guard 組態中不是容錯移轉目標的複本。待命者複本在容錯移轉期間可處於任何狀態。
+ 原始待命資料庫的組態與原始主要資料庫盡可能接近。假設原始主要和原始待命資料庫有不同選項的案例。容錯移轉完成後，Amazon RDS 不會自動重新設定新的主要資料庫，使其具有與原始主要資料庫相同的選項。
+ 您可以在起始切換之前，先設定所需的多可用區部署。Amazon RDS 不會在切換過程中管理多可用區域。多可用區部署會保持原狀。

  假設 db\$1maz 是多可用區部署中的主要資料庫，而 db\$1saz 是單一可用區域複本。您起始從 db\$1maz 到 db\$1saz 的切換。之後，db\$1maz 是多可用區域複本資料庫，而 db\$1saz 是單一可用區域主要資料庫。新的主要資料庫現在未受多可用區部署支援。
+ 為了準備跨區域切換，主要資料庫不會與複寫組態之外的資料庫執行個體使用相同的選項群組。若要讓跨區域切換成功，目前的主要資料庫及其僅供讀取複本，必須是唯一可使用目前主要資料庫之選項群組的資料庫執行個體。否則，Amazon RDS 會阻止切換。

# 啟動 Oracle Data Guard 容錯移轉
<a name="oracle-switchover.initiating"></a>

您可以將 RDS for Oracle 僅供讀取複本容錯移轉為主要角色，將原主要資料庫執行個體容錯移轉為複本角色。

## 主控台
<a name="USER_ReadRepl.Promote.Console"></a>

**若要將 Oracle 僅供讀取複本容錯移轉為主要資料庫角色**

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

1. 在 Amazon RDS 主控台，選擇 **Databases (資料庫)**。

   **Databases (資料庫)** 窗格隨即出現。每個僅供讀取複本會在 **Role (角色)** 欄中顯示 **Replica (複本)**。

1. 選擇您要容錯移轉為主要角色的僅供讀取複本。

1. 對於 **Actions** (動作)，選擇 **Switch over replica** (容錯移轉複本)。

1. 選擇 **I acknowledge** (我確認)。然後選擇 **Switch over replica** (容錯移轉複本)。

1. 在 **Databases** (資料庫) 頁面上監控容錯移轉進度。  
![\[監控 Oracle Data Guard 容錯移轉進度\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-switchover-progress.png)

   容錯移轉完成時，容錯移轉目標的角色會從 **Replica** (複本) 變成 **Source** (來源)。  
![\[來源資料庫和複本資料庫會變更角色。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-switchover-complete.png)

## AWS CLI
<a name="USER_ReadRepl.Promote.CLI"></a>

若要將 Oracle 複本容錯移轉為主要資料庫角色，請使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/switchover-read-replica.html](https://docs.aws.amazon.com/cli/latest/reference/rds/switchover-read-replica.html) 命令。下列範例會讓名為 *replica-to-be-made-primary* 的 Oracle 複本成為新的主要資料庫。

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

```
aws rds switchover-read-replica \
    --db-instance-identifier replica-to-be-made-primary
```
針對 Windows：  

```
aws rds switchover-read-replica ^
    --db-instance-identifier replica-to-be-made-primary
```

## RDS API
<a name="USER_ReadRepl.Promote.API"></a>

若要將 Oracle 複本容錯移轉為主要資料庫角色，請使用必要參數 `DBInstanceIdentifier` 呼叫 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_SwitchoverReadReplica.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_SwitchoverReadReplica.html) 操作。此參數指定您要擔任主要資料庫角色之 Oracle 複本的名稱。

# 監控 Oracle Data Guard 容錯移轉
<a name="oracle-switchover.monitoring"></a>

若要檢查執行個體的狀態，請使用 AWS CLI 命令 `describe-db-instances`。下列命令會檢查資料庫執行個體 *orcl2* 的狀態。此資料庫在容錯移轉前是待命資料庫，但在容錯移轉後是新的主要資料庫。

```
aws rds describe-db-instances \
    --db-instance-identifier orcl2
```

若要確認容錯移轉成功完成，請查詢 `V$DATABASE.OPEN_MODE`。檢查新主要資料庫的值是否為 `READ WRITE`。

```
SELECT OPEN_MODE FROM V$DATABASE;
```

若要尋找容錯移轉相關事件，請使用 AWS CLI 命令 `describe-events`。下列範例會尋找 *orcl2* 執行個體。

```
aws rds describe-events \
    --source-identifier orcl2 \
    --source-type db-instance
```

# 對 RDS for Oracle 複本進行故障診斷
<a name="oracle-read-replicas.troubleshooting"></a>

本節說明可能的複寫問題和解決方案。

**Topics**
+ [監控 Oracle 複寫延遲](#oracle-read-replicas.troubleshooting.lag)
+ [新增或修改觸發程序後，對 Oracle 複寫失敗進行疑難排解](#oracle-read-replicas.troubleshooting.triggers)

## 監控 Oracle 複寫延遲
<a name="oracle-read-replicas.troubleshooting.lag"></a>

若要在 Amazon CloudWatch 中監控複寫延遲，請檢視 Amazon RDS `ReplicaLag` 指標。如需複寫延遲時間的更多資訊，請參閱 [監控僅供讀取複本](USER_ReadRepl.Monitoring.md) 和 [Amazon RDS 的 Amazon CloudWatch 指標](rds-metrics.md)。

對於僅供讀取複本，若複寫延遲太長，請查詢下列檢視：
+ `V$ARCHIVED_LOG` – 顯示已經套用於僅供讀取複本的認可。
+ `V$DATAGUARD_STATS` – 顯示元件的分解細節構成 `ReplicaLag` 指標。
+ `V$DATAGUARD_STATUS` – 顯示來自 Oracle 內部複寫過程的記錄輸出。

對於掛載複本，若延遲時間過長，則您無法查詢 `V$` 檢視。相反地，請執行下列動作：
+ 檢查 CloudWatch 中的 `ReplicaLag` 指標。
+ 在控制台中檢查複本的提醒日誌檔案。查找復原訊息中的錯誤。訊息包括日誌序列號，您可以將其與主序列號進行比較。如需詳細資訊，請參閱[Amazon RDS for Oracle 資料庫日誌檔案](USER_LogAccess.Concepts.Oracle.md)。

## 新增或修改觸發程序後，對 Oracle 複寫失敗進行疑難排解
<a name="oracle-read-replicas.troubleshooting.triggers"></a>

如果您新增或修改任何觸發程序，而且如果在此之後複寫失敗，則可能會觸發問題。確定觸發程序排除了 RDS 複寫所需的下列使用者帳戶：
+ 具有管理員權限的使用者帳戶
+ `SYS`
+ `SYSTEM`
+ `RDS_DATAGUARD`
+ `rdsdb`

如需詳細資訊，請參閱[RDS for Oracle 複本的其他事項需求](oracle-read-replicas.limitations.md#oracle-read-replicas.limitations.miscellaneous)。

# RDS for Oracle 的重做傳輸壓縮
<a name="oracle-read-replicas.redo-transport-compression"></a>

使用 RDS for Oracle 重做傳輸壓縮，可改善主要資料庫執行個體與待命複本之間的複寫效能。這在網路頻寬受限或高延遲連線的環境中特別有用。

## 取得重做傳輸壓縮的授權
<a name="oracle-read-replicas.redo-transport-compression.license"></a>

重做傳輸壓縮是 [Oracle 進階壓縮](//www.oracle.com/database/advanced-compression/)選項的一部分。若要使用重做傳輸壓縮，必須具備 Oracle 進階壓縮選項的有效授權。如需授權資訊，請聯絡您的 Oracle 代表。

## 設定重做傳輸壓縮
<a name="oracle-read-replicas.redo-transport-compression.config"></a>

若要設定重做傳輸壓縮，您可以使用 `rds.replica.redo_compression` 參數。此參數適用於 Oracle 19c 和 21c 版。

`rds.replica.redo_compression` 參數接受下列值：
+ `DISABLE` – 停用重做傳輸壓縮的預設值。
+ `ENABLE` – 透過預設演算法 [ZLIB](https://zlib.net/) 啟用重做傳輸壓縮的值。
+ `ZLIB` – 使用 ZLIB 演算法明確啟用重做傳輸壓縮的值，可提供良好的壓縮比率。
+ `LZO` – 使用 [LZO](https://www.oberhumer.com/opensource/lzo/) 演算法明確啟用重做傳輸壓縮的值，可最佳化壓縮速度，尤其是在解壓縮期間。

## 重做傳輸壓縮的效能考量
<a name="oracle-read-replicas.redo-transport-compression.performance"></a>

壓縮和解壓縮操作會耗用主要和待命執行個體上的 CPU 資源。使用重做傳輸壓縮時，請考量執行個體資源用量和網路條件。

## 重做傳輸壓縮的相關主題
<a name="oracle-read-replicas.redo-transport-compression.related"></a>

如需設定重做傳輸壓縮的詳細資訊，請參閱下列資源：
+ [Amazon RDS 資料庫執行個體的資料庫參數群組](USER_WorkingWithDBInstanceParamGroups.md)
+ Oracle Database 19c 版本備註中的 [RedoCompression](https://docs.oracle.com/en/database/oracle/oracle-database/19/dgbkr/oracle-data-guard-broker-properties.html#GUID-5E6DDFD0-6196-48EB-94AF-21A1AFBB7DE1)

# 將選項新增至 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/)。

# 升級 RDS for Oracle 資料庫引擎
<a name="USER_UpgradeDBInstance.Oracle"></a>

當 Amazon RDS 支援新版本的 Oracle 資料庫時，您可以將資料庫執行個體升級為新版本。如需 Amazon RDS 上提供的 Oracle 版本相關資訊，請參閱 [https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/Welcome.html](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/Welcome.html)。

**重要**  
不再支援 RDS for Oracle 資料庫 11g、12c 和 18c。如果您維護 Oracle 資料庫 11g、12c 或 18c 快照，可以將其升級至較新的版本。如需更多詳細資訊，請參閱 [升級 Oracle 資料庫快照](USER_UpgradeDBSnapshot.Oracle.md)。

**Topics**
+ [RDS for Oracle 引擎升級概觀](USER_UpgradeDBInstance.Oracle.Overview.md)
+ [Oracle 主要版本升級](USER_UpgradeDBInstance.Oracle.Major.md)
+ [Oracle 次要版本升級](USER_UpgradeDBInstance.Oracle.Minor.md)
+ [Oracle Database 升級考量](USER_UpgradeDBInstance.Oracle.OGPG.md)
+ [測試 Oracle 資料庫升級](USER_UpgradeDBInstance.Oracle.UpgradeTesting.md)
+ [升級 RDS for Oracle 資料庫執行個體的版本](USER_UpgradeDBInstance.Oracle.Upgrading.md)
+ [升級 Oracle 資料庫快照](USER_UpgradeDBSnapshot.Oracle.md)

# RDS for Oracle 引擎升級概觀
<a name="USER_UpgradeDBInstance.Oracle.Overview"></a>

升級 RDS for Oracle 資料庫執行個體之前，請先熟悉下列概念。

**Topics**
+ [主要和次要版本升級](#USER_UpgradeDBInstance.Oracle.Overview.versions)
+ [RDS for Oracle 的支援日期和強制升級](#Aurora.VersionPolicy.MajorVersionLifetime)
+ [Oracle 引擎版本管理](#Oracle.Concepts.Patching)
+ [引擎升級期間的自動快照](#USER_UpgradeDBInstance.Oracle.Overview.snapshots)
+ [異地同步備份部署中的 Oracle 升級](#USER_UpgradeDBInstance.Oracle.Overview.multi-az)
+ [僅供讀取複本的 Oracle 升級](#USER_UpgradeDBInstance.Oracle.Overview.read-replicas)

## 主要和次要版本升級
<a name="USER_UpgradeDBInstance.Oracle.Overview.versions"></a>

主要版本是 Oracle 資料庫的主要版本，每 1 至 2 年推出一次。Oracle Database 19c 和 Oracle Database 21c 為主要版本。

RDS for Oracle 每季都會為每個支援的主要引擎發行新的次要引擎版本。版本更新 (RU) 引擎版本會包含指定季度的 RU 修補程式，藉此併入來自 Oracle 的錯誤修正。例如，21.0.0.0.ru-2024-10.rur-2024-10.r1 是併入 2024 年 10 月 RU 的 Oracle Database 21c 次要版本。

空間修補程式套件 (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 修補程式。RDS for Oracle 通常會在對應的 RU 之後 2-3 週發行 SPB。如需 RU 與 SPB 不同之處的說明，請參閱 [版本更新 (RU) 和空間修補程式套件 (SPB)](USER_UpgradeDBInstance.Oracle.Minor.md#RUs-and-SPBs)。若要進一步了解支援的 RU 與 SPB，請參閱 [Amazon Relational Database Service (Amazon RDS) for Oracle 版本備註](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes)。

RDS for Oracle 支援下列資料庫執行個體的升級：


| 升級類型 | 應用程式相容性 | 升級方式 | 升級路徑範例 | 
| --- | --- | --- | --- | 
| 主要版本 | 主要版本升級可能引進與現有應用程式不相容的變更。 | 僅限手動 | 從 Oracle 資料庫 19c 到 Oracle 資料庫 21c | 
| 次要版本 | 次要版本升級只包含與現有應用程式回溯相容的變更。 | 自動或手動 | 從 21.0.0.0.ru-2023-07.rur-2022-07.r1 到 21.0.0.0.ru-2023-10.rur-2022-10.r1 | 

**重要**  
當您升級資料庫引擎時，將會發生中斷。中斷的持續時間取決於您的引擎版本和資料庫執行個體大小。  
所有升級都務必要經過完整測試，以確認您的應用程式正常運作，再將升級套用至您的生產資料庫。如需詳細資訊，請參閱[測試 Oracle 資料庫升級](USER_UpgradeDBInstance.Oracle.UpgradeTesting.md)。

## RDS for Oracle 的支援日期和強制升級
<a name="Aurora.VersionPolicy.MajorVersionLifetime"></a>

RDS for Oracle 的資料庫版本具有預期的支援日期。當 RDS for Oracle 資料庫引擎的主要或次要版本接近其終止支援日期時，RDS 會開始強制升級，也稱為*強制升級 (forced upgrades)*。RDS 發佈了下列資訊：
+ 開始將已棄用版本的執行個體手動升級至支援版本的建議
+ 在不支援的版本上無法再建立執行個體的期限日期
+ RDS 開始在維護時段自動將執行個體升級至支援版本的日期
+ RDS 開始在維護時段外自動將執行個體升級至支援版本的日期

**重要**  
強制升級可能會對 CloudFormation 堆疊產生非預期的後果。如果您倚賴 RDS 來自動升級資料庫執行個體，您可能會遇到與 CloudFormation有關的問題。

本節包含下列主題：

**Topics**
+ [RDS for Oracle 主要版本的支援日期](#oracle-major-support-dates)
+ [RDS for Oracle 次要版本的支援日期](#oracle-minor-support-dates)

### RDS for Oracle 主要版本的支援日期
<a name="oracle-major-support-dates"></a>

RDS for Oracle 主要版本至少在對應 Oracle 資料庫發行版本的支援日期結束前都會保持可用。您可以使用下列日期來規劃測試和升級週期。這些日期表示可能需要升級到較新版本的最早日期。如果 Amazon 延長對 RDS for Oracle 版本的支援時間超過原先聲明的時間，我們計劃更新此資料表以反映後來的日期。

**注意**  
您可以執行 [describe-db-major-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-major-engine-versions.html) AWS CLI 命令或使用 [DescribeDBMajorEngineVersions](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBMajorEngineVersions.html) RDS API 操作來檢視 Oracle 資料庫的主要版本。


| Oracle 資料庫主要版本  | 升級至較新版本的預計日期 | 
| --- | --- | 
|  Oracle 資料庫 19c  |  2029 年 12 月 31 日，含 BYOL Premier 支援 (延長支援免除費用) 2032 年 12 月 31 日，含 BYOL 延長支援 (額外付費) 或無限制授權合約 2029 年 12 月 31 日，含已包含授權 (LI)  | 
|  Oracle Database 21c  | 2027 年 7 月 31 日 (不適用於延長支援) | 

RDS 會在您需要升級至較新主要版本的至少 12 個月前通知您。通知中會說明升級程序，包括重要里程碑的時間、對資料庫叢集的影響，以及建議動作。建議您在將資料庫至主要版本之前，先徹底對應用程式進行新 RDS for Oracle 版本的測試。

在這事先通知期間之後，可能會將後續主要版本的自動升級套用至任何仍在執行舊版本的 RDS for Oracle 資料庫執行個體。如果是這樣，則會在排定的維護時段期間啟動升級。

如需詳細資訊，請參閱 My Oracle Support 中的[目前資料庫版本的發行排程](https://support.oracle.com/knowledge/Oracle%20Database%20Products/742060_1.html)。

### RDS for Oracle 次要版本的支援日期
<a name="oracle-minor-support-dates"></a>

在某些情況下，我們會結束對 RDS for Oracle 中主要版本的次要版本的支援。RDS 會在您需要升級至較新的次要版本前至少 6 個月通知您。通知說明升級程序，包括重要里程碑的時間、對執行已棄用次要版本的資料庫執行個體的影響，以及建議的動作。建議您先使用新的 RDS for Oracle 版本徹底測試應用程式，再將資料庫升級至新的次要版本。

如需已棄用和不支援次要版本的詳細資訊，請參閱適用於 [Oracle 的 Amazon Relational Database Service (Amazon RDS) 版本備註](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/Welcome.html)。

## Oracle 引擎版本管理
<a name="Oracle.Concepts.Patching"></a>

透過資料庫引擎版本管理，您可控制何時以及如何對資料庫引擎軟體進行修補和升級。您可以靈活地維持與資料庫引擎修補程式版本相容的狀態。您也可以測試新的 RDS for Oracle 修補程式版本，以確保它們在生產環境中部署之前，能與您的應用程式搭配使用。此外，您可以根據自己的條件和時間表升級版本。

**注意**  
Amazon RDS 會利用 Amazon RDS 特定的資料庫引擎版本，定期彙總官方 Oracle 資料庫修補程式。如需查看 Amazon RDS Oracle 特定引擎版本中所含的 Oracle 修補程式清單，請前往 [https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/Welcome.html](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/Welcome.html)。

## 引擎升級期間的自動快照
<a name="USER_UpgradeDBInstance.Oracle.Overview.snapshots"></a>

在您升級 Oracle 資料庫執行個體期間，快照可提供防範升級問題的保護。如果資料庫執行個體的備份保留期間大於 0，則 Amazon RDS 會在升級期間拍攝下列資料庫快照：

1. 完成任何升級變更之前的資料庫執行個體快照。如果升級失敗，您可以還原此快照，以建立執行舊版本的資料庫執行個體。

1. 升級完成後的資料庫執行個體快照。

**注意**  
若要變更備份保留期，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

升級後，您無法還原至先前的引擎版本。不過，您可以透過還原升級前的快照，來建立新的 Oracle 資料庫執行個體。

## 異地同步備份部署中的 Oracle 升級
<a name="USER_UpgradeDBInstance.Oracle.Overview.multi-az"></a>

如果資料庫執行個體位於異地同步備份部署中，Amazon RDS 會升級主要和待命複本。如果不需要任何作業系統更新，主要和待命升級會同時進行。在升級完成之後，執行個體才能使用。

如果多可用區域部署需要更新作業系統，Amazon RDS 會在您要求資料庫升級時套用更新。Amazon RDS 執行以下步驟：

1. 更新目前待命資料庫執行個體上的作業系統。

1. 將主要資料庫執行個體容錯移轉至待命資料庫執行個體。

1. 升級新的主要資料庫執行個體 (先前為待命執行個體) 上的資料庫版本。主要資料庫在升級期間無法使用。

1. 更新新的待命資料庫執行個體 (先前為主要資料庫執行個體) 上的作業系統。

1. 升級新的待命資料庫執行個體上的資料庫版本。

1. 將新的主要資料庫執行個體容錯移轉回原始的主要資料庫執行個體，並將新的待命資料庫執行個體容錯移轉回原始的待命資料庫執行個體。因此，Amazon RDS 會將複寫組態回復為原始狀態。

## 僅供讀取複本的 Oracle 升級
<a name="USER_UpgradeDBInstance.Oracle.Overview.read-replicas"></a>

來源資料庫執行個體及其所有僅供讀取複本的 Oracle 資料庫引擎版本必須相同。Amazon RDS 在下列階段執行升級：

1. 升級來源資料庫執行個體。僅供讀取複本可在此階段使用。

1. 平行升級僅供讀取複本，無論複本維護時段為何。來源資料庫可在此階段使用。

對於跨區域僅供讀取複本的主要版本升級，Amazon RDS 會執行其他動作：
+ 自動產生目標版本的選項群組
+ 將原始選項群組中的所有選項和選項設定複製到新選項群組
+ 將升級的跨區域僅供讀取複本與新選項群組建立關聯

# Oracle 主要版本升級
<a name="USER_UpgradeDBInstance.Oracle.Major"></a>

若要執行主要版本升級，請手動修改資料庫執行個體。主要版本升級不會自動進行。

**重要**  
所有升級都務必要經過完整測試，以確認您的應用程式正常運作，再將升級套用至您的生產資料庫。如需詳細資訊，請參閱[測試 Oracle 資料庫升級](USER_UpgradeDBInstance.Oracle.UpgradeTesting.md)。

**Topics**
+ [主要升級的支援版本](#USER_UpgradeDBInstance.Oracle.Major.supported-versions)
+ [主要升級的支援執行個體類別](#USER_UpgradeDBInstance.Oracle.Major.instance-classes)
+ [在主要升級前收集統計資料](#USER_UpgradeDBInstance.Oracle.Major.gathering-stats)
+ [允許主要升級](#USER_UpgradeDBInstance.Oracle.Major.allowing-upgrades)

## 主要升級的支援版本
<a name="USER_UpgradeDBInstance.Oracle.Major.supported-versions"></a>

Amazon RDS 支援下列主要版本升級。


****  

| 目前版本 | 支援的升級 | 
| --- | --- | 
|  19.0.0.0 使用 CDB 架構  |  21.0.0.0  | 

Oracle Database 的主要版本升級必須升級至同月或稍後發行的版本更新 (RU)。不支援任何 Oracle Database 版本的主要版本降級。

## 主要升級的支援執行個體類別
<a name="USER_UpgradeDBInstance.Oracle.Major.instance-classes"></a>

您目前的 Oracle 資料庫執行個體可能在您要升級到的版本所不支援的資料庫執行個體類別上執行。在此情況下，在升級之前，請將資料庫執行個體移轉至支援的資料庫執行個體類別。如需 Amazon RDS for Oracle 各版本和版次所支援的資料庫執行個體類別詳細資訊，請參閱[ 資料庫執行個體類別](Concepts.DBInstanceClass.md)。

## 在主要升級前收集統計資料
<a name="USER_UpgradeDBInstance.Oracle.Major.gathering-stats"></a>

在執行主要版本升級之前，Oracle 建議您先在您要升級的資料庫執行個體上收集最佳化工具統計資料。此動作可減少在升級期間資料庫執行個體的停機時間。

若要收集最佳化工具統計資料，請以主要使用者身分連接至資料庫執行個體，然後執行 `DBMS_STATS.GATHER_DICTIONARY_STATS` 程序，如下列範例所示。

```
EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
```

如需詳細資訊，請參閱 Oracle 文件中的 [GATHER\$1DICTIONARY\$1STATS 程序](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_STATS.html?source=%3Aso%3Atw%3Aor%3Aawr%3Aodv%3A%3A#GUID-867989C7-ADFC-4464-8981-437CEA7F331E)。

## 允許主要升級
<a name="USER_UpgradeDBInstance.Oracle.Major.allowing-upgrades"></a>

主要引擎版本升級可能與您的應用程式不相容。升級無法復原。如果您指定 EngineVersion 參數的主要版本與目前主要版本不同，您必須允許主要版本升級。

如果您使用 CLI 命令 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 升級主要版本，請指定 `--allow-major-version-upgrade`。此設定並非持久性設定，因此您必須在每次執行主要升級時均指定 `--allow-major-version-upgrade`。此參數不會影響次要引擎版本的升級。如需更多詳細資訊，請參閱 [升級資料庫執行個體 引擎版本](USER_UpgradeDBInstance.Upgrading.md)。

如果您使用主控台升級主要版本，您就不需要選擇允許升級的選項。相反地，主控台會顯示主要升級無法復原的警告。

# Oracle 次要版本升級
<a name="USER_UpgradeDBInstance.Oracle.Minor"></a>

在 RDS for Oracle 中，次要版本升級是主要資料庫引擎版本的更新。在 RDS 中，次要引擎版本是版本更新 (RU) 或空間修補程式套件 (SPB)。例如，如果您的資料庫執行個體執行主要版本 Oracle Database 19c 和次要版本 19.0.0.0.ru-2025-10.rur-2025-10.r1，您可以將資料庫引擎升級至次要版本 19.0.0.0.ru-2026-01.rur-2026-01.r1。RDS for Oracle 不支援次要版本降級。

您可以手動或自動將資料庫引擎升級為次要版本。如需了解如何手動升級，請參閱 [手動升級引擎版本](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual)。如需了解如何設定自動升級，請參閱 [自動升級次要引擎版本](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.AutoMinorVersionUpgrades)。無論手動或自動升級，次要版本升級皆需停機時間。規劃升級時，請考量此停機時間。

Amazon RDS 也支援升級推展政策，以管理跨多個資料庫資源和 的自動次要版本升級 AWS 帳戶。如需詳細資訊，請參閱[使用 AWS Organizations 升級推展政策進行自動次要版本升級](RDS.Maintenance.AMVU.UpgradeRollout.md)。

**重要**  
所有升級都務必要經過完整測試，以確認您的應用程式正常運作，再將升級套用至您的生產資料庫。如需詳細資訊，請參閱[測試 Oracle 資料庫升級](USER_UpgradeDBInstance.Oracle.UpgradeTesting.md)。

**Topics**
+ [版本更新 (RU) 和空間修補程式套件 (SPB)](#RUs-and-SPBs)
+ [開啟 Oracle 的自動次要版本升級](#oracle-minor-version-upgrade-tuning-on)
+ [使用 AWS Organizations 升級推展政策進行自動次要版本升級](#oracle-minor-version-upgrade-rollout)
+ [RDS for Oracle 中的自動次要版本升級通知](#oracle-minor-version-upgrade-advance)
+ [Amazon RDS 如何排程自動次要版本升級](#oracle-minor-version-upgrade-scheduled)
+ [管理 RDS for Oracle 的自動次要版本升級](#oracle-minor-version-upgrade-managing)

## 版本更新 (RU) 和空間修補程式套件 (SPB)
<a name="RUs-and-SPBs"></a>

在 RDS 中，版本更新 (RU) 是指每季的次要引擎版本，其中包含 Oracle Database 的安全修正、錯誤修正和新功能。空間修補程式套件 (SPB) 是一個 RU 引擎版本，其中包含專為 Oracle Spatial 選項設計的修補程式。例如，名為 19.0.0.0.ru-2025-01.spb-1.r1 的 SPB 包含對應的 RU 19.0.0.0.ru-2025-01.rur-2025-01.r1 中的所有修補程式，以及 Spatial 專用的修補程式。僅支援將 SPB 用於 Oracle Database 19c。

您的執行個體設定了自動次要版本升級時，RU 和 SPB 會位於個別的升級路徑。一般而言，SPB 會在其對應的 RU 之後 2-3 週發行。下表顯示 Oracle Database 19c 的範例次要版本。


| 標準 RU 升級路徑 | SPB 升級路徑 | 
| --- | --- | 
| 19.0.0.0.ru-2025-01.rur-2025-01.r1 | 19.0.0.0.ru-2025-01.spb-1.r1 | 
| 19.0.0.0.ru-2025-04.rur-2025-04.r1 | 19.0.0.0.ru-2025-04.spb-1.r1 | 
| 19.0.0.0.ru-2025-07.rur-2025-07.r1 | 19.0.0.0.ru-2025-07.spb-1.r1 | 
| 19.0.0.0.ru-2025-10.rur-2025-10.r1 | 19.0.0.0.ru-2025-10.spb-1.r1 | 

如果您的資料庫執行個體設定了自動升級，執行個體將會位於對應至目前版本的升級路徑。例如，如果您的資料庫執行個體執行 19.0.0.0.ru-2025-01.rur-2025-01.r1 版，當 19.0.0.0.ru-2025-04.rur-2025-04.r1 發行時，您的執行個體將會自動升級至此 RU。同樣地，如果您的資料庫執行個體執行 19.0.0.0.ru-2025-01.spb-1.r1，當 19.0.0.0.ru-2025-04.spb-1.r1 發行時，您的執行個體就會自動升級至此 SPB。執行 19.0.0.0.ru-2025-01.rur-2025-01.r1 (此為 RU) 的執行個體將不會自動升級至 19.0.0.0.ru-2025-04.spb-1.r1 (這是個別升級路徑上的 SPB)。

即使您的執行個體未使用 Spatial，您仍可將資料庫執行個體升級至 SPB，但 Spatial 修補程式僅適用於 Oracle Spatial。您可以手動從 RU 升級至相同或更高引擎版本的 SPB。例如，您可以將執行個體從 19.0.0.0.ru-2025-01.rur-2025-01.r1 升級至下列其中一個引擎版本：
+ 19.0.0.0.ru-2025-01.spb-1.r1
+ 19.0.0.0.ru-2025-04.spb-1.r1

只有在 RU 是更高的引擎版本時，才能將執行個體從 SPB 升級至 RU。例如，您可以從 SPB 版本 19.0.0.0.ru-2025-04.spb-1.r1 升級至更高的 RU 版本 19.0.0.0.ru-2025-07.rur-2025-07.r1，但無法升級至相同的 RU 版本 19.0.0.0.ru-2025-04.rur-2025-04.r1。

如果您的資料庫執行個體設定了自動次要版本升級，當您手動從 RU 升級至 SPB 或從 SPB 升級至 RU 時，自動升級路徑將會變更。假設您手動從 RU 版本 19.0.0.0.ru-2025-01.rur-2025-01.r1 升級至 SPB 版本 19.0.0.0.ru-2025-01.spb-1.r1。您的下一個自動次要版本升級，將是升級至 SPB 版本 19.0.0.0.ru-2025-04.spb-1.r1。

由於 SPB 與 RU 的運作方式相同，將執行個體升級至 RU 和 SPB 的 RDS API 也是相同的。下列命令示範如何升級至 RU 和 SPB。

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --engine-version 19.0.0.0.ru-2025-01.rur-2025-01.r1

aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --engine-version 19.0.0.0.ru-2025-01.spb-1.r1
```

如需 Oracle Spatial 選項的詳細資訊，請參閱 [空間修補程式套件 (SPB) 的運作方式](Oracle.Options.Spatial.md#Oracle.Options.Spatial.SPBs)。有關 Oracle Database 19c 支援的 RU 和 SPB，請參閱 [Amazon RDS for Oracle Database 19c (19.0.0.0)](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html)。

## 開啟 Oracle 的自動次要版本升級
<a name="oracle-minor-version-upgrade-tuning-on"></a>

進行自動次要版本升級時，RDS 會將最新可用的次要版本套用至您的 Oracle 資料庫，無需您手動介入。在下列情況下，Amazon RDS for Oracle 資料庫執行個體會在下次維護時段排程升級：
+ 您的資料庫執行個體已開啟**自動次要版本升級**選項。
+ 您的資料庫執行個體未執行最新次要資料庫引擎版本。

如需了解如何開啟自動升級，請參閱 [自動升級次要引擎版本](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.AutoMinorVersionUpgrades)。

## 使用 AWS Organizations 升級推展政策進行自動次要版本升級
<a name="oracle-minor-version-upgrade-rollout"></a>

Amazon RDS for Oracle 支援 AWS Organizations 升級推展政策，以管理跨多個資料庫資源和 的自動次要版本升級 AWS 帳戶。此政策消除了手動或透過自訂工具協調自動次要版本升級的操作開銷，同時確保在推出生產之前，先在非生產環境中套用升級。當新的次要引擎版本可用時，Amazon RDS 會根據其設定的升級推展順序來升級資料庫執行個體：


| 升級推展順序 | 典型使用案例 | 當升級開始時 | 
| --- | --- | --- | 
| First | 開發和測試環境 | 最早 - 適用於驗證新版本 | 
| 秒 | 預備和非關鍵生產環境 | 在「第一個」階段完成後 | 
| Last | 關鍵生產環境 | 「第二個」階段完成後 | 

**重要**  
如果您未設定資料庫執行個體的升級推展順序，則預設為秒。

如需階段計時和持續時間的詳細資訊，請參閱 [Amazon RDS 如何排程自動次要版本升級](#oracle-minor-version-upgrade-scheduled)。如需在 AWS Organizations 中設定升級推展政策的詳細資訊，請參閱 [使用 AWS Organizations 升級推展政策進行自動次要版本升級](RDS.Maintenance.AMVU.UpgradeRollout.md)。

## RDS for Oracle 中的自動次要版本升級通知
<a name="oracle-minor-version-upgrade-advance"></a>

如果您的資料庫執行個體已啟用自動次要版本升級，RDS for Oracle 會建立待定的維護動作，在套用升級之前通知您。您可以在 Amazon RDS 主控台的資料庫詳細資訊頁面的**維護與備份**索引標籤上檢視這些待定的維護動作。

當新的次要版本可用時，RDS for Oracle 會發佈提早通知 （待定維護動作）。提早通知的格式如下：

```
An automatic minor version upgrade to engine-version will be applied during your maintenance window on apply-date based on the upgrade rollout order rollout-order. You can change the upgrade rollout order or apply this upgrade manually at any time before the scheduled date through the AWS console or AWS CLI.
```

`apply-date` 提早通知中的 是 Amazon RDS 將升級資料庫執行個體的日期。 `rollout-order`是您的升級推展順序 （第一個、第二個或最後一個）。如果您尚未設定升級推展政策，此值預設為秒。如需詳細資訊，請參閱[使用 AWS Organizations 升級推展政策進行自動次要版本升級](RDS.Maintenance.AMVU.UpgradeRollout.md)。

當升級推展階段開始時，待定維護動作訊息會變更為下列格式：

```
Automatic minor version upgrade to engine-version
```

此訊息表示已排定升級，並將在排定的套用日期的維護時段期間套用。您可以在 Amazon RDS 主控台或 `describe-pending-maintenance-actions` API 回應的 `CurrentApplyDate` 欄位中，於資料庫詳細資訊頁面的**維護與備份**索引標籤上檢查排定的套用日期。

下列範例顯示您可以使用 AWS CLI 中的 `describe-pending-maintenance-actions`命令，取得有關待定維護動作的詳細資訊：

```
aws rds describe-pending-maintenance-actions 

    "PendingMaintenanceActions": [
        {
            "ResourceIdentifier": "arn:aws:rds:us-east-1:123456789012:db:orclinst1",
            "PendingMaintenanceActionDetails": [
                {
                    "Action": "db-upgrade",
                    "Description": "Automatic minor version upgrade to 21.0.0.0.ru-2024-07.rur-2024-07.r1",
                    "CurrentApplyDate": "2024-12-02T08:10:00Z"
                }
            ]
        }, ...
```

如需了解 [describe-pending-maintenance-actions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-pending-maintenance-actions.html)，請參閱《AWS CLI 命令參考》**。

## Amazon RDS 如何排程自動次要版本升級
<a name="oracle-minor-version-upgrade-scheduled"></a>

當您使用 AWS Organizations 升級推展政策時，Amazon RDS 會根據設定的推展順序分階段升級資料庫執行個體。本節說明每個階段的時間和持續時間。

**階段 0：提早通知**

當 RDS for Oracle 發行新的次要版本 （通常是 Oracle 季度 RU 發行後 3 到 4 週） 時，啟用自動次要版本升級的所有資料庫執行個體都會收到提早通知。此通知會顯示在 Amazon RDS 主控台中資料庫詳細資訊頁面的**維護與備份**索引標籤，以及 `describe-pending-maintenance-actions` API 回應中。提早通知階段會持續 2 週。在此階段，不會自動升級。

**階段 1：先升級推展順序**

在早期通知階段結束時，RDS for Oracle 會先開始升級具有升級推展順序的資料庫執行個體。此階段的 1 月、4 月、7 月每季次要版本持續 2 到 3 週，10 月每季次要版本持續 7 到 8 週。10 月次要版本的延長期間提供足夠的時間，以在年底假日季節測試新的次要版本。在此階段期間使用升級推展順序建立的新資料庫執行個體將會自動升級。

**階段 2：升級推展順序秒**

在第 1 階段結束時，RDS for Oracle 會開始以升級推展順序升級資料庫執行個體。對於所有每季次要版本，此階段會持續 2 週。在此階段期間，使用升級推展順序第一或第二項建立的新資料庫執行個體會自動升級。

**階段 3：升級推展順序最後**

在第 2 階段結束時，RDS for Oracle 會開始升級最後升級推展順序的資料庫執行個體。此階段會持續到下一個季度次要版本發行為止。在此階段期間，使用升級推展順序先、秒或最後建立的新資料庫執行個體會自動升級。


| 階段 | 啟動時 | 持續時間 | 待定維護動作訊息 | 
| --- | --- | --- | --- | 
| 階段 0：提前通知 | 當 RDS for Oracle 發行新的次要版本時 | 2 週 | 系統會根據升級推展訂單推展訂單，在您的維護時段於 apply-date 套用自動次要版本升級至 engine-version。您可以隨時透過 AWS 主控台或 AWS CLI，在排程日期之前變更升級推展順序或手動套用此升級。 | 
| 階段 1：升級推展順序優先 | 提早通知階段結束 | January/April/July 月次要版本為 2 到 4 週，10 月次要版本為 7 到 9 週 | engine-version 的自動次要版本升級 | 
| 階段 2：升級推展順序秒 | 階段 1 結束 | 2 週 | engine-version 的自動次要版本升級 | 
| 階段 3：升級推展順序最後 | 階段 2 結束 | 直到下一個季度次要版本發行為止 | engine-version 的自動次要版本升級 | 

## 管理 RDS for Oracle 的自動次要版本升級
<a name="oracle-minor-version-upgrade-managing"></a>

在資料庫執行個體上啟用自動次要版本升級時，Amazon RDS 會在維護時段將您的資料庫執行個體自動升級至最新的次要版本。不過，您可以選擇使用 AWS CLI 或在資料庫詳細資訊頁面的**維護與備份**索引標籤上，在排程日期之前手動套用升級。

若要立即升級資料庫執行個體，而不是等待排定的維護時段：

```
aws rds apply-pending-maintenance-action \
    --resource-identifier arn:aws:rds:us-east-1:123456789012:db:orclinst1 \
    --apply-action db-upgrade \
    --opt-in-type immediate
```

若要在下一個維護時段套用升級，而非排程的套用日期：

```
aws rds apply-pending-maintenance-action \
    --resource-identifier arn:aws:rds:us-east-1:123456789012:db:orclinst1 \
    --apply-action db-upgrade \
    --opt-in-type next-maintenance
```

若要選擇退出自動次要版本升級，請修改資料庫執行個體並關閉自動次要版本升級選項。這會取消排程任何待定的自動升級。

若要進一步了解如何關閉自動次要版本升級，請參閱[自動升級次要引擎版本](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.AutoMinorVersionUpgrades)。如果您需要關閉自動次要版本升級的協助，請聯絡 AWS Support。

有時，在 RDS 套用先前的次要版本之前，就已有新的次要版本可供使用。例如，當 `both 21.0.0.0.ru-2025-10.rur-2025-10.r1`和 `21.0.0.0.ru-2026-01.rur-2026-01.r1` 作為升級目標可用`21.0.0.0.ru-2025-07.rur-2025-07.r1`時，您的執行個體正在 上執行。在此情況下，為了避免資料庫執行個體經歷不必要的停機時間，RDS 會排程自動將次要版本升級至最新版本的作業，而不升級至先前的版本。在此範例中，RDS 會將您的執行個體`21.0.0.0.ru-2025-07.rur-2025-07.r1`直接從 升級至 `21.0.0.0.ru-2026-01.rur-2026-01.r1`。

# Oracle Database 升級考量
<a name="USER_UpgradeDBInstance.Oracle.OGPG"></a>

升級 Oracle 執行個體前，請先檢閱下列資訊。

**Topics**
+ [Oracle 多重租用考量](#USER_UpgradeDBInstance.Oracle.multi)
+ [選項群組考量](#USER_UpgradeDBInstance.Oracle.OGPG.OG)
+ [參數群組考量](#USER_UpgradeDBInstance.Oracle.OGPG.PG)
+ [時區考量](#USER_UpgradeDBInstance.Oracle.OGPG.DST)
+ [空間修補程式套件 (SPB) 考量](#USER_UpgradeDBInstance.Oracle.SPB)

## Oracle 多重租用考量
<a name="USER_UpgradeDBInstance.Oracle.multi"></a>

下表說明不同版本支援的 Oracle Database 架構。


| Oracle Database 版本 | RDS 支援狀態 | Architecture | 
| --- | --- | --- | 
|  Oracle Database 21c  | 支援 |  僅 CDB  | 
|  Oracle 資料庫 19c  | 支援 |  CDB 或非 CDB  | 

下表描述支援和不支援的升級途徑。


| 升級途徑 | 支援？ | 
| --- | --- | 
|  CDB 到 CDB  |  是  | 
|  非 CDB 到 CDB  |  否，但您可以將非 CDB 轉換為 CDB，然後將其升級  | 
|  CDB 到非 CDB  |  否  | 

如需 RDS for Oracle 中 Oracle 多租用戶的詳細資訊，請參閱 [CDB 架構的單一租戶組態](Oracle.Concepts.CDBs.md#Oracle.Concepts.single-tenant)。

## 選項群組考量
<a name="USER_UpgradeDBInstance.Oracle.OGPG.OG"></a>

如果您的資料庫執行個體使用自訂選項群組，有時 Amazon RDS 無法自動指派新的選項群組。例如，在升級至新的主要版本時發生此情況。在此類情況下，請在升級時指定新的選項群組。我們建議您建立新的選項群組，並如同在現有自訂選項群組中般，將相同的選項新增到其中。

如需詳細資訊，請參閱「[建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)」或「[刪除選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Copy)」。

如果您的資料庫執行個體使用包含 `APEX` 和 `APEX-DEV` 選項的自訂選項群組，有時您可以縮短升級所需的時間。若要這麼做，請與資料庫執行個體同時升級 Oracle APEX 版本。如需詳細資訊，請參閱[升級 Oracle APEX 版本](Appendix.Oracle.Options.APEX.UpgradeandRemove.md#Appendix.Oracle.Options.APEX.Upgrade)。

## 參數群組考量
<a name="USER_UpgradeDBInstance.Oracle.OGPG.PG"></a>

如果您的資料庫執行個體使用自訂參數群組，Amazon RDS 有時無法自動為資料庫執行個體指派新的參數群組。例如，在升級至新的主要版本時發生此情況。在此類情況下，請務必在升級時指定新的參數群組。建議您建立新的參數群組，並在其中設定和現有自訂參數群組中相同的參數。

如需詳細資訊，請參閱「[在 Amazon RDS 中建立資料庫參數群組](USER_WorkingWithParamGroups.Creating.md)」或「[在 Amazon RDS 中複製資料庫參數群組](USER_WorkingWithParamGroups.Copying.md)」。

## 時區考量
<a name="USER_UpgradeDBInstance.Oracle.OGPG.DST"></a>

您可以使用時區選項，來變更 Oracle 資料庫執行個體所使用的*系統時區*。例如，您可以變更資料庫執行個體的時區，以與現場部署環境或舊型應用程式相容。時區選項會變更主機層級的時區。Amazon RDS for Oracle 全年自動更新系統時區。如需系統時區的詳細資訊，請參閱[Oracle 時區](Appendix.Oracle.Options.Timezone.md)。

當您建立 Oracle 資料庫執行個體時，資料庫會自動設定*資料庫時區*。資料庫時區也稱為「日光節約時間 (DST)」時區。資料庫時區與系統時區不同。

在 Oracle 資料庫版本之間，修補程式集或個別修補程式可能包含新的 DST 版本。這些修補程式反映不同時區區域的轉換規則變更。例如，當 DST 生效時，政府可能會變更。DST 規則的變更可能會影響 `TIMESTAMP WITH TIME ZONE` 資料類型的現有資料。

若您升級 RDS for Oracle 資料庫執行個體，Amazon RDS 不會自動升級資料庫時區檔案。如要自動升級時區檔案，您可在引擎版本升級期間或之後在與資料庫執行個體相關聯的選項組中包含 `TIMEZONE_FILE_AUTOUPGRADE` 選項。如需詳細資訊，請參閱[Oracle 時區檔案自動升級](Appendix.Oracle.Options.Timezone-file-autoupgrade.md)。

或者，如要手動升級資料庫時區檔案，請建立具有所需 DST 修補程式的新 Oracle 資料庫執行個體。不過，我們建議您使用 `TIMEZONE_FILE_AUTOUPGRADE` 選項升級資料庫時區檔案。

升級時區檔案後，將資料從目前執行個體遷移至新執行個體。您可以使用幾種技術來遷移資料，包括以下各項：
+ AWS Database Migration Service
+ Oracle GoldenGate
+ Oracle Data Pump
+ 原始匯出/匯入 (不再支援一般用途)

**注意**  
使用 Oracle Data Pump 遷移資料時，當目標時區版本低於來源時區版本時，公用程式會引發錯誤 ORA-39405。

如需詳細資訊，請參閱 Oracle 文件中的 [TIMESTAMP WITH TIMEZONE 限制](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-9B6C92EE-860E-43DD-9728-735B17B9DA89)。

## 空間修補程式套件 (SPB) 考量
<a name="USER_UpgradeDBInstance.Oracle.SPB"></a>

在 RDS for Oracle 中，版本更新 (RU) 是指次要引擎版本，其中包含 Oracle Database 的安全修正、錯誤修正和新功能。空間修補程式套件 (SPB) 是一個次要引擎版本，其中也包含專為 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 時，請考量下列事項：
+ 僅支援將 SPB 用於 Oracle Database 19c。
+ 一般而言，SPB 會在其對應的每季 RU 之後的 2-3 週發行。
+ 即使您的執行個體未使用 Oracle Spatial 選項，您仍可將資料庫執行個體升級至 SPB，但引擎版本中的 Spatial 修補程式僅適用於 Oracle Spatial。您可以在 SPB 上建立新的執行個體，後續再安裝 Oracle Spatial 選項。
+ 如果您為資料庫執行個體啟用了自動次要版本升級，則升級路徑將取決於執行個體目前使用 SPB 還是 RU。如果您的執行個體使用 SPB，則 RDS 會自動將您的執行個體升級至最新的 SPB。如果您的執行個體使用 RU，則 RDS 會自動將執行個體升級至最新的 RU。
+ 只有在 SPB 是與目前的 RU 相同或更高的引擎版本時，才能手動將資料庫執行個體從 RU 升級至 SPB。
+ 只有在 RU 是更高版本時，才能手動將資料庫執行個體從 SPB 升級至 RU。

# 測試 Oracle 資料庫升級
<a name="USER_UpgradeDBInstance.Oracle.UpgradeTesting"></a>

在將資料庫執行個體升級至主要版本之前，請完整測試資料庫，以及會存取該資料庫的所有應用程式，了解是否與新版本相容。建議您採用下列程序。

**測試主要版本升級**

1. 檢閱新版本資料庫引擎的 Oracle 升級文件，了解是否有可能影響資料庫或應用程式的相容性問題。如需詳細資訊，請參閱 Oracle 文件中的[資料庫升級指南](https://docs.oracle.com/database/121/UPGRD/toc.htm)。

1. 如果您的資料庫執行個體使用自訂選項群組，請建立與升級後新版本相容的新選項群組。如需更多詳細資訊，請參閱 [選項群組考量](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.OG)。

1. 如果您的資料庫執行個體使用自訂參數群組，請建立與升級後新版本相容的新參數群組。如需更多詳細資訊，請參閱 [參數群組考量](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.PG)。

1. 針對要升級的資料庫執行個體建立資料庫快照。如需詳細資訊，請參閱 [為 Amazon RDS 的單一可用區域資料庫執行個體建立資料庫快照](USER_CreateSnapshot.md)。

1. 還原資料庫快照，以建立新的測試資料庫執行個體。如需更多詳細資訊，請參閱 [還原至資料庫執行個體](USER_RestoreFromSnapshot.md)。

1. 使用下列其中一種方法，修改這個新的測試資料庫執行個體，以升級到新版本：
   + [主控台](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual.Console)
   + [AWS CLI](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual.CLI)
   + [RDS API](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual.API)

1. 執行測試：
   + 對升級的資料庫執行個體儘可能進行越多次品質保證測試，以確保資料庫和應用程式搭配新版本可以正常運作。
   + 實作任何必要的新測試，以評估您在步驟 1 發現的任何相容性問題所帶來的影響。
   + 測試所有預存程序、函數和觸發程序。
   + 將應用程式的測試版本指向升級的資料庫執行個體。驗證應用程式可對新版本正確運作。
   + 評估升級的執行個體所使用的儲存體，以決定升級是否需要更多儲存體。您可能需要選擇較大的執行個體類別，才能支援生產環境中的新版本。如需更多詳細資訊，請參閱 [ 資料庫執行個體類別](Concepts.DBInstanceClass.md)。

1. 如果通過所有測試，則請升級生產資料庫執行個體。允許對資料庫執行個體進行寫入作業之前，建議您先確認資料庫執行個體運作正常。

# 升級 RDS for Oracle 資料庫執行個體的版本
<a name="USER_UpgradeDBInstance.Oracle.Upgrading"></a>



若要手動升級 RDS for Oracle 資料庫執行個體的資料庫引擎版本，請使用 AWS 管理主控台 AWS CLI、 或 RDS API。如需 RDS 資料庫升級的一般資訊，請參閱 [升級 RDS for Oracle 資料庫執行個體的版本](#USER_UpgradeDBInstance.Oracle.Upgrading)。若要取得有效的升級目標，請使用 AWS CLI [ describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) 命令。

## 主控台
<a name="USER_UpgradeDBInstance.Oracle.Upgrading.Manual.Console"></a>

**使用主控台升級 RDS for Oracle 資料庫執行個體的引擎版本**

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

1. 在導覽窗格中選擇 **Databases (資料庫)**，然後選擇您要升級的資料庫執行個體。

1. 選擇 **Modify (修改)**。

1. 針對**資料庫引擎版本**，選擇較高的資料庫版本。

1. 選擇 **Continue (繼續)**，並檢查修改的摘要。請確定您了解資料庫版本升級的影響。您無法將升級的資料庫執行個體轉換回先前的版本。請確定您已使用新版本測試資料庫和應用程式，再繼續操作。

1. 決定要將資料庫執行個體升級排程於何時。若要立即套用變更，請選擇 **Apply immediately** (立即套用)。在某些情況下，選擇此選項會導致停機。如需更多詳細資訊，請參閱 [使用排程修改設定](USER_ModifyInstance.ApplyImmediately.md)。

1. 在確認頁面上，檢閱您的變更。如果都正確，請選擇 **Modify DB instance** (修改資料庫執行個體) 以儲存您的變更。

   或者，選擇 **Back (上一步)** 以編輯變更，或是選擇 **Cancel (取消)** 以取消變更。

## AWS CLI
<a name="USER_UpgradeDBInstance.Oracle.Upgrading.Manual.CLI"></a>

若要升級 RDS for Oracle 資料庫執行個體的引擎版本，您可以使用 CLI [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 命令。指定下列參數：
+ `--db-instance-identifier` – RDS for Oracle 資料庫執行個體的名稱。
+ `--engine-version` – 會以此資料庫引擎版本編號為目標進行升級。

  如需有效引擎版本的資訊，請使用 AWS CLI [ describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) 命令。
+ `--allow-major-version-upgrade` – 升級資料庫引擎版本。
+ `--no-apply-immediately` – 在下次維護時段套用變更。若要立即套用變更，請使用 `--apply-immediately`。

**Example**  
下列範例會將名為 `myorainst` 的 CDB 執行個體從目前的版本 `19.0.0.0.ru-2024-01.rur-2024-01.r1` 升級至版本 `21.0.0.0.ru-2024-04.rur-2024-04.r1`。  
針對 Linux、macOS 或 Unix：  

```
1. aws rds modify-db-instance \
2.     --db-instance-identifier myorainst \
3.     --engine-version 21.0.0.0.ru-2024-04.rur-2024-04.r1 \
4.     --allow-major-version-upgrade \
5.     --no-apply-immediately
```
在 Windows 中：  

```
1. aws rds modify-db-instance ^
2.     --db-instance-identifier myorainst ^
3.     --engine-version 21.0.0.0.ru-2024-04.rur-2024-04.r1 ^
4.     --allow-major-version-upgrade ^
5.     --no-apply-immediately
```

## RDS API
<a name="USER_UpgradeDBInstance.Oracle.Upgrading.Manual.API"></a>

若要升級 RDS for Oracle 資料庫執行個體，請使用 [ ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 動作。指定下列參數：
+ `DBInstanceIdentifier` – 資料庫執行個體的名稱，例如 *`myorainst`*。
+ `EngineVersion` – 會以此資料庫引擎版本編號為目標進行升級。如需有效引擎版本的資訊，請使用 [ DescribeDBEngineVersions](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBEngineVersions.html) 操作。
+ `AllowMajorVersionUpgrade` – 是否允許主要版本升級。若要這麼做，請設為 `true` 值。
+ `ApplyImmediately` – 指出是否要立即套用變更，或等到下個維護時段再套用。若要立即套用變更，請將值設為 `true`。若要在下一次維護時段套用變更，請將值設為 `false`。

# 升級 Oracle 資料庫快照
<a name="USER_UpgradeDBSnapshot.Oracle"></a>

在 Amazon RDS 中升級 Oracle 資料庫快照，可確保資料庫的安全性、相容性和完整支援性。當舊版 Oracle 終止修補程式支援時，您可以升級與這些版本繫結的任何手動資料庫快照，以避免出現可能的漏洞或服務限制。如需詳細資訊，請參閱 [Oracle 引擎版本管理](USER_UpgradeDBInstance.Oracle.Overview.md#Oracle.Concepts.Patching)。

Amazon RDS 在所有 AWS 區域 中都支援升級快照。

## 主控台
<a name="USER_UpgradeDBSnapshot.Oracle.Console"></a>

**升級 Oracle 資料庫快照**

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

1. 在導覽窗格中，選擇 **Snapshots (快照)**，然後選取您要升級的資料庫快照。

1. 針對 **Actions (動作)**，選擇 **Upgrade snapshot (升級快照)**。**Upgrade snapshot (升級快照)** 頁面隨即出現。

1. 選擇要升級快照的**新引擎版本**。

1. (選用) 在 **Option group (選項群組)** 中，選擇升級後資料庫快照的選項群組。升級資料庫快照時的選項群組注意事項，與升級資料庫執行個體時相同。如需更多詳細資訊，請參閱 [選項群組考量](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.OG)。

1. 請選擇 **Save changes (儲存變更)** 儲存您所做的變更。

   升級程序期間，此資料庫快照的所有快照動作會停用。同時，資料庫快照狀態會從 **available (可用)** 變更為 **upgrading (升級中)**，然後在完成時變更為 **active (作用中)**。如果資料庫快照因為快照損毀問題而無法升級，狀態會變更為 **unavailable (無法使用)**。您無法從此狀態復原快照。
**注意**  
如果資料庫升級失敗，快照會轉返至原始版本的原始狀態。

## AWS CLI
<a name="USER_UpgradeDBSnapshot.Oracle.CLI"></a>

若要使用 AWS CLI 來升級 Oracle 資料庫快照，請搭配下列參數呼叫 [modify-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-snapshot.html) 命令：
+ `--db-snapshot-identifier` – 資料庫快照的名稱。
+ `--engine-version` – 快照會以此版本為目標進行升級。

您可能也需要提供下列參數。升級資料庫快照時的選項群組注意事項，與升級資料庫執行個體時相同。如需更多詳細資訊，請參閱 [選項群組考量](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.OG)。
+ `--option-group-name` – 升級後資料庫快照的選項群組。

**Example**  
下列範例會升級資料庫快照。  
針對 Linux、macOS 或 Unix：  

```
aws rds modify-db-snapshot \
    --db-snapshot-identifier mydbsnapshot \
    --engine-version 19.0.0.0.ru-2020-10.rur-2020-10.r1 \
    --option-group-name default:oracle-se2-19
```
針對 Windows：  

```
aws rds modify-db-snapshot ^
    --db-snapshot-identifier mydbsnapshot ^
    --engine-version 19.0.0.0.ru-2020-10.rur-2020-10.r1 ^
    --option-group-name default:oracle-se2-19
```

## RDS API
<a name="USER_UpgradeDBSnapshot.Oracle.API"></a>

若要使用 Amazon RDS API 來升級 Oracle 資料庫快照，請搭配下列參數呼叫 [ModifyDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBSnapshot.html) 操作：
+ `DBSnapshotIdentifier` – 資料庫快照的名稱。
+ `EngineVersion` – 快照會以此版本為目標進行升級。

您可能還需要包含 `OptionGroupName` 參數。升級資料庫快照時的選項群組注意事項，與升級資料庫執行個體時相同。如需更多詳細資訊，請參閱 [選項群組考量](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.OG)。

# 將 RDS for Oracle 資料庫執行個體與第三方軟體搭配使用
<a name="Oracle.Resources"></a>

您可以託管支援工具和第三方軟體的 RDS for Oracle 資料庫執行個體。

**Topics**
+ [使用 Oracle GoldenGate 搭配 Amazon RDS for Oracle](Appendix.OracleGoldenGate.md)
+ [在 RDS for Oracle 上使用 Oracle Repository Creation Utility](Oracle.Resources.RCU.md)
+ [在 Amazon EC2 執行個體上設定 Oracle Connection Manager](oracle-cman.md)
+ [在 Amazon RDS 上的 Oracle 上安裝 Siebel 資料庫](Oracle.Resources.Siebel.md)

# 使用 Oracle GoldenGate 搭配 Amazon RDS for Oracle
<a name="Appendix.OracleGoldenGate"></a>

Oracle GoldenGate 會收集、複寫和管理資料庫之間的交易資料。這是日誌式變更資料擷取 (CDC) 和複寫軟體套件，與線上交易處理 (OLTP) 系統的資料庫搭配使用。Oracle GoldenGate 會建立線索檔案，其中包含來源資料庫中最近變更的資料。然後它會將這些檔案推送至伺服器，其中有一個程序會將追蹤檔案轉換成標準 SQL，以套用至目標資料庫。

搭配 RDS for Oracle 的 Oracle GoldenGate 支援下列功能：
+ 主動-主動式資料庫複寫
+ 災難復原
+ 資料保護
+ 區域內和跨區域複寫
+ 零停機時間遷移與升級
+ 在 RDS for Oracle 資料庫執行個體與非 Oracle 資料庫之間進行資料複寫
**注意**  
如需支援的資料庫清單，請參閱 Oracle 文件中的 [Oracle Fusion Middleware 支援的系統組態](https://www.oracle.com/middleware/technologies/fusion-certification.html)。

您可以搭配 RDS for Oracle 使用 Oracle GoldenGate 來升級 Oracle Database 的主要版本。例如：您可以搭配 Amazon RDS 使用 GoldenGate，從 Oracle Database 11g 內部部署資料庫升級到 Amazon RDS 資料庫執行個體上的 Oracle Database 19c。

**Topics**
+ [Oracle GoldenGate 支援的版本和授權選項](#Appendix.OracleGoldenGate.licensing)
+ [Oracle GoldenGate 的要求與限制](#Appendix.OracleGoldenGate.requirements)
+ [Oracle GoldenGate 架構](Appendix.OracleGoldenGate.Overview.md)
+ [設定 Oracle GoldenGate](Appendix.OracleGoldenGate.setting-up.md)
+ [使用 Oracle GoldenGate 的 EXTRACT 和 REPLICAT 公用程式](Appendix.OracleGoldenGate.ExtractReplicat.md)
+ [監控 Oracle GoldenGate](Appendix.OracleGoldenGate.Monitoring.md)
+ [Oracle GoldenGate 疑難排解](Appendix.OracleGoldenGate.Troubleshooting.md)

## Oracle GoldenGate 支援的版本和授權選項
<a name="Appendix.OracleGoldenGate.licensing"></a>

您可以搭配 Oracle GoldenGate 版本 12c 和更新版本，使用 RDS for Oracle 的 Standard Edition 2 (SE2) 或 Enterprise Edition (EE)。您可以使用下列 Oracle GoldenGate 功能：
+ 支援 Oracle GoldenGate 遠端擷取。
+ 使用傳統非 CDB 資料庫架構的 RDS for Oracle 資料庫執行個體支援擷取。執行 Oracle Database 21c 或 Oracle Database 19c 版本 19.0.0.0.ru-2024-04.rur-2024-04.r1 或更新版本的 CDB 支援 Oracle GoldenGate 遠端 PDB 擷取。
+ 使用非 CDB 或 CDB 架構的 RDS for Oracle 資料庫執行個體 支援 Oracle GoldenGate 遠端交付 (複寫)。遠端交付支援整合式複寫、平行複寫、協調式複寫和傳統複寫。
+ RDS for Oracle 支援 Oracle GoldenGate 的傳統和微服務架構。
+ 使用整合式擷取模式時，支援 Oracle GoldenGate DDL 和序列值複寫。

您負責管理 Oracle GoldenGate 授權 (BYOL)，以在所有 AWS 區域中與 Amazon RDS 搭配使用。如需詳細資訊，請參閱[RDS for Oracle 授權選項](Oracle.Concepts.Licensing.md)。

## Oracle GoldenGate 的要求與限制
<a name="Appendix.OracleGoldenGate.requirements"></a>

當您使用 Oracle GoldenGate 和 RDS for Oracle 時，請考慮下列需求和限制：
+ 您負責設定和管理 Oracle GoldenGate，以與 RDS for Oracle 搭配使用。
+ 您負責設定使用來源和目標資料庫認證的 Oracle GoldenGate 版本。如需詳細資訊，請參閱 Oracle 文件中的 [Oracle Fusion Middleware 支援的系統組態](https://www.oracle.com/middleware/technologies/fusion-certification.html)。
+ 您可以針對許多不同的使用案例，在許多不同的 AWS 環境中使用 Oracle GoldenGate。如果您有與 Oracle GoldenGate 相關的支援相關問題，請聯絡 Oracle Support Services。
+ 您可以在使用 Oracle 透明資料加密 (TDE) 的 RDS for Oracle 資料庫執行個體上使用 Oracle GoldenGate。為了維持複寫資料的完整性，請使用 Amazon EBS 加密的磁碟區或線索檔案加密來對 GoldenGate 中樞設定加密。也需為 Oracle GoldenGate 中樞及來源和目標資料庫執行個體之間傳送的資料設定加密。RDS for Oracle 資料庫執行個體支援使用 [Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md) 或 [Oracle 原生網路加密](Appendix.Oracle.Options.NetworkEncryption.md) 加密。

# Oracle GoldenGate 架構
<a name="Appendix.OracleGoldenGate.Overview"></a>

適用於 Amazon RDS 的 Oracle GoldenGate 架構由下列幾個分開的模組組成：

來源資料庫  
來源資料庫可以是內部部署 Oracle 資料庫、Amazon EC2 執行個體上的 Oracle 資料庫，或 Amazon RDS 資料庫執行個體上的 Oracle 資料庫。

Oracle GoldenGate 中樞  
GoldenGate 中樞會將交易資訊從來源資料庫移至目標資料庫。中樞可以是以下其中一種：  
+ 已安裝 Oracle Database 及 Oracle GoldenGate 的 Amazon EC2 執行個體
+ 內部部署 Oracle 安裝
您可以有多個 Amazon EC2 中樞。如果您使用 Oracle GoldenGate 進行跨區域複寫，建議您使用兩個中樞。

目標資料庫  
您的目標資料庫可以位於 Amazon RDS 資料庫執行個體、Amazon EC2 執行個體或內部部署位置。

以下各節描述 Amazon RDS 上 Oracle GoldenGate 的常見案例。

**Topics**
+ [內部部署來源資料庫和 Oracle GoldenGate 中樞](#Appendix.OracleGoldenGate.on-prem-source-gg-hub)
+ [內部部署來源資料庫和 Amazon EC2 中樞](#Appendix.OracleGoldenGate.on-prem-source-ec2-hub)
+ [Amazon RDS 來源資料庫和 Amazon EC2 中樞](#Appendix.OracleGoldenGate.rds-source-ec2-hub)
+ [Amazon EC2 來源資料庫和 Amazon EC2 中樞](#Appendix.OracleGoldenGate.ec2-source-ec2-hub)
+ [不同區域中 AWS 的 Amazon EC2 中樞](#Appendix.OracleGoldenGate.cross-region-hubs)

## 內部部署來源資料庫和 Oracle GoldenGate 中樞
<a name="Appendix.OracleGoldenGate.on-prem-source-gg-hub"></a>

在此案例中，內部部署 Oracle 來源資料庫和內部部署 Oracle GoldenGate 中樞會將資料提供給目標 Amazon RDS 資料庫執行個體。

![\[使用 Amazon RDS 的 Oracle GoldenGate 組態 0\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-gg0.png)


## 內部部署來源資料庫和 Amazon EC2 中樞
<a name="Appendix.OracleGoldenGate.on-prem-source-ec2-hub"></a>

在此案例中，內部部署 Oracle 資料庫做為來源資料庫使用。它連線至一個 Amazon EC2 執行個體。此中樞會向目標 RDS for Oracle 資料庫執行個體提供資料。

![\[使用 Amazon RDS 的 Oracle GoldenGate 組態 1\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-gg1.png)


## Amazon RDS 來源資料庫和 Amazon EC2 中樞
<a name="Appendix.OracleGoldenGate.rds-source-ec2-hub"></a>

在此案例中，RDS for Oracle 資料庫執行個體做為來源資料庫使用。它連線至一個 Amazon EC2 執行個體。此中樞會向目標 RDS for Oracle 資料庫執行個體提供資料。

![\[使用 Amazon RDS 的 Oracle GoldenGate 組態 2\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-gg2.png)


## Amazon EC2 來源資料庫和 Amazon EC2 中樞
<a name="Appendix.OracleGoldenGate.ec2-source-ec2-hub"></a>

在此案例中，Amazon EC2 執行個體上的 Oracle 資料庫做為來源資料庫使用。它連線至一個 Amazon EC2 執行個體。此中樞會向目標 RDS for Oracle 資料庫執行個體提供資料。

![\[使用 Amazon RDS 的 Oracle GoldenGate 組態 3\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-gg3.png)


## 不同區域中 AWS 的 Amazon EC2 中樞
<a name="Appendix.OracleGoldenGate.cross-region-hubs"></a>

在此案例中，Amazon RDS 資料庫執行個體上的 Oracle 資料庫會連線至相同區域中的 Amazon EC2 執行個體中樞 AWS 。中樞會連接到不同區域中的 Amazon EC2 執行個體中樞 AWS 。第二個中樞會將資料提供給與第二個 Amazon EC2 執行個體中樞位於相同 AWS 區域的目標 RDS for Oracle 資料庫執行個體。

![\[使用 Amazon RDS 的 Oracle GoldenGate 組態 4\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-gg4.png)


**注意**  
任何會影響在內部部署環境上執行 Oracle GoldenGate 的問題，也會影響在 AWS上執行 GoldenGate。強烈建議您監控 Oracle GoldenGate 中樞，以確保在容錯移轉發生時，`EXTRACT` 和 `REPLICAT` 仍可繼續執行。因為 Oracle GoldenGate 中樞在 Amazon EC2 執行個體上執行，Amazon RDS 不會管理 Oracle GoldenGate 中樞，也無法確保中樞一定正在執行。

# 設定 Oracle GoldenGate
<a name="Appendix.OracleGoldenGate.setting-up"></a>

若要使用 Amazon RDS 設定 Oracle GoldenGate，請在 Amazon EC2 執行個體上設定中樞，然後設定來源和目標資料庫。下列幾節提供一個範例，說明如何設定 Oracle GoldenGate，以與 Amazon RDS for Oracle 搭配使用。

**Topics**
+ [在 Amazon EC2 上設定 Oracle GoldenGate 中樞](#Appendix.OracleGoldenGate.Hub)
+ [設定來源資料庫與 Amazon RDS 上的 GoldenGate 搭配使用](#Appendix.OracleGoldenGate.Source)
+ [設定目標資料庫與 Amazon RDS 上的 Oracle GoldenGate 搭配使用](#Appendix.OracleGoldenGate.Target)

## 在 Amazon EC2 上設定 Oracle GoldenGate 中樞
<a name="Appendix.OracleGoldenGate.Hub"></a>

若要在 Amazon EC2 執行個體上建立 Oracle GoldenGate 中樞，請先建立 Amazon EC2 執行個體，其中具有 Oracle RDBMS 的完整用戶端安裝。Amazon EC2 執行個體也須已安裝 Oracle GoldenGate 軟體。Oracle GoldenGate 軟體版本取決於來源與目標資料庫版本。如需安裝 Oracle GoldenGatee 的詳細資訊，請參閱 [Oracle GoldenGate 文件](https://docs.oracle.com/en/middleware/goldengate/core/index.html)。

做為 Oracle GoldenGate 中樞的 Amazon EC2 執行個體，會處理來自來源資料庫的交易資訊並存放到線索檔案中。若要支援此程序，請確定您符合下列需求：
+ 您已針對追蹤檔案配置足夠的儲存體。
+ Amazon EC2 執行個體具有足夠的處理能力來管理資料量。
+ EC2 執行個體有足夠的記憶體來儲存交易資訊，然後再寫入追蹤檔案。

**在 Amazon EC2 執行個體上設定 Oracle GoldenGate 傳統架構中樞**

1. 建立 Oracle GoldenGate 目錄中的子目錄。

   在 Amazon EC2 命令列 shell 中，啟動 `ggsci` (Oracle GoldenGate 命令解譯器)。`CREATE SUBDIRS` 命令會在 `/gg` 目錄下建立參數、報告和檢查點檔案的子目錄。

   ```
   prompt$ cd /gg
   prompt$ ./ggsci
   
   GGSCI> CREATE SUBDIRS
   ```

1. 設定 `mgr.prm` 檔案。

   下列範例會將下列幾行新增至 `$GGHOME/dirprm/mgr.prm` 檔案。

   ```
   PORT 8199
   PurgeOldExtracts ./dirdat/*, UseCheckpoints, MINKEEPDAYS 5
   ```

1. 啟動管理員。

   下列範例會啟動 `ggsci` 並執行 `start mgr` 命令。

   ```
   GGSCI> start mgr
   ```

Oracle GoldenGate 中樞現在可供使用。

## 設定來源資料庫與 Amazon RDS 上的 GoldenGate 搭配使用
<a name="Appendix.OracleGoldenGate.Source"></a>

完成下列任務，設定來源資料庫以搭配 Oracle GoldenGate 使用。

**Topics**
+ [步驟 1：開啟來源資料庫上的補充記錄](#Appendix.OracleGoldenGate.Source.Logging)
+ [步驟 2：將 ENABLE\$1GOLDENGATE\$1REPLICATION 初始化參數設為 true](#Appendix.OracleGoldenGate.Source.enable-gg-rep)
+ [步驟 3：在來源資料庫上設定日誌保留期間](#Appendix.OracleGoldenGate.Source.Retention)
+ [步驟 4：在來源資料庫上建立 Oracle GoldenGate 使用者帳戶。](#Appendix.OracleGoldenGate.Source.Account)
+ [步驟 5：在來源資料庫上將帳戶權限授予使用者](#Appendix.OracleGoldenGate.Source.Privileges)
+ [步驟 6：新增來源資料庫的 TNS 別名](#Appendix.OracleGoldenGate.Source.TNS)

### 步驟 1：開啟來源資料庫上的補充記錄
<a name="Appendix.OracleGoldenGate.Source.Logging"></a>

若要開啟最低資料庫層級補充記錄，請執行下列 PL/SQL 程序：

```
EXEC rdsadmin.rdsadmin_util.alter_supplemental_logging(p_action => 'ADD')
```

### 步驟 2：將 ENABLE\$1GOLDENGATE\$1REPLICATION 初始化參數設為 true
<a name="Appendix.OracleGoldenGate.Source.enable-gg-rep"></a>

當您將 `ENABLE_GOLDENGATE_REPLICATION` 初始化參數設為 `true` 時，它會允許資料庫服務支援邏輯複寫。如果來源資料庫位於 Amazon RDS 資料庫執行個體，請確定將一個參數群組指派給 `ENABLE_GOLDENGATE_REPLICATION` 初始化參數設為 `true` 的資料庫執行個體。如需 `ENABLE_GOLDENGATE_REPLICATION` 初始化參數的詳細資訊，請參閱 [Oracle Database 文件](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/ENABLE_GOLDENGATE_REPLICATION.html)。

### 步驟 3：在來源資料庫上設定日誌保留期間
<a name="Appendix.OracleGoldenGate.Source.Retention"></a>

請確定來源資料庫設定為保留封存的重做日誌。請考量下列準則：
+ 指定記錄保留的持續時間 (以小時為單位)。最小值為一小時 。
+ 將持續時間設定為超過來源資料庫執行個體的任何潛在停機時間、通訊的任何潛在期間，以及來源執行個體聯網問題的任何潛在期間。此持續時間可讓 Oracle GoldenGate 視需要從來源執行個體復原日誌。
+ 請確定執行個體有足夠的儲存空間可存放這些檔案。

例如，將封存重做日誌的保留期間設為 24 小時。

```
EXEC rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24)
```

如果未啟用日誌保留，或如果保留值太小，您會收到如下訊息：

```
2022-03-06 06:17:27  ERROR   OGG-00446  error 2 (No such file or directory) 
opening redo log /rdsdbdata/db/GGTEST3_A/onlinelog/o1_mf_2_9k4bp1n6_.log for sequence 1306 
Not able to establish initial position for begin time 2022-03-06 06:16:55.
```

因為您的資料庫執行個體會保留您封存的重做日誌，所以請確定您有足夠的空間存放檔案。若要查看您在過去 *num\$1hours* 小時內已使用多少空間，請使用下列查詢，並將 *num\$1hours* 改為時數。

```
SELECT SUM(BLOCKS * BLOCK_SIZE) BYTES FROM V$ARCHIVED_LOG 
   WHERE NEXT_TIME>=SYSDATE-num_hours/24 AND DEST_ID=1;
```

### 步驟 4：在來源資料庫上建立 Oracle GoldenGate 使用者帳戶。
<a name="Appendix.OracleGoldenGate.Source.Account"></a>

Oracle GoldenGate 會以資料庫使用者身分執行，且需有適當的資料庫權限，才能存取來源資料庫的重做日誌和封存重做日誌。若要提供這些內容，在來源資料庫上建立使用者帳戶。如需 Oracle GoldenGate 使用者帳戶許可的詳細資訊，請參閱 [Oracle 文件](https://docs.oracle.com/en/middleware/goldengate/core/19.1/oracle-db/establishing-oracle-goldengate-credentials.html#GUID-79122058-27B0-4FB6-B3DC-B7D1B67EB053)。

下列陳述式會建立一個名為 `oggadm1` 的使用者帳戶。

```
CREATE TABLESPACE administrator;
CREATE USER oggadm1  IDENTIFIED BY "password"
   DEFAULT TABLESPACE ADMINISTRATOR TEMPORARY TABLESPACE TEMP;
ALTER USER oggadm1 QUOTA UNLIMITED ON administrator;
```

**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

### 步驟 5：在來源資料庫上將帳戶權限授予使用者
<a name="Appendix.OracleGoldenGate.Source.Privileges"></a>

在此任務中，您會將必要的帳戶權限授予來源資料庫上的資料庫使用者。

**在來源資料庫上授予帳戶權限**

1. 您可以使用 SQL 命令 `grant` 和 `rdsadmin.rdsadmin_util` 程序 `grant_sys_object`，將必要權限授予 Oracle GoldenGate 使用者帳戶。下列陳述式會將權限授予一個名為 `oggadm1` 的使用者。

   ```
   GRANT CREATE SESSION, ALTER SESSION TO oggadm1;
   GRANT RESOURCE TO oggadm1;
   GRANT SELECT ANY DICTIONARY TO oggadm1;
   GRANT FLASHBACK ANY TABLE TO oggadm1;
   GRANT SELECT ANY TABLE TO oggadm1;
   GRANT SELECT_CATALOG_ROLE TO rds_master_user_name WITH ADMIN OPTION;
   EXEC rdsadmin.rdsadmin_util.grant_sys_object ('DBA_CLUSTERS', 'OGGADM1');
   GRANT EXECUTE ON DBMS_FLASHBACK TO oggadm1;
   GRANT SELECT ON SYS.V_$DATABASE TO oggadm1;
   GRANT ALTER ANY TABLE TO oggadm1;
   ```

1. 授予將成為 Oracle GoldenGate 管理員之使用者帳戶所需的權限。執行下列 PL/SQL 程式。

   ```
   EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege (
       grantee                 => 'OGGADM1',
       privilege_type          => 'capture',
       grant_select_privileges => true, 
       do_grants               => TRUE);
   ```

   若要撤銷權限，請在同一套件中使用程序 `revoke_admin_privilege`。

### 步驟 6：新增來源資料庫的 TNS 別名
<a name="Appendix.OracleGoldenGate.Source.TNS"></a>

將下列項目新增至 Oracle 主目錄中要由 `EXTRACT` 程序使用的 `$ORACLE_HOME/network/admin/tnsnames.ora`。如需 `tnsnames.ora` 檔案的詳細資訊，請參閱 [Oracle 文件](https://docs.oracle.com/en/database/oracle/oracle-database/19/netrf/local-naming-parameters-in-tns-ora-file.html#GUID-7F967CE5-5498-427C-9390-4A5C6767ADAA)。

```
OGGSOURCE=
   (DESCRIPTION= 
        (ENABLE=BROKEN)
        (ADDRESS_LIST= 
            (ADDRESS=(PROTOCOL=TCP)(HOST=goldengate-source.abcdef12345.us-west-2.rds.amazonaws.com)(PORT=8200)))
        (CONNECT_DATA=(SERVICE_NAME=ORCL))
    )
```

## 設定目標資料庫與 Amazon RDS 上的 Oracle GoldenGate 搭配使用
<a name="Appendix.OracleGoldenGate.Target"></a>

在此任務中，您會設定目標資料庫執行個體與 Oracle GoldenGate 搭配使用。

**Topics**
+ [步驟 1：將 ENABLE\$1GOLDENGATE\$1REPLICATION 初始化參數設為 true](#Appendix.OracleGoldenGate.Target.enable-gg-rep)
+ [步驟 2：在目標資料庫上建立 Oracle GoldenGate 使用者帳戶](#Appendix.OracleGoldenGate.Target.User)
+ [步驟 3：在目標資料庫上授予帳戶權限](#Appendix.OracleGoldenGate.Target.Privileges)
+ [步驟 4：新增目標資料庫的 TNS 別名](#Appendix.OracleGoldenGate.Target.TNS)

### 步驟 1：將 ENABLE\$1GOLDENGATE\$1REPLICATION 初始化參數設為 true
<a name="Appendix.OracleGoldenGate.Target.enable-gg-rep"></a>

當您將 `ENABLE_GOLDENGATE_REPLICATION` 初始化參數設為 `true` 時，它會允許資料庫服務支援邏輯複寫。如果來源資料庫位於 Amazon RDS 資料庫執行個體，請確定將一個參數群組指派給 `ENABLE_GOLDENGATE_REPLICATION` 初始化參數設為 `true` 的資料庫執行個體。如需 `ENABLE_GOLDENGATE_REPLICATION` 初始化參數的詳細資訊，請參閱 [Oracle Database 文件](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/ENABLE_GOLDENGATE_REPLICATION.html)。

### 步驟 2：在目標資料庫上建立 Oracle GoldenGate 使用者帳戶
<a name="Appendix.OracleGoldenGate.Target.User"></a>

Oracle GoldenGate 會以資料庫使用者身分執行，而且需要適當的資料庫權限。若要確定它具有這些權限，請在目標資料庫上建立一個使用者帳戶。

下列陳述式會建立一個名為 `oggadm1` 的使用者。

```
CREATE TABLESPSACE administrator;
CREATE USER oggadm1  IDENTIFIED BY "password" 
   DEFAULT TABLESPACE administrator 
   TEMPORARY TABLESPACE temp;
ALTER USER oggadm1 QUOTA UNLIMITED ON administrator;
```

**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

### 步驟 3：在目標資料庫上授予帳戶權限
<a name="Appendix.OracleGoldenGate.Target.Privileges"></a>

在此任務中，您會將必要的帳戶權限授予目標資料庫上的資料庫使用者。

**在目標資料庫上授予帳戶權限**

1. 您需要將必要權限授予目標資料庫上的 Oracle GoldenGate 使用者帳戶。在下列範例中，您會將權限授予 `oggadm1`。

   ```
   GRANT CREATE SESSION        TO oggadm1;
   GRANT ALTER SESSION         TO oggadm1;
   GRANT CREATE CLUSTER        TO oggadm1;
   GRANT CREATE INDEXTYPE      TO oggadm1;
   GRANT CREATE OPERATOR       TO oggadm1;
   GRANT CREATE PROCEDURE      TO oggadm1;
   GRANT CREATE SEQUENCE       TO oggadm1;
   GRANT CREATE TABLE          TO oggadm1;
   GRANT CREATE TRIGGER        TO oggadm1;
   GRANT CREATE TYPE           TO oggadm1;
   GRANT SELECT ANY DICTIONARY TO oggadm1;
   GRANT CREATE ANY TABLE      TO oggadm1;
   GRANT ALTER ANY TABLE       TO oggadm1;
   GRANT LOCK ANY TABLE        TO oggadm1;
   GRANT SELECT ANY TABLE      TO oggadm1;
   GRANT INSERT ANY TABLE      TO oggadm1;
   GRANT UPDATE ANY TABLE      TO oggadm1;
   GRANT DELETE ANY TABLE      TO oggadm1;
   ```

1. 授予將成為 Oracle GoldenGate 管理員之使用者帳戶所需的權限。執行下列 PL/SQL 程式。

   ```
   EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege (
       grantee                 => 'OGGADM1',
       privilege_type          => 'apply',
       grant_select_privileges => true, 
       do_grants               => TRUE);
   ```

   若要撤銷權限，請在同一套件中使用程序 `revoke_admin_privilege`。

### 步驟 4：新增目標資料庫的 TNS 別名
<a name="Appendix.OracleGoldenGate.Target.TNS"></a>

將下列項目新增至 Oracle 主目錄中要由 `REPLICAT` 程序使用的 `$ORACLE_HOME/network/admin/tnsnames.ora`。對於 Oracle 多租戶資料庫，請確定 TNS 別名指向 PDB 的服務名稱。如需 `tnsnames.ora` 檔案的詳細資訊，請參閱 [Oracle 文件](https://docs.oracle.com/en/database/oracle/oracle-database/19/netrf/local-naming-parameters-in-tns-ora-file.html#GUID-7F967CE5-5498-427C-9390-4A5C6767ADAA)。

```
OGGTARGET=
    (DESCRIPTION= 
        (ENABLE=BROKEN)
        (ADDRESS_LIST= 
            (ADDRESS=(PROTOCOL=TCP)(HOST=goldengate-target.abcdef12345.us-west-2.rds.amazonaws.com)(PORT=8200)))
        (CONNECT_DATA=(SERVICE_NAME=ORCL))
    )
```

# 使用 Oracle GoldenGate 的 EXTRACT 和 REPLICAT 公用程式
<a name="Appendix.OracleGoldenGate.ExtractReplicat"></a>

Oracle GoldenGate 公用程式 `EXTRACT` 和 `REPLICAT` 會一起利用追蹤檔案，並透過增量交易複寫，將來源和目標資料庫保持同步。來源資料庫上發生的所有變更皆由 `EXTRACT` 自動偵測，然後格式化並傳送至 Oracle GoldenGate 內部部署或 Amazon EC2 執行個體中樞。完成初始載入之後，`REPLICAT` 公用程式會從這些檔案讀取資料並複寫至目標資料庫。

## 執行 Oracle GoldenGate EXTRACT 公用程式
<a name="Appendix.OracleGoldenGate.Extract"></a>

`EXTRACT` 公用程式會從來源資料庫擷取、轉換及輸出資料至追蹤檔案。基本程序如下：

1. `EXTRACT` 會將交易詳細資訊排入記憶體或暫存磁碟儲存體。

1. 該來源資料庫會遞交該筆交易。

1. `EXTRACT` 會將交易詳細資訊寫入追蹤檔案。

1. 線索檔案會將這些詳細資訊路由到內部部署的 Oracle GoldenGate 或 Amazon EC2 執行個體中樞，然後再路由到目標資料庫。

下列步驟會啟動 `EXTRACT` 公用程式、從來源資料庫 `OGGSOURCE` 中的 `EXAMPLE.TABLE` 擷取資料，然後建立追蹤檔案。

**執行 EXTRACT 公用程式**

1. 在 Oracle GoldenGate 中樞 (內部部署或 Amazon EC2 執行個體) 上設定 `EXTRACT` 參數檔案。下列清單會顯示名為 `$GGHOME/dirprm/eabc.prm` 的範例 `EXTRACT` 參數檔案。

   ```
   EXTRACT EABC
    
   USERID oggadm1@OGGSOURCE, PASSWORD "my-password"
   EXTTRAIL /path/to/goldengate/dirdat/ab 
    
   IGNOREREPLICATES
   GETAPPLOPS
   TRANLOGOPTIONS EXCLUDEUSER OGGADM1
   	 
   TABLE EXAMPLE.TABLE;
   ```

1. 在 Oracle GoldenGate 中樞上，登入來源資料庫，並啟動 Oracle GoldenGate 命令列界面 `ggsci`。以下範例會顯示登入的格式。

   ```
   dblogin oggadm1@OGGSOURCE
   ```

1. 新增交易資料，開啟資料庫資料表的補充記錄。

   ```
   add trandata EXAMPLE.TABLE
   ```

1. 使用 `ggsci` 命令列，搭配下列命令來啟用 `EXTRACT` 公用程式。

   ```
   add extract EABC tranlog, INTEGRATED tranlog, begin now
   add exttrail /path/to/goldengate/dirdat/ab 
      extract EABC, 
      MEGABYTES 100
   ```

1. 向資料庫註冊 `EXTRACT` 公用程式，如此就不會刪除封存日誌。此任務可讓您在必要時復原未遞交的舊交易。若要向資料庫註冊 `EXTRACT` 公用程式，請使用下列命令。

   ```
   register EXTRACT EABC, DATABASE
   ```

1. 使用下列命令啟動 `EXTRACT` 公用程式。

   ```
   start EABC
   ```

## 執行 Oracle GoldenGate REPLICAT 公用程式
<a name="Appendix.OracleGoldenGate.Replicat"></a>

`REPLICAT` 公用程式會將追蹤檔案中的交易資訊「推送」至目標資料庫。

下列步驟會啟用並啟動 `REPLICAT` 公用程式，以便它可以將擷取的資料複寫到目標資料庫 `OGGTARGET` 中的資料表 `EXAMPLE.TABLE`。

**執行 REPLICATE 公用程式**

1. 在 Oracle GoldenGate 中樞 (內部部署或 EC2 執行個體) 上設定 `REPLICAT` 參數檔案。下列清單會顯示名為 `$GGHOME/dirprm/rabc.prm` 的範例 `REPLICAT` 參數檔案。

   ```
   REPLICAT RABC
    
   USERID oggadm1@OGGTARGET, password "my-password"
    
   ASSUMETARGETDEFS
   MAP EXAMPLE.TABLE, TARGET EXAMPLE.TABLE;
   ```
**注意**  
指定此處所顯示提示以外的密碼，作為安全最佳實務。

1. 登入目標資料庫，然後啟動 Oracle GoldenGate 命令列界面 (`ggsci`)。以下範例會顯示登入的格式。

   ```
   dblogin userid oggadm1@OGGTARGET
   ```

1. 使用 `ggsci` 命令列，新增檢查點資料表。指明的使用者應該為 Oracle GoldenGate 使用者帳戶，而不是目標資料表結構描述擁有者。下列範例會建立名為 `gg_checkpoint` 的檢查點資料表。

   ```
   add checkpointtable oggadm1.oggchkpt
   ```

1. 若要啟用 `REPLICAT` 公用程式，請使用下列命令。

   ```
   add replicat RABC EXTTRAIL /path/to/goldengate/dirdat/ab CHECKPOINTTABLE oggadm1.oggchkpt 
   ```

1. 使用下列命令啟動 `REPLICAT` 公用程式。

   ```
   start RABC
   ```

# 監控 Oracle GoldenGate
<a name="Appendix.OracleGoldenGate.Monitoring"></a>

當您使用 Oracle GoldenGate 進行複製時，請確認已啟動執行 Oracle GoldenGate 程序，且來源和目標資料庫已同步。您可以使用下列監控工具：
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 是一項監控服務，用於此模式來監控 GoldenGate 錯誤日誌。
+ [Amazon SNS](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/US_SetupSNS.html) 是一項訊息通知服務，用於此模式來傳送電子郵件通知。

如需詳細指示，請參閱[使用 Amazon CloudWatch 監控 Oracle GoldenGate 日誌](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/monitor-oracle-goldengate-logs-by-using-amazon-cloudwatch.html)。

# Oracle GoldenGate 疑難排解
<a name="Appendix.OracleGoldenGate.Troubleshooting"></a>

本節說明使用 Oracle GoldenGate 搭配 Amazon RDS for Oracle 時最常見的問題。

**Topics**
+ [開啟線上重做日誌時發生錯誤](#Appendix.OracleGoldenGate.Troubleshooting.Logs)
+ [Oracle GoldenGate 設定似乎正確，但複寫無法運作](#Appendix.OracleGoldenGate.Troubleshooting.Replication)
+ [由於 SYS."\$1DBA\$1APPLY\$1CDR\$1INFO" 上的查詢，整合式 REPLICAT 執行緩慢。](#Appendix.OracleGoldenGate.IR)

## 開啟線上重做日誌時發生錯誤
<a name="Appendix.OracleGoldenGate.Troubleshooting.Logs"></a>

確定您己將資料庫設定為保留封存的重做日誌。請考量下列準則：
+ 指定記錄保留的持續時間 (以小時為單位)。最小值為一小時 。
+ 將持續時間設定為超過來源資料庫執行個體的任何潛在停機時間、通訊的任何潛在期間，以及來源資料庫執行個體聯網問題的任何潛在期間。此持續時間可讓 Oracle GoldenGate 視需要從來源資料庫執行個體復原日誌。
+ 請確定執行個體有足夠的儲存空間可存放這些檔案。

如果未啟用日誌保留，或如果保留值太小，您會收到如下訊息：

```
2022-03-06 06:17:27  ERROR   OGG-00446  error 2 (No such file or directory) 
opening redo log /rdsdbdata/db/GGTEST3_A/onlinelog/o1_mf_2_9k4bp1n6_.log for sequence 1306 
Not able to establish initial position for begin time 2022-03-06 06:16:55.
```

## Oracle GoldenGate 設定似乎正確，但複寫無法運作
<a name="Appendix.OracleGoldenGate.Troubleshooting.Replication"></a>

針對既有的資料表，您必須指定 Oracle GoldenGate 從中運作的 SCN。

**修正此問題**

1. 登入來源資料庫，然後啟動 Oracle GoldenGate 命令列界面 (`ggsci`)。以下範例會顯示登入的格式。

   ```
   dblogin userid oggadm1@OGGSOURCE
   ```

1. 使用 `ggsci` 命令列，設定 `EXTRACT` 程序的起始 SCN。下列範例將 `EXTRACT` 的 SCN 設為 223274。

   ```
   ALTER EXTRACT EABC SCN 223274
   start EABC
   ```

1. 登入目標資料庫。以下範例會顯示登入的格式。

   ```
   dblogin userid oggadm1@OGGTARGET
   ```

1. 使用 `ggsci` 命令列，設定 `REPLICAT` 程序的起始 SCN。下列範例將 `REPLICAT` 的 SCN 設為 223274。

   ```
   start RABC atcsn 223274
   ```

## 由於 SYS."\$1DBA\$1APPLY\$1CDR\$1INFO" 上的查詢，整合式 REPLICAT 執行緩慢。
<a name="Appendix.OracleGoldenGate.IR"></a>

Oracle GoldenGate 衝突偵測與解決方案 (CDR) 提供了基本的衝突解決常式。例如，CDR 可以解決 `INSERT` 陳述式的唯一衝突。

當 CDR 解決碰撞時，它可以暫時地將記錄插入到例外資料表 `_DBA_APPLY_CDR_INFO`。整合的 `REPLICAT` 稍後會刪除這些記錄。在極少數情況下，整合的 `REPLICAT` 可以處理大量的碰撞，但新的整合 `REPLICAT` 不會取代它。不是被刪除，而是 `_DBA_APPLY_CDR_INFO` 中的現有資料列是孤立的。任何新的整合 `REPLICAT` 程序都會變慢，因為它們正在查詢 `_DBA_APPLY_CDR_INFO` 中的孤立資料列。

若要從 `_DBA_APPLY_CDR_INFO` 中移除所有資料列，請使用 Amazon RDS 程序 `rdsadmin.rdsadmin_util.truncate_apply$_cdr_info`。此程序是作為 2020 年 10 月發行版本和修補程式更新的一部分發行。此程序可在下列資料庫版本中提供：
+ [ 版本 21.0.0.0.ru-2022-01.rur-2022-01.r1](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-21-0.html#oracle-version-RU-RUR.21.0.0.0.ru-2022-01.rur-2022-01.r1) 和更新版本
+ [ 版本 19.0.0.0.ru-2020-10.rur-2020-10.r1](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html#oracle-version-RU-RUR.19.0.0.0.ru-2020-10.rur-2020-10.r1) 和更新版本

下列範例會截斷資料表 `_DBA_APPLY_CDR_INFO`。

```
SET SERVEROUTPUT ON SIZE 2000
EXEC rdsadmin.rdsadmin_util.truncate_apply$_cdr_info;
```

# 在 RDS for Oracle 上使用 Oracle Repository Creation Utility
<a name="Oracle.Resources.RCU"></a>

您可以使用 Amazon RDS 來託管保存結構描述的 RDS for Oracle 資料庫執行個體，以支援您的 Oracle Fusion Middleware 元件。您需在資料庫中為它們建立和填入結構描述，才可以使用 Fusion Middleware 元件。您可以使用 Oracle Repository Creation Utility (RCU) 來建立和填入結構描述。

## RCU 支援的版本和授權選項
<a name="Oracle.Resources.RCU.Versions"></a>

Amazon RDS 僅支援 Oracle Repository Creation Utility (RCU) 版本 12c。您可以在下列組態中使用 RCU：
+ RCU 12c 搭配 Oracle 資料庫 21c
+ RCU 12c 搭配 Oracle 資料庫 19c

在您可以使用 RCU 之前，請確認執行下列作業：
+ 取得 Oracle Fusion Middleware 的授權。
+ 遵循託管儲存庫之 Oracle 資料庫的 Oracle 授權準則。如需詳細資訊，請參閱 Oracle 文件中的 [Oracle Fusion Middleware 授權資訊使用者手冊](https://docs.oracle.com/en/middleware/fusion-middleware/fmwlc/)。

Fusion MiddleWare 支援採用 Oracle Database Enterprise Edition 和 Standard Edition 2 的儲存庫。Oracle 建議將 Enterprise Edition 用於需要分割的生產安裝，和需要重新建置線上索引的安裝。

建立 RDS for Oracle 執行個體之前，請確認您需要的 Oracle 資料庫版本可支援您想要部署的元件。若要尋找您想要部署的 Fusion Middleware 元件和版本的需求，請使用認證矩陣。如需詳細資訊，請參閱 Oracle 文件中的 [Oracle Fusion Middleware 支援的系統組態](http://www.oracle.com/technetwork/middleware/ias/downloads/fusion-certification-100350.html)。

Amazon RDS 可視需要支援 Oracle 資料庫版本升級。如需詳細資訊，請參閱[升級資料庫執行個體 引擎版本](USER_UpgradeDBInstance.Upgrading.md)。

## RCU 的要求與限制
<a name="Oracle.Resources.RCU.BeforeYouBegin"></a>

若要使用 RCU，您需要 Amazon VPC。Amazon RDS 資料庫執行個體必須只供 Fusion Middleware 元件使用，且不得對公有網際網路公開。因此，請在私有子網路上託管 Amazon RDS 資料庫執行個體，藉此提高安全性。您也需要 RDS for Oracle 資料庫執行個體。如需詳細資訊，請參閱[建立並連線至 Oracle 資料庫執行個體](CHAP_GettingStarted.CreatingConnecting.Oracle.md)。

您可以在 Amazon RDS 資料庫執行個體中為任何 Fusion Middleware 元件存放結構描述。下列是已驗證可正確安裝的結構描述：
+ Analytics (ACTIVITIES)
+ Audit Services (IAU)
+ Audit Services Append (IAU\$1APPEND)
+ Audit Services Viewer (IAU\$1VIEWER)
+ Discussions (DISCUSSIONS)
+ Metadata Services (MDS)
+ Oracle Business Intelligence (BIPLATFORM)
+ Oracle Platform Security Services (OPSS)
+ Portal and Services (WEBCENTER)
+ Portlet Producers (PORTLET)
+ Service Table (STB)
+ SOA Infrastructure (SOAINFRA)
+ User Messaging Service (UCSUMS)
+ WebLogic Services (WLS)

## 使用 RCU 的指導方針
<a name="Oracle.Resources.RCU.Recommendations"></a>

下列是在此案例中搭配使用資料庫執行個體的一些建議：
+ 對於生產工作負載，建議使用多個可用區。如需有關使用多個可用區域的詳細資訊，請參閱[區域、可用區域和 Local Zones](Concepts.RegionsAndAvailabilityZones.md)。
+ 若要獲得額外的安全性，Oracle 建議您使用透明資料加密 (TDE) 來靜態加密您的資料。如果您有包含進階安全性選項的 Enterprise Edition 授權，則可以透過使用 TDE 選項來啟用靜態加密。如需更多詳細資訊，請參閱 [Oracle 透明資料加密](Appendix.Oracle.Options.AdvSecurity.md)。

  Amazon RDS 也為所有資料庫版本提供靜態加密選項。如需更多詳細資訊，請參閱 [加密 Amazon RDS 資源](Overview.Encryption.md)。
+ 設定 VPC 安全群組，以允許應用程式伺服器和 Amazon RDS 資料庫執行個體之間的通訊。託管 Fusion Middleware 元件的應用程式伺服器可以採用 Amazon EC2 或現場部署。

## 執行 RCU
<a name="Oracle.Resources.RCU.Installing"></a>

若要建立和填入結構描述以支援 Fusion Middleware 元件，請使用 Oracle Repository Creation Utility (RCU)。您能以不同方式執行 RCU。

**Topics**
+ [使用命令列以一個步驟執行 RCU](#Oracle.Resources.RCU.SilentSingle)
+ [使用命令列以多個步驟執行 RCU](#Oracle.Resources.RCU.SilentMulti)
+ [在互動式模式中執行 RCU](#Oracle.Resources.RCU.Interactive)

### 使用命令列以一個步驟執行 RCU
<a name="Oracle.Resources.RCU.SilentSingle"></a>

如果不需要在填入您的任何結構描述之前加以編輯，您可以透過單一步驟執行 RCU。否則，請查看用於以多個步驟執行 RCU 的下列小節。

您可以使用命令列參數 `-silent` 在靜音模式中執行 RCU。在靜音模式中執行 RCU 時，您可以透過建立包含密碼的文字檔案，避免在命令列上輸入密碼。建立一個文字檔案，將 `dbUser` 的密碼放在第一行，以及將每個元件的密碼放在後續的行上。您可以指定密碼檔案的名稱做為對 RCU 命令的最後一個參數。

**Example**  
下列範例會在單一步驟中建立和填入 SOA Infrastructure 元件 (及其相依性) 的結構描述。  
針對 Linux、macOS 或 Unix：  

```
export ORACLE_HOME=/u01/app/oracle/product/12.2.1.0/fmw
export JAVA_HOME=/usr/java/jdk1.8.0_65
${ORACLE_HOME}/oracle_common/bin/rcu \
-silent \
-createRepository \
-connectString ${dbhost}:${dbport}:${dbname} \
-dbUser ${dbuser} \
-dbRole Normal \
-honorOMF \
-schemaPrefix ${SCHEMA_PREFIX} \
-component MDS \
-component STB \
-component OPSS \
-component IAU \
-component IAU_APPEND \
-component IAU_VIEWER \
-component UCSUMS \
-component WLS \
-component SOAINFRA \
-f < /tmp/passwordfile.txt
```

如需詳細資訊，請參閱 Oracle 文件中的[透過命令列執行 Repository Creation Utility](https://docs.oracle.com/middleware/1221/core/RCUUG/GUID-0D3A2959-7CC8-4001-997E-718ADF04C5F2.htm#RCUUG248)。

### 使用命令列以多個步驟執行 RCU
<a name="Oracle.Resources.RCU.SilentMulti"></a>

若要手動編輯結構描述指令碼，可透過多個步驟執行 RCU：

1. 使用 `-generateScript` 命令列參數來為您的結構描述建立指令碼，在 **Prepare Scripts for System Load (針對系統負載準備指令碼)** 模式中執行 RCU。

1. 手動編輯並執行產生的指令碼 `script_systemLoad.sql`。

1. 使用 `-dataLoad` 命令列參數來填入結構描述，再次於 **Perform Product Load (執行產品負載)** 模式中執行 RCU。

1. 執行產生的清除指令碼 `script_postDataLoad.sql`。

若要在無提示模式中執行 RCU，請指定命令列參數 `-silent`。在靜音模式中執行 RCU 時，您可以透過建立包含密碼的文字檔案，避免在命令列上輸入密碼。建立一個文字檔案，將 `dbUser` 的密碼放在第一行，以及將每個元件的密碼放在後續的行上。指定密碼檔案的名稱做為傳至 RCU 命令的最後一個參數。

**Example**  
下列範例會建立 SOA Infrastructure 元件及其相依性的結構描述指令碼。  
針對 Linux、macOS 或 Unix：  

```
export ORACLE_HOME=/u01/app/oracle/product/12.2.1.0/fmw
export JAVA_HOME=/usr/java/jdk1.8.0_65
${ORACLE_HOME}/oracle_common/bin/rcu \
-silent \
-generateScript \
-connectString ${dbhost}:${dbport}:${dbname} \
-dbUser ${dbuser} \
-dbRole Normal \
-honorOMF \
[-encryptTablespace true] \
-schemaPrefix ${SCHEMA_PREFIX} \
-component MDS \
-component STB \
-component OPSS \
-component IAU \
-component IAU_APPEND \
-component IAU_VIEWER \
-component UCSUMS \
-component WLS \
-component SOAINFRA \
-scriptLocation /tmp/rcuscripts \
-f < /tmp/passwordfile.txt
```
現在您可以編輯產生的指令碼，請連接至您的 Oracle 資料庫執行個體，並執行指令碼。產生的指令碼名為 `script_systemLoad.sql`。如需連接至 Oracle 資料庫執行個體的詳細資訊，請參閱 [步驟 3：將您的 SQL 連線至 Oracle 資料庫執行個體](CHAP_GettingStarted.CreatingConnecting.Oracle.md#CHAP_GettingStarted.Connecting.Oracle)。  
下列範例會填入 SOA Infrastructure 元件 (及其相依性) 的結構描述。  
針對 Linux、macOS 或 Unix：  

```
export JAVA_HOME=/usr/java/jdk1.8.0_65
${ORACLE_HOME}/oracle_common/bin/rcu \
-silent \
-dataLoad \
-connectString ${dbhost}:${dbport}:${dbname} \
-dbUser ${dbuser} \
-dbRole Normal \
-honorOMF \
-schemaPrefix ${SCHEMA_PREFIX} \
-component MDS \
-component STB \
-component OPSS \
-component IAU \
-component IAU_APPEND \
-component IAU_VIEWER \
-component UCSUMS \
-component WLS \
-component SOAINFRA \
-f < /tmp/passwordfile.txt
```
若要完成，您可以連接至 Oracle 資料庫執行個體，並執行清除指令碼。指令碼名為 `script_postDataLoad.sql`。

如需更多詳細資訊，請參閱 Oracle 文件中的[透過命令列執行 Repository Creation Utility](https://docs.oracle.com/middleware/1221/core/RCUUG/GUID-0D3A2959-7CC8-4001-997E-718ADF04C5F2.htm#RCUUG248)。

### 在互動式模式中執行 RCU
<a name="Oracle.Resources.RCU.Interactive"></a>

若要使用 RCU 圖形使用者界面，請在互動式模式中執行 RCU。包括 `-interactive` 參數並省略 `-silent` 參數。如需詳細資訊，請參閱 Oracle 文件中的[了解 Repository Creation Utility 畫面](https://docs.oracle.com/middleware/1213/core/RCUUG/rcu_screens.htm#RCUUG143)。

**Example**  
下列範例會在互動式模式中啟動 RCU 並預先填入連接資訊。  
針對 Linux、macOS 或 Unix：  

```
export ORACLE_HOME=/u01/app/oracle/product/12.2.1.0/fmw
export JAVA_HOME=/usr/java/jdk1.8.0_65
${ORACLE_HOME}/oracle_common/bin/rcu \
-interactive \
-createRepository \
-connectString ${dbhost}:${dbport}:${dbname} \
-dbUser ${dbuser} \
-dbRole Normal
```

## RCU 疑難排解
<a name="Oracle.Resources.RCU.KnownIssues"></a>

請注意以下問題。

**Topics**
+ [Oracle Managed Files (OMF)](#Oracle.Resources.RCU.KnownIssues.OMF)
+ [物件權限](#Oracle.Resources.RCU.KnownIssues.object-privs)
+ [Enterprise Scheduler Service](#Oracle.Resources.RCU.KnownIssues.Scheduler)

### Oracle Managed Files (OMF)
<a name="Oracle.Resources.RCU.KnownIssues.OMF"></a>

 Amazon RDS 會使用 OMF 資料檔案來簡化儲存體管理作業。您可以自訂資料表空間屬性，例如大小和程度管理。不過，如果您在執行 RCU 時指定資料檔案名稱，則資料表空間代碼會失敗，出現 `ORA-20900`。您可以下列方式，RCU 與 OMF 搭配使用：
+ 在 RCU 12.2.1.0 和更新版本中，使用 `-honorOMF` 命令列參數。
+ 在 RCU 12.1.0.3 和更新版本中，使用多個步驟並編輯產生的指令碼。如需詳細資訊，請參閱[使用命令列以多個步驟執行 RCU](#Oracle.Resources.RCU.SilentMulti)。

### 物件權限
<a name="Oracle.Resources.RCU.KnownIssues.object-privs"></a>

因為 Amazon RDS 屬於受管服務，所以您不具備 RDS for Oracle 資料庫執行個體的完整 `SYSDBA` 存取權。不過，RCU 12c 支援權限較低的使用者。在多數情況下，要建立儲存庫，主要使用者權限即已足夠。

主要帳戶可以直接授與已授與的權限 `WITH GRANT OPTION`。在某些情況下，當您嘗試授與 `SYS` 物件權限時，RCU 可能失敗，出現 `ORA-01031`。您可以重試並執行 `rdsadmin_util.grant_sys_object` 儲存的程序，如下列範例所示：

```
BEGIN
  rdsadmin.rdsadmin_util.grant_sys_object('GV_$SESSION','MY_DBA','SELECT');
END;
/
```

如果您嘗試授與 `SCHEMA_VERSION_REGISTRY` 物件的權限 `SYS`，操作可能會失敗，出現 `ORA-20199: Error in rdsadmin_util.grant_sys_object`。您可以限定資料表 `SCHEMA_VERSION_REGISTRY$` 和檢視 `SCHEMA_VERSION_REGISTRY` 結構描述擁有者的名稱，也就是 `SYSTEM`，然後重試該作業。或者，您可以建立同義字。以主要使用者身分登入，然後執行下列陳述式：

```
CREATE OR REPLACE VIEW SYSTEM.SCHEMA_VERSION_REGISTRY 
  AS SELECT * FROM SYSTEM.SCHEMA_VERSION_REGISTRY$;
CREATE OR REPLACE PUBLIC SYNONYM SCHEMA_VERSION_REGISTRY FOR SYSTEM.SCHEMA_VERSION_REGISTRY;
CREATE OR REPLACE PUBLIC SYNONYM SCHEMA_VERSION_REGISTRY$ FOR SCHEMA_VERSION_REGISTRY;
```

### Enterprise Scheduler Service
<a name="Oracle.Resources.RCU.KnownIssues.Scheduler"></a>

使用 RCU 卸除 Enterprise Scheduler Service 儲存庫時，RCU 可能會失敗並出現 `Error: Component drop check failed`。

# 在 Amazon EC2 執行個體上設定 Oracle Connection Manager
<a name="oracle-cman"></a>

Oracle Connection Manager (CMAN) 是代理伺服器，可將連線請求轉送到資料庫伺服器或其他代理伺服器。您也可以使用以下參數來設定 CMAN：

存取控制  
您可以建立規則來篩選掉使用者指定的用戶端請求並接受其他請求。

工作階段多工  
您可以透過一個網路連線將多個用戶端工作階段連線傳輸到共用伺服器目標。

通常 CMAN 位於獨立於資料庫伺服器和用戶端主機的主機上。如需詳細資訊，請參閱 Oracle 資料庫說明文件中的[設定 Oracle Connection Manager](https://docs.oracle.com/en/database/oracle/oracle-database/19/netag/configuring-oracle-connection-manager.html#GUID-AF8A511E-9AE6-4F4D-8E58-F28BC53F64E4)。

**Topics**
+ [CMAN 支援的版本和授權選項](#oracle-cman.Versions)
+ [CMAN 的要求與限制](#oracle-cman.requirements)
+ [設定 CMAN](#oracle-cman.configuring-cman)

## CMAN 支援的版本和授權選項
<a name="oracle-cman.Versions"></a>

CMAN 支援 Amazon RDS 所支援的全部版本 Oracle 資料庫企業版。如需詳細資訊，請參閱[RDS for Oracle 版本](Oracle.Concepts.database-versions.md)。

您可以將 Oracle Connection Manager 安裝在與安裝了 Oracle 資料庫的主機不同的主機上。執行 CMAN 的主機不需要單獨的授權。

## CMAN 的要求與限制
<a name="oracle-cman.requirements"></a>

為了提供全受管體驗，Amazon RDS 限制作業系統的存取權。您無法修改需要作業系統存取權的資料庫參數。因此，Amazon RDS 不支援要求登入作業系統的 CMAN 功能。

## 設定 CMAN
<a name="oracle-cman.configuring-cman"></a>

設定 CMAN 時，可以在 RDS for Oracle 資料庫之外執行大部分工作。

**Topics**
+ [步驟 1：在與 RDS for Oracle 執行個體相同 VPC 中的 Amazon EC2 執行個體上設定 CMAN](#oracle-cman.configuring-cman.vpc)
+ [步驟 2：設定 CMAN 的資料庫參數](#oracle-cman.configuring-cman.parameters)
+ [步驟 3：為參數群組與您的資料庫執行個體建立關聯。](#oracle-cman.configuring-cman.parameter-group)

### 步驟 1：在與 RDS for Oracle 執行個體相同 VPC 中的 Amazon EC2 執行個體上設定 CMAN
<a name="oracle-cman.configuring-cman.vpc"></a>

若要了解如何設定 CMAN，請按照部落格文章[在 Amazon EC2 for Amazon RDS for Oracle 上設定和使用 Oracle Connection Manager](https://aws.amazon.com/blogs/database/configuring-and-using-oracle-connection-manager-on-amazon-ec2-for-amazon-rds-for-oracle/) 中的詳細說明操作。

### 步驟 2：設定 CMAN 的資料庫參數
<a name="oracle-cman.configuring-cman.parameters"></a>

若使用 Traffic Director Mode 和工作階段多工等 CMAN 功能，請將 `REMOTE_LISTENER` 參數設為資料庫參數群組中 CMAN 執行個體的地址。請考量下列情況：
+ CMAN 執行個體位於 IP 地址為 `10.0.159.100` 並使用連接埠 `1521` 的主機上。
+ 資料庫 `orcla`、`orclb` 以及 `orclc` 位於獨立的 RDS for Oracle 資料庫執行個體上。

下表顯示如何設定 `REMOTE_LISTENER` 值。`LOCAL_LISTENER` 值由 Amazon RDS 自動設定。


| 資料庫執行個體名稱 | 資料庫執行個體 IP | 本機監聽器值 (自動設定) | 遠端監聽器值 (由使用者設定) | 
| --- | --- | --- | --- | 
| orcla | 10.0.159.200 |  <pre>( address=<br />  (protocol=tcp)<br />  (host=10.0.159.200)<br />  (port=1521)<br />)</pre>  | 10.0.159.100:1521 | 
| orclb | 10.0.159.300 |  <pre>( address=<br />  (protocol=tcp)<br />  (host=10.0.159.300)<br />  (port=1521)<br />)</pre>  | 10.0.159.100:1521 | 
| orclc | 10.0.159.400 |  <pre>( address=<br />  (protocol=tcp)<br />  (host=10.0.159.400)<br />  (port=1521)<br />)</pre>  | 10.0.159.100:1521 | 

### 步驟 3：為參數群組與您的資料庫執行個體建立關聯。
<a name="oracle-cman.configuring-cman.parameter-group"></a>

建立或修改資料庫執行個體以使用您在 [步驟 2：設定 CMAN 的資料庫參數](#oracle-cman.configuring-cman.parameters) 中設定的參數群組。如需詳細資訊，請參閱[將資料庫參數群組與 Amazon RDS 中的資料庫執行個體建立關聯](USER_WorkingWithParamGroups.Associating.md)。

# 在 Amazon RDS 上的 Oracle 上安裝 Siebel 資料庫
<a name="Oracle.Resources.Siebel"></a>

您可以使用 Amazon RDS 來託管 Oracle 資料庫執行個體上的 Siebel 資料庫。Siebel 資料庫是 Siebel Customer Relationship Management (CRM) 應用程式架構的一部分。如需說明，請參閱 [Siebel 商業應用程式的一般架構](https://docs.oracle.com/cd/E63029_01/books/PerformTun/performtun_archinfra.htm#i1043361)。

使用下列主題可協助您在 Amazon RDS 上的 Oracle 資料庫執行個體上設定 Siebel 資料庫。您也可以了解如何使用 Amazon Web Services，支援 Siebel CRM 應用程式架構所需的其他元件。

**注意**  
若要在 Amazon RDS 上的 Oracle 上安裝 Siebel 資料庫，您需要使用主要使用者帳戶。您不需要 `SYSDBA` 權限，主要使用者權限就足夠了。如需更多詳細資訊，請參閱 [主要使用者帳戶權限](UsingWithRDS.MasterAccounts.md)。

## 授權和版本
<a name="Oracle.Resources.Siebel.Versions"></a>

若要在 Amazon RDS 上安裝 Siebel 資料庫，您必須使用自己的 Oracle 資料庫授權，以及自己的 Siebel 授權。您必須對資料庫執行個體類別和 Oracle 資料庫版本具有適當的 Oracle 資料庫授權 (含軟體更新授權和支援)。如需更多詳細資訊，請參閱 [RDS for Oracle 授權選項](Oracle.Concepts.Licensing.md)。

在此案例中，Oracle Database Enterprise Edition 是獲得 Siebel 認證的唯一版本。Amazon RDS 支援 Siebel CRM 版本 15.0 或 16.0。

Amazon RDS 支援資料庫版本升級。如需更多詳細資訊，請參閱 [升級資料庫執行個體 引擎版本](USER_UpgradeDBInstance.Upgrading.md)。

## 開始之前
<a name="Oracle.Resources.Siebel.BeforeYouBegin"></a>

開始之前，您需要 Amazon VPC。由於 Amazon RDS 資料庫執行個體僅需供 Siebel Enterprise Server 使用，而不用公開至公有網際網路，因此系統會在更安全的私有子網路中託管 Amazon RDS 資料庫執行個體。如需如何建立 Amazon VPC 以搭配 Siebel CRM 使用的相關資訊，請參閱[建立並連線至 Oracle 資料庫執行個體](CHAP_GettingStarted.CreatingConnecting.Oracle.md)。

開始之前，您也需要 Oracle 資料庫執行個體。如需建立要與 Siebel CRM 搭配使用之 Oracle 資料庫執行個體的相關資訊，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。

## 安裝並設定 Siebel 資料庫
<a name="Oracle.Resources.Siebel.Database.Siebel"></a>

在建立 Oracle 資料庫執行個體之後，您可以安裝 Siebel 資料庫。安裝資料庫的方式為建立資料表擁有者和管理員帳戶、安裝預存程序和函數，然後執行 Siebel 資料庫設定精靈。如需詳細資訊，請參閱[在 RDBMS 上安裝 Siebel 資料庫](https://docs.oracle.com/cd/E63029_01/books/SiebInstWIN/SiebInstCOM_ConfigDB.html)。

若要執行 Siebel 資料庫設定精靈，您需要使用主要使用者帳戶。您不需要 `SYSDBA` 權限，主要使用者權限就足夠了。如需更多詳細資訊，請參閱 [主要使用者帳戶權限](UsingWithRDS.MasterAccounts.md)。

## 將其他 Amazon RDS 功能與 Siebel 資料庫搭配使用
<a name="Oracle.Resources.Siebel.Miscellaneous"></a>

在建立 Oracle 資料庫執行個體之後，您可以使用其他的 Amazon RDS 功能，來協助您自訂 Siebel 資料庫。

### 利用 Oracle Statspack 選項收集統計資料
<a name="Oracle.Resources.Siebel.Options"></a>

您可以透過使用資料庫選項群組中的選項，將功能新增至資料庫執行個體。當您建立了 Oracle 資料庫執行個體時，表示您已使用預設資料庫選項群組。如果您想要將功能新增至資料庫，您可以針對資料庫執行個體建立新的選項群組。

如果想要在 Siebel 資料庫上收集效能統計資料，您可以新增 Oracle Statspack 功能。如需更多詳細資訊，請參閱 [Oracle Statspack](Appendix.Oracle.Options.Statspack.md)。

有些選項變更會立即套用，而有些選項變更則會在資料庫執行個體的下一次維護時段套用。如需更多詳細資訊，請參閱 [使用選項群組](USER_WorkingWithOptionGroups.md)。在建立自訂的選項群組之後，請修改您的資料庫執行個體以連接它。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

### 使用參數調校效能
<a name="Oracle.Resources.Siebel.Parameters"></a>

您可以透過使用資料庫參數群組中的參數，管理資料庫引擎組態。當您建立了 Oracle 資料庫執行個體時，表示您已使用預設資料庫參數群組。如果您想要自訂資料庫組態，您可以針對資料庫執行個體建立新的參數群組。

當您根據參數類型變更參數時，變更會立即套用，或在您手動重新啟動資料庫執行個體之後套用。如需更多詳細資訊，請參閱 [Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。在建立自訂的參數群組之後，請修改您的資料庫執行個體以連接它。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

若要針對 Siebel CRM 最佳化您的 Oracle，您可以自訂特定參數。下表顯示一些建議的參數設定。如需調整 Siebel CRM 效能的詳細資訊，請參閱 [Siebel CRM Performance Tuning Guide (Siebel CRM 效能調校指南)](https://docs.oracle.com/cd/E63029_01/books/PerformTun/toc.htm)。


****  

| 參數名稱 | 預設值 | 最佳 Siebel CRM 效能的指導 | 
| --- | --- | --- | 
| \$1always\$1semi\$1join | `CHOOSE` | `OFF`  | 
| \$1b\$1tree\$1bitmap\$1plans | `TRUE` | `FALSE`  | 
| \$1like\$1with\$1bind\$1as\$1equality | `FALSE` | `TRUE`  | 
| \$1no\$1or\$1expansion | `FALSE` | `FALSE`  | 
| \$1optimizer\$1join\$1sel\$1sanity\$1check | `TRUE` | `TRUE`  | 
| \$1optimizer\$1max\$1permutations | 2000 | 100  | 
| \$1optimizer\$1sortmerge\$1join\$1enabled | `TRUE` | `FALSE`  | 
| \$1partition\$1view\$1enabled | `TRUE` | `FALSE`  | 
| open\$1cursors | `300` | 至少要 **2000**。  | 

### 建立快照
<a name="Oracle.Resources.Siebel.Snapshots"></a>

在建立 Siebel 資料庫之後，您可以使用 Amazon RDS 的快照功能來複製資料庫。如需更多詳細資訊，請參閱 [為 Amazon RDS 的單一可用區域資料庫執行個體建立資料庫快照](USER_CreateSnapshot.md) 及 [還原至資料庫執行個體](USER_RestoreFromSnapshot.md)。

## 支援其他 Siebel CRM 元件
<a name="Oracle.Resources.Siebel.OtherComponents"></a>

除了 Siebel 資料庫外，您也可以使用 Amazon Web Services 來支援 Siebel CRM 應用程式架構的其他元件。您可以在下表中找到 Amazon AWS 針對其他 Siebel CRM 元件所提供之支援的詳細資訊。


****  

| Siebel CRM 元件 | Amazon AWS Support | 
| --- | --- | 
| Siebel Enterprise(含一部或多部 Siebel 伺服器) |  您能夠在 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上託管 Siebel 伺服器。您可以使用 Amazon EC2，按您的需要啟動任意數量的虛擬伺服器。使用 Amazon EC2，您可以輕鬆地擴展或縮減，以處理需求中的變更。如需詳細資訊，請參閱[什麼是 Amazon EC2？](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html)  您可以將伺服器與資料庫執行個體放在同一個 VPC 中，並使用 VPC 安全群組來存取資料庫。如需更多詳細資訊，請參閱 [在 VPC 中使用資料庫執行個體](USER_VPC.WorkingWithRDSInstanceinaVPC.md)。  | 
| Web 伺服器(含 Siebel Web 伺服器擴充套件) |  您可以在多個 EC2 執行個體上安裝多部 Web 伺服器。然後，您可以使用 Elastic Load Balancing，將傳入流量分散至各個執行個體。如需詳細資訊，請參閱[什麼是 Elastic Load Balancing？](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/elastic-load-balancing.html)   | 
| Siebel Gateway Name Server |  您可以在 EC2 執行個體上託管 Siebel Gateway Name Server。然後，您可以將伺服器與資料庫執行個體放在同一個 VPC 中，並使用 VPC 安全群組來存取資料庫。如需更多詳細資訊，請參閱 [在 VPC 中使用資料庫執行個體](USER_VPC.WorkingWithRDSInstanceinaVPC.md)。  | 

# Oracle Database 引擎版本備註
<a name="USER_Oracle_Releases"></a>

可讓您的 Amazon RDS for Oracle 資料庫執行個體保持最新的更新項目。如果您套用更新，便可以確信您的資料庫執行個體執行的是經過 Oracle 與 Amazon 測試的資料庫軟體。我們不支援對個別 RDS for Oracle 資料庫執行個體套用一次性修補程式。

建立新的資料庫執行個體時，您可以指定使用目前支援的任何 Oracle Database 版本。您可以指定主要版本 (例如，Oracle Database 19c 版本)，以及特定主要版本支援的任何次要版本。若未指定版本，Amazon RDS 會預設使用支援的版本，通常是最新版本。若已指定主要版本，但未指定次要版本，Amazon RDS 預設會使用您指定之主要版本的最新發行版本。如需查看支援版本清單和新建資料庫執行個體的預設值，請使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) AWS CLI 命令。

如需有關 Amazon RDS 支援的 Oracle Database 版本的詳細內容，請參閱 [https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/Welcome.html](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/Welcome.html)。