Oracle GoldenGate のトラブルシューティング - Amazon Relational Database Service

Oracle GoldenGate のトラブルシューティング

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

オンライン REDO ログを開くときにエラーが発生しました

アーカイブされた 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 は適切に設定されているようだが、レプリケーションが機能していない

既存のテーブルについては、Oracle GoldenGate の動作元の SCN を指定する必要があります。

この問題を修正するには
  1. ソースデータベースにログインし、Oracle GoldenGate コマンドラインインターフェイス (ggsci) を起動します。次の例は、ログインの形式を示しています。

    dblogin userid oggadm1@OGGSOURCE
  2. ggsci コマンドラインを使用して、EXTRACT プロセスのスタート SCN を設定します。次の例では、EXTRACT の SCN を 223274 に設定しています。

    ALTER EXTRACT EABC SCN 223274 start EABC
  3. ターゲットデータベースにログインします。次の例は、ログインの形式を示しています。

    dblogin userid oggadm1@OGGTARGET
  4. ggsci コマンドラインを使用して、REPLICAT プロセスのスタート SCN を設定します。次の例では、REPLICAT の SCN を 223274 に設定しています。

    start RABC atcsn 223274

SYS."_DBA_APPLY_CDR_INFO" に対するクエリが原因で、統合 REPLICAT が遅い

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 月のリリースおよびパッチアップデートの一部としてリリースされます。この手順は、次のデータベースバージョンで使用できます。

次の例では、テーブル _DBA_APPLY_CDR_INFO を切り捨てます。

SET SERVEROUTPUT ON SIZE 2000 EXEC rdsadmin.rdsadmin_util.truncate_apply$_cdr_info;