

# Oracle GoldenGate のトラブルシューティング
<a name="Appendix.OracleGoldenGate.Troubleshooting"></a>

このセクションでは、Amazon RDS for Oracle で Oracle GoldenGate を使用する場合に発生する最も一般的な問題について説明します。

**Topics**
+ [オンライン REDO ログを開くときにエラーが発生しました](#Appendix.OracleGoldenGate.Troubleshooting.Logs)
+ [Oracle GoldenGate は適切に設定されているようだが、レプリケーションが機能していない](#Appendix.OracleGoldenGate.Troubleshooting.Replication)
+ [SYS."\$1DBA\$1APPLY\$1CDR\$1INFO" に対するクエリが原因で、統合 REPLICAT が遅い](#Appendix.OracleGoldenGate.IR)

## オンライン REDO ログを開くときにエラーが発生しました
<a name="Appendix.OracleGoldenGate.Troubleshooting.Logs"></a>

アーカイブされた REDO ログを保持するようにデータベースを設定していることを確認してください。以下のガイドラインを検討します。
+ ログの保持期間を時間単位で指定します。最小値は 1 時間です。
+ この期間は、ソースインスタンスの潜在的なダウンタイム、潜在的な通信期間、ソースインスタンスのネットワーク問題の潜在的な期間を超えるように設定します。このような期間により、Oracle GoldenGate は必要に応じてソース DB インスタンスからログを復元できます。
+ ファイル用の十分なストレージがインスタンスにあることを確認します。

ログの保持を有効にしていない場合や、保持の値が小さすぎる場合、次のようなエラーメッセージが表示されます。

```
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` にレコードを挿入できます。Integrated `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;
```