

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

# 將 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)。  | 