はじめに
OCI GoldenGateに新しいデプロイメント・タイプ「データ検証」が追加され、Oracle GoldenGate Veridata 26cをOCI GoldenGate上で利用できるようになりました。
以下の記事をご参照ください:
Introducing Data verification deployments powered by GoldenGate Veridata 26c in OCI GoldenGate(英語)
これまでOCI GoldenGateは、主にデータのレプリケーション、データ変換、ストリーム分析を担っていました。今回追加されたデータ検証デプロイメントにより、データを「移動する」だけでなく、ソースとターゲットの内容が一致しているかをOCI GoldenGate上で「検証する」ことも可能になりました。
本記事では、OCI GoldenGate Veridataの環境を構成し、2つのOracle DatabaseにあるHR.EMPLOYEES表を比較するところまでを試します。
GoldenGate Veridataとは
Oracle GoldenGate Veridataは、ソースとターゲットのデータを比較し、不整合なデータを検出するための製品です。製品の基本的な仕組みについては、Oracle公式ドキュメントのOracle GoldenGate Veridataとは(日本語・23c)で確認できます。なお、今回利用する26cの最新情報はOracle GoldenGate Veridata 26cドキュメント(英語)を参照してください。
主な特徴は次のとおりです。
- レプリケーション処理を継続したまま、ソースとターゲットのデータを比較できる
- ソースとターゲットで異なるデータ型を標準化して比較できる
- 不一致行を検出し、レポートとして確認できる
- 必要に応じて不一致データを修復できる
- ジョブをスケジュールして、定期的な検証を自動化できる
比較時には、ソース側とターゲット側のVeridata Agentがデータを取得し、標準化とハッシュ処理を行います。Veridata Serverは両者の結果を比較し、不一致の可能性がある行を確認処理によって絞り込みます。この2段階の比較により、更新やレプリケーションが進行中の環境でも不整合を判定できます。
OCI GoldenGate Veridataの基本構成は次のようになります。
OCI GoldenGateでは、データベース接続ごとにVeridata Agentデプロイメントを1つ作成します。さらに、各Agentを参照するGoldenGate接続を作成し、そのGoldenGate接続をVeridata Serverへ割り当てます。
今回の構成では、次のリソースを作成します。
| リソース | 数 | 用途 |
|---|---|---|
| データベース接続 | 2 | ソースDB、ターゲットDBへの接続 |
| Veridata Agentデプロイメント | 2 | 各データベースから比較対象データを取得 |
| GoldenGate接続 | 2 | Veridata Serverから各Agentへ接続 |
| Veridata Serverデプロイメント | 1 | 比較ジョブの管理、実行、結果表示 |
今回の検証内容
前提として、ソースDBとターゲットDBは作成済みです。また、OCI GoldenGateによるデータ連携も構成済みで、今回比較するHR.EMPLOYEESのデータはソースからターゲットへ連携済みの状態から検証を開始します。データベースの作成およびOCI GoldenGateを使用したレプリケーション構成は、本記事の対象外です。OCI GoldenGateのデータ連携の構成方法については、OCIチュートリアル:Autonomous Database間のデータ連携(OCI GoldenGate)をご参照ください。
検証環境は次のとおりです。
| 項目 | 設定 |
|---|---|
| ソース | Oracle Base Database ServiceのPDB1
|
| ターゲット | Oracle Autonomous AI Database |
| ソース接続 | SourcePDB |
| ターゲット接続 | TargetADB |
| ソースAgent | GGVeridataAgent1 |
| ターゲットAgent | GGVeridataAgent2 |
| Veridata Server | GGVeridataServer |
| スキーマ | ソース、ターゲットともにHR
|
| 比較対象 | HR.EMPLOYEES |
| グループ | Compare_HR |
| ジョブ | Compare_HR_Job |
| プロファイル | $default |
今回の目的は、次の一連の動作を確認することです。
- Veridata AgentとVeridata ServerをOCI GoldenGate上に作成する
- Veridata Serverから各Agentへ接続できるようにする
- ソース表とターゲット表の比較ペアを作成する
- 比較ジョブを実行する
- 2つの表が同期していることをレポートで確認する
今回は比較処理のみを対象とし、差分データの自動修復は実行しておりません。
前提条件
本手順を実施する前に、次の準備が必要です。
- OCI GoldenGateを利用できるIAMポリシーが設定されていること
- Veridataデプロイメントを配置するVCNおよびサブネットがあること
- ソースDBとターゲットDBが作成済みであること
- ソースDBとターゲットDBにネットワーク到達できること
- ソースDB用、ターゲットDB用のOCI GoldenGateデータベース接続が作成済みであること
- 両データベースに比較対象となる
HR.EMPLOYEES表があること - OCI GoldenGateによるデータ連携が構成済みで、比較対象データがターゲットへ連携済みであること
- 接続でOCI Vaultのシークレットを使用する場合、デプロイメントからシークレットを参照できるポリシーがあること
パブリック・コンソール・アクセスを有効にする場合やZero Trust Packet Routingを利用する場合には、追加のポリシー、サービス制限、ネットワーク設定も確認してください。
1. OCI GoldenGateの管理画面を開く
OCIコンソールのナビゲーション・メニューから、Oracle AI Database → GoldenGateを選択します。
以降のデプロイメントと接続は、原則として同じコンパートメントに作成します。
2. ソースDB用のVeridata Agentデプロイメントを作成する
GoldenGateのデプロイメント画面でデプロイメントの作成をクリックします。
デプロイメントの作成画面で、Veridata Agentの設定を入力します。
今回のソース用Agent名はGGVeridataAgent1としました。
一般情報を入力した後、デプロイメント・タイプとしてデータ検証、テクノロジとしてOracle GoldenGate Veridata Agentを選択します。
今回は本番構成、2 OCPU、自動スケーリング無効を選択しました。2 OCPUの場合、画面上ではメモリー32 GB、ネットワーク帯域幅2 Gbps、ストレージ1,000 GBが割り当てられます。
続いて、プライベート・サブネットとライセンス・タイプを選択してデプロイメントを作成します。Veridata Agentで選択できるライセンス・タイプはBYOLです。ここでのOCPU数は検証時の設定であり、推奨値ではありません。実際の比較ペア数や同時実行数に合わせて選択してください。
デプロイメントがアクティブになったら、割当て済接続 → 接続の割当てをクリックし、ソースDB接続SourcePDBを割り当てます。
3. ターゲットDB用のVeridata Agentデプロイメントを作成する
同じ手順で、ターゲット用のGGVeridataAgent2を作成します。
デプロイメントがアクティブになったら、ターゲットDB接続TargetADBを割り当てます。
これで、ソースとターゲットにそれぞれ専用のVeridata Agentが用意できました。
4. Veridata Serverデプロイメントを作成する
再度デプロイメントの作成を開き、名前をGGVeridataServerとします。
デプロイメント・タイプはデータ検証、テクノロジはOracle GoldenGate Veridata Serverを選択します。AgentではなくServerを選択していることを確認してください。
今回は、本番構成、4 OCPU、自動スケーリング無効としました。画面上ではメモリー64 GB、ネットワーク帯域幅4 Gbps、ストレージ2,000 GBが割り当てました。
次に、サブネット、ライセンス・タイプ、GoldenGateインスタンス名、資格証明ストア、管理者ユーザー名、管理者パスワードを設定します。Veridata Serverでは、ライセンス込みまたはBYOLを選択できます。
ここで設定した管理者ユーザー名とパスワードは、後ほどVeridata管理コンソールへのログインに使用します。
デプロイメント作成後の詳細画面で、作成したVeridata Serverの状態を確認します。
5. 各AgentデプロイメントへのGoldenGate接続を作成する
ここで作成するのはデータベース接続ではなく、Veridata ServerからVeridata Agentへ接続するためのGoldenGate接続です。
GoldenGateの接続の管理画面から接続の作成をクリックします。
1つ目の接続はGGConnection4agent1とし、タイプにGoldenGateを選択し、デプロイメントにGGVeridataAgent1を選択します。
同様に、2つ目の接続GGConnection4agent2を作成し、GGVeridataAgent2を選択します。
6. GoldenGate接続をVeridata Serverデプロイメントへ割り当てる
GGVeridataServerの詳細画面を開き、割当て済接続 → 接続の割当てから、先ほど作成した2つのGoldenGate接続を割り当てます。
割当て後、両方の接続がアクティブになっていることを確認します。
構成上の関係は次のようになります。
| Veridata Serverに割り当てた接続 | Veridata Agentのデプロイメント | Veridata Agentのデプロイメントに割り当てたDB接続 |
|---|---|---|
GGConnection4agent1 |
GGVeridataAgent1 |
SourcePDB |
GGConnection4agent2 |
GGVeridataAgent2 |
TargetADB |
7. Veridata管理コンソールへログインする
GGVeridataServerの詳細画面にあるコンソールの起動をクリックします。
Veridata Server作成時に設定した管理者ユーザー名とパスワードを入力してログインします。
ログイン後、左メニューの接続を開くと、OCI GoldenGate側で割り当てた2つのAgentがVeridata接続として自動生成されていました。
この検証では、GGVeridataAgent1がソース、GGVeridataAgent2がターゲットです。
8. グループと比較ペアを作成する
左メニューからグループと比較ペアを開き、作成をクリックします。
8.1 構成
グループ名をCompare_HRとし、次のように設定します。
| 項目 | ソース | ターゲット |
|---|---|---|
| 接続 | GGVeridataAgent1 |
GGVeridataAgent2 |
| カタログ | PDB1 |
Autonomous Database側のカタログ |
| スキーマ | HR |
HR |
8.2 マッピング・ルール
今回はソースとターゲットで表名が同じため、正確な名前を使用を選択します。
異なる命名規則の表を一括で対応付ける場合は、ワイルドカード・パターンも利用できます。また、画面上では表パーティションやビューを比較対象に含めるかを指定できます。
8.3 表のマッピング
ソースとターゲットのオブジェクト一覧からEMPLOYEESを選択します。ターゲット側にもEMPLOYEESが自動的にマッピングされました。
プレビュー画面で、次の比較ペアが生成されることを確認します。
| 比較ペア名 | ソース表 | ターゲット表 | プロファイル |
|---|---|---|---|
EMPLOYEES=EMPLOYEES |
HR.EMPLOYEES |
HR.EMPLOYEES |
$default |
問題がなければ比較ペアの生成をクリックします。
9. ジョブを作成する
左メニューのジョブから作成をクリックし、ジョブ名をCompare_HR_Job、プロファイルを$defaultとします。
グループの追加からCompare_HRを選択し、ジョブへ追加します。
作成後のジョブ詳細では、EMPLOYEES=EMPLOYEESの比較ペアがリンクされていることを確認できます。
画面にはSchedule Jobも用意されており、定期的な比較ジョブとして実行することもできます。今回は手動実行します。
10. ジョブを実行する
左メニューのジョブの実行を開き、ジョブCompare_HR_Jobとプロファイル$defaultを選択します。
EMPLOYEES=EMPLOYEESにチェックを入れ、ジョブの実行をクリックします。
今回は比較のみを確認するため、比較後に修復を自動で実行は選択していません。
11. 実行結果を確認する
ジョブのモニターから実行結果を確認します。
今回の結果は次のとおりでした。
| 項目 | 結果 |
|---|---|
| 比較ステータス | 同期 |
| 比較ペア合計 | 1 |
| 同期 | 1 |
| 非同期 | 0 |
| 失敗 | 0 |
| 取消 | 0 |
| 実行時間 | 3秒 |
レポート画面でも、In-Sync Compare Pairsが1、Out-of-Sync Compare PairsとFailed Compare Pairsが0で、Job completed successfully.と表示されました。

