Oracle GoldenGate の日常運用と障害シナリオ (Microservices 21c / 23ai)
Oracleレベル: 上級所要時間: 5 分 (確認) – 2 時間 (アップグレード、表の追加)構築済みの GoldenGate Microservices レプリケーションの日常運用と障害リカバリの runbook です (構築には GoldenGate 構築ガイドを使用します)。何をすべきか確信がない場合は「ヘルスとラグの確認」から始めてください。読取り専用の診断で適切なシナリオに誘導されます — Extract と Replicat の ABEND (レポート、discard、OGG-xxxxx エラー)、データが入っている表のレプリケーションへの追加 (一貫性のある SCN + AFTERCSN)、表の除外、単一表の再同期、trail の削除 (Purge Trail)、SCN からの Extract の再配置、バージョン・アップグレード/パッチ、ソースでの Data Guard switchover/failover 後の Extract の継続。各シナリオは 診断 → セーフティネット → 実施 → 検証 の構成です。
構成: ソース・サーバー (ソース deployment、Integrated Extract、Distribution Path) + ターゲット・サーバー (ターゲット deployment、Parallel Replicat)
シナリオ
- ヘルスとラグの確認 (すべて正常か) — 読取り専用です。Service Manager とマイクロサービス、INFO ALL、ラグ、STATS、ハートビートのラグ、データベース側の capture の状態、ggserr.log を確認します。何も変更しません。何をすべきか確信がない場合はここから始めてください。
- Extract ABENDED (エラーで停止) — ソースの Extract が ABENDED になっている、または再起動を繰り返しています。レポート・ファイルの OGG-xxxxx エラーから原因 (接続、アーカイブ・ログの欠落、ログ・マイニング、権限、ディスク) を特定して解消し、Extract を停止した位置から再開します。ソース・データベースへの影響はありませんが、ラグがたまります。
- Replicat ABENDED (ターゲットに適用できない) — ターゲットの Replicat がトランザクションを適用できませんでした。レポートと discard ファイルから表、操作、エラーを特定し、データを修正するか一時的な REPERROR でスキップして、Replicat を停止した位置から再開します。ターゲットはオープンしたままですが、ラグがたまります。
- データが入っている表をレプリケーションに追加する (初期ロード + AFTERCSN) — 既存のデータが入っている表を、稼働中のレプリケーションに停止なしで追加します: ADD TRANDATA、一貫性のある SCN での expdp/impdp、その SCN より後のこの表の変更だけを適用する別の Replicat (AFTERCSN)。ほかの表のレプリケーションは継続します。
- 表をレプリケーションから除外する — 表は今後レプリケートされなくなります: Extract で TABLEEXCLUDE (または TABLE 行の削除)、Replicat で MAPEXCLUDE、必要に応じて DELETE TRANDATA。プロセスは短時間再起動されます。
- 単一の表を再同期する (resync) — ある表のターゲット側のデータがソースと食い違っています (手動変更、スキップしたエラー、不完全な初期ロード)。表をソースから一貫性のある SCN で再ロードし、一時的な Replicat がその SCN より後の変更を適用します。ほかの表には影響しません。
- trail ファイルがディスクを圧迫している: 削除 (Purge Trail) — trail ディレクトリが大きくなっている、またはディスクがいっぱいになりそうです。どのファイルが読まれているかを確認し、Purge Trail タスク (Classic の PURGEOLDEXTRACTS に相当) を USECHECKPOINTS 付きで定義します。緊急時は読込み済みのファイルを手動で削除します。
- Extract を特定の SCN に再配置する — Extract に最初から取り直させたい SCN があります (trail の消失、誤った開始位置、ターゲット側のロールバック)。ALTER EXTRACT … SCN と ETROLLOVER により新しい trail ファイルから開始します。同じデータがターゲットに 2 回届くことがあります。
- GoldenGate のバージョン・アップグレード / パッチ (Microservices) — 新しい GoldenGate のリリースやパッチへの移行です: out-of-place (新しいホームをインストールし、Service Manager と deployment を REST で新しいホームに移す) または OPatch による in-place。Extract/Replicat は短時間停止します。切り戻しは古いホームに戻すことです。
- ソースでの Data Guard switchover/failover 後に Extract を継続させる — ソース・データベースで switchover または failover が発生しました。Extract は新しい primary に接続してチェックポイントから続行する必要があります。接続 (資格証明の別名/サービス)、capture の状態、HANDLEDLFAILOVER、データ不整合の可能性を確認します。
開始前の確認
- GoldenGate Microservices が 構築ガイド のとおりに構築済み: ソースでは deployment … に Integrated Extract … と Distribution Path …、ターゲットでは deployment … に Parallel Replicat …。資格証明の別名は ggsrc/ggsrc_pdb (ソース) と ggtgt (ターゲット)。
- 両方の deployment の oggadmin パスワードがわかっている (ステップで入力を求められます。スクリプトには書き込みません)。…初期ロード用に、両方の PDB の SYSTEM パスワードと構築時の OGG_DP ディレクトリ (…) が準備済み。…
- Service Manager の systemd サービス (OracleGoldenGate) が両方のサーバーで動作している。
- 変更記録/メンテナンス時間帯が承認済み: …アップグレード中は Extract、Distribution Path、Replicat が停止します。ラグがたまり、作業完了後に解消します…Extract を巻き戻すと同じトランザクションがターゲットに 2 回届くことがあります。アプリケーション・オーナーと衝突時の対応を取り決め済み…REPERROR でスキップした操作はターゲットで欠落します。業務オーナーの承認済み…プロセスは短時間再起動されます…。
ガイドのフェーズ
- ステータス: プロセス、ラグ、サービス (読取り専用) — Service Manager とマイクロサービスのポートを確認する · ソースのプロセス、Extract のラグ、Distribution Path を表示する (ソース) · ターゲットのプロセスと Replicat のラグを表示する (ターゲット) · エンドツーエンドのラグをハートビートで測定する (ターゲット) · ソース・データベースの capture の状態と必要なアーカイブ・ログを確認する (ソース) · エラー・ログを確認する (ソース) …
- 1. 診断: Extract はなぜ停止したか — Extract のステータスとレポートのエラーを表示する (ソース) · データベースの capture の状態とアーカイブを確認する (ソース)
- 2. セーフティネット — パラメータ、チェックポイント、レポートのファイルをバックアップする (ソース)
- 3. 実施: 原因を解消して Extract を起動する — 欠落したアーカイブ・ログを RMAN バックアップからリストアする (ソース) · 原因を解消する · Extract を起動して監視する (ソース)
- 4. 検証と事後作業 — ラグが解消していくことを確認する (ソース) · 根本原因を防ぐ (ソース)
- 1. 診断: Replicat はどの操作で停止したか — Replicat のステータス、レポート、discard ファイルを表示する (ターゲット) · エラーになった行をターゲットとソースで比較する
- 2. セーフティネット — パラメータ、チェックポイント、レポートのファイルをバックアップする (ターゲット)
- 3. 実施: データを修正して Replicat を起動する — ターゲットのデータを修正する · 一時的にエラーを discard に回す: REPERROR (ターゲット) · Replicat を起動する (ターゲット)
- 4. 検証と事後作業 — Replicat が進んでいることを確認する (ターゲット) · 一時的な REPERROR を削除する (ターゲット)
- 1. 診断: 表はレプリケーションに適しているか — ソースで表を調べる (ソース) · サプリメンタル・ロギングの状態を表示する (ソース) · ターゲットで表を確認する (ターゲット)
- 2. セーフティネット — パラメータとチェックポイントのファイルをバックアップする (ソース) · パラメータとチェックポイントのファイルをバックアップする (ターゲット) · ターゲットの表をバックアップする (ターゲット)
- 3. 実施: 表をロードし、専用の Replicat で開始する — 表レベルでサプリメンタル・ロギングを有効にする (ソース) · 表をメインの Replicat から除外する: MAPEXCLUDE (ターゲット) · 表の明示的な MAP 行をメインの Replicat から削除する (ターゲット) · 表を Extract に追加する (ソース) · この表専用の新しい Replicat を追加する (ターゲット) · 一貫性のある SCN で表をエクスポートする (ソース) …
- 4. 検証と事後作業 — 行数を比較する (ソース) · 行数と新しい Replicat を確認する (ターゲット)
- 1. 診断: 表はどこで定義されているか — パラメータ・ファイル内の表の位置とサプリメンタル・ロギングを表示する (ソース) · Replicat での表のマッピングを表示する (ターゲット)
- 2. セーフティネット — パラメータとチェックポイントのファイルをバックアップする (ソース) · パラメータとチェックポイントのファイルをバックアップする (ターゲット)
- 3. 実施: 表を Extract と Replicat から除外する — 表を Extract から除外する (ソース) · trail に残っているレコードが適用されるのを待つ (ターゲット) · 表を Replicat から除外する (ターゲット) · 表の MAP 行を削除する (ターゲット) · 表レベルのサプリメンタル・ロギングを削除する (ソース)
- 4. 検証 — 表が処理されなくなったことを確認する (ソース)
- 1. 診断: trail はどれだけ領域を使っていて、誰が読んでいるか — trail ディレクトリとファイルを表示する (ソース) · trail ディレクトリと Replicat が読んでいる位置を表示する (ターゲット)
- 2. 実施: Purge Trail タスクを定義する — ソース deployment で Purge Trail タスクを定義する · ターゲット deployment で Purge Trail タスクを定義する
- 3. 緊急時: 読込み済みの trail ファイルを手動で削除する — 読込み済みの trail ファイルを削除する
- 1. 診断: その SCN に戻れるか — Extract の現在の位置を表示する (ソース) · capture の最初の SCN とアーカイブ・ログを確認する (ソース)
- 2. セーフティネット — パラメータ、チェックポイント、レポートのファイルをバックアップする (ソース)
- 3. 実施: Extract を SCN に位置付ける — Extract を停止し、SCN に位置付けて、新しい trail ファイルから開始する (ソース)
- 4. 検証 — Extract が新しい位置から進んでいることを確認する (ソース) · ターゲットで衝突を監視する (ターゲット)
- 1. 診断: 現在のバージョンと準備 — 現在のバージョン、パッチ、プロセスを記録する (ソース) · 現在のバージョン、パッチ、プロセスを記録する (ターゲット)
- 2. セーフティネット — deployment と Service Manager のディレクトリをバックアップする (ソース) · deployment と Service Manager のディレクトリをバックアップする (ターゲット)
- 3. 実施: プロセスを停止してアップグレードする — プロセスを正常に停止する (ソース) · プロセスを正常に停止する (ターゲット) · 新しい GoldenGate ホームをインストールする (ソース) · 新しい GoldenGate ホームをインストールする (ターゲット) · Service Manager と deployment を新しいホームに移す (ソース) · OPatch でパッチを適用する (ソース) …
- 4. 検証 — プロセスを起動してバージョンを確認する (ソース) · プロセスを起動してバージョンを確認する (ターゲット) · 切り戻し (必要な場合)
- 1. 診断: 新しい primary と Extract の接続 — 新しい primary のロールと capture の状態を確認する (新しい primary) · Extract の状態と資格証明の別名を表示する (ソース)
- 2. セーフティネット — パラメータ、チェックポイント、レポートのファイルをバックアップする (ソース)