

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

# 在 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`。