

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

# 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;
```