これにより、OCI GoldenGate Veridataを使用して、ソースとターゲットのHR.EMPLOYEES表を正常に比較できることを確認しました。
試して分かったこと
OCIコンソールのGUI操作でVeridataの構成を完結できる
従来のようにVeridata ServerやAgentを個別のホストへインストールすることなく、OCI GoldenGateのデプロイメントとして作成できました。デプロイメントの作成、接続の割当て、コンソールの起動まで、OCIコンソール上のGUI操作で実施できます。
OCI GoldenGate Veridataでは3つのデプロイメントを作成する必要がある
OCI GoldenGateでVeridataを構成する場合、ソース用・ターゲット用のVeridata Agent 2台と、比較ジョブを管理するVeridata Server 1台の、合計3つのデプロイメントを作成します。
OCI GoldenGate Veridataでは2種類の接続割り当てが必要
OCI GoldenGate Veridataでは、まずソースDBとターゲットDBのデータベース接続を、それぞれ対応するVeridata Agentデプロイメントに割り当てます。
さらに、AgentデプロイメントごとにVeridata Serverから参照するためのGoldenGate接続を作成し、作成したGoldenGate接続をVeridata Serverデプロイメントに割り当てます。今回の構成では、SourcePDBをGGVeridataAgent1へ、TargetADBをGGVeridataAgent2へ割り当てたうえで、2つのGoldenGate接続をGGVeridataServerへ割り当てました。
このように、データベース接続はAgentへ、GoldenGate接続はServerへという2段階の割り当てが必要になる点が、OCI GoldenGateでVeridataを構成する際のポイントです。リソース間の関係を整理してから作成すると、接続の割当て先を間違えにくくなります。
まとめ
今回は、OCI GoldenGate Veridataについて、次の流れで動作を確認しました。
- ソース用とターゲット用のVeridata Agentを作成
- Veridata Serverを作成
- Agentを参照するGoldenGate接続をServerへ割り当て
- ソースとターゲットの比較ペアを作成
- 比較ジョブを実行
-
HR.EMPLOYEESが同期していることをレポートで確認
OCI GoldenGateにデータ検証 (Veridata) デプロイメントが追加されたことで、OCIコンソール上のGUI操作により、データ・レプリケーションとデータ整合性チェックを同じOCIサービスの中で構成できるようになりました。
OCI GoldenGate Veridataは従量課金モデルで利用できるため、利用量に応じたコストで運用でき、ライセンス版と比べてコストパフォーマンスの向上が期待できます。詳細はOCI GoldenGateの課金情報をご確認ください。
データ移行のカットオーバー前後、GoldenGateレプリケーションの稼働確認、定期的なデータ整合性監視などで活用できそうです。
参考資料
- OCI GoldenGateリリース・ノート: Veridata now available in OCI GoldenGate
- Oracle Blog: Introducing Data verification deployments powered by GoldenGate Veridata 26c in OCI GoldenGate
- Oracle GoldenGate Veridataとは(日本語・23c)
- Oracle GoldenGate Veridata 26cドキュメント(英語)
- OCI GoldenGate: Create data verification resources
- OCI GoldenGate: What's supported
- OCI GoldenGate: OCPU management and billing
- Oracle GoldenGate Veridata: How Oracle GoldenGate Veridata Works
- Oracle GoldenGate Veridata 26c: Compare Pair Details





























