はじめに
Oracle GoldenGate Veridata 23c を試すシリーズの第4段階として異なるデータベース間での表突合を実行します。今回は、SourceをMySQL、TargetをOracleとして、MySQL用のJava Agent実装と接続の作成から突合の実行~レポートまでを実施します。前々回のGoldenGate Veridata23cを試す(3)までに進めた環境を使用します。
環境について
今回の環境は(3)までにインストール・環境構築したOracle GoldenGate Veridata 23c (23.1.0.0.0)を利用します。

Oracle GoldenGate Veridata 23c マニュアルより
Source Database : MySQL 8.4.5
DB : Mydb8451 : Oracle Database のサンプルである EMP表をMySQLに作成し、ソースとする
Target Database : Oracle 19c RU19.26
PDB : PDB1903A : SCOTT EMP表を作成し、ターゲットとする
(GoldenGateによるレプリケーションは行わず、静的な突合のみ実施)
突合させる各EMP表は以下
MySQL
mysql> select * from EMP;
+-------+--------+-----------+------+------------+------+------+--------+
| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
+-------+--------+-----------+------+------------+------+------+--------+
| 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800 | NULL | 20 |
| 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600 | 300 | 30 |
| 7521 | WARD | SALESMAN | 7698 | 1981-02-22 | 1250 | 500 | 30 |
| 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975 | NULL | 20 |
| 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250 | 1400 | 30 |
| 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850 | NULL | 30 |
| 7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 2450 | NULL | 10 |
| 7788 | SCOTT | ANALYST | 7566 | 1987-06-13 | 3000 | NULL | 20 |
| 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000 | NULL | 10 |
| 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500 | 0 | 30 |
| 7876 | ADAMS | CLERK | 7788 | 1987-06-13 | 1100 | NULL | 20 |
| 7900 | JAMES | CLERK | 7698 | 1981-12-03 | 950 | NULL | 30 |
| 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000 | NULL | 20 |
| 7934 | MILLER | CLERK | 7782 | 1982-01-23 | 1300 | NULL | 10 |
+-------+--------+-----------+------+------------+------+------+--------+
14 rows in set (0.00 sec)
Oracle
SQL>select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80-12-17 800 20
7499 ALLEN SALESMAN 7698 81-02-20 1600 300 30
7521 WARD SALESMAN 7698 81-02-22 1250 500 30
7566 JONES MANAGER 7839 81-04-02 2975 20
7654 MARTIN SALESMAN 7698 81-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 81-05-01 2850 30
7782 CLARK MANAGER 7839 81-06-09 2450 10
7788 SCOTT ANALYST 7566 87-06-13 3000 20
7839 KING PRESIDENT 81-11-17 5000 10
7844 TURNER SALESMAN 7698 81-09-08 1500 0 30
7876 ADAMS CLERK 7788 87-06-13 1100 20
7900 JAMES CLERK 7698 81-12-03 950 30
7902 FORD ANALYST 7566 81-12-03 3000 20
7934 MILLER CLERK 7782 82-01-23 1300 10
※ MySQL環境の作成工程についてはこちらをご参照下さい
Veridata Serever 23c が起動している状態から始め、target (for Oracle) に接続するための Java Agent のみが起動している状態で開始します。
実装の手順および実行
1. MySQL用 Java Agent の準備
Q17_GoldenGate Veridata23cを試す(2) JavaAgent編を参考に
[oracle@vdtserver ~]$ ./agent_config.sh /u01/app/oracle/product/GoldenGate/java_agent/agent03
Agent プロパティのサンプルファイルをコピーしてagent.properties を準備する
[oracle@vdtserver ~]$ cp agent.properties.sample agent.properties
agent.propertiesについて下記の部分をMySQL用に編集する(以下が編集箇所)
server.port=7864
server.jdbcDriver=mysql-connector-j-8.3.0.jar
database.url=jdbc:mysql:3306//sourcedbsrv2/mydb8451
server.driversLocation=/u01/app/oracle/product/GoldenGate/Veridata/agent/drivers/
# database.url=jdbc:oracle:thin:@ptvm19:1521/pdb1903a ⇦ Oracleの場合
編集後、Java Agentを起動する
./agent.sh start agent.properties
念のためログも確認
/u01/app/oracle/product/GoldenGate/java_agent/agent03/logs/verdata/veridata-agent.log
[2025-04-18T12:33:16.213+09:00] [veridata] [NOTIFICATION] [OGGV-60150] [oracle.veridata.agent] [tid: 1] [ecid: 0000PP6xJ5o8Dwn5KnS4ye1c0SVw000001,0] Configuring logging.
[2025-04-18T12:33:16.289+09:00] [veridata] [NOTIFICATION] [OGGV-60151] [oracle.veridata.agent] [tid: 1] [ecid: 0000PP6xJ5o8Dwn5KnS4ye1c0SVw000001,0] Config file for logger is /u01/app/oracle/product/GoldenGate/java_agent/agent03/config/odl.xml
[2025-04-18T12:33:16.355+09:00] [veridata] [NOTIFICATION] [] [oracle.veridata.agent] [tid: 1] [ecid: 0000PP6xJ5o8Dwn5KnS4ye1c0SVw000001,0] OGGV-60001: Veridata Agent Version 23.1.0.0.241015
[2025-04-18T12:33:16.357+09:00] [veridata] [NOTIFICATION] [OGGV-60002] [oracle.veridata.agent] [tid: 1] [ecid: 0000PP6xJ5o8Dwn5KnS4ye1c0SVw000001,0] Veridata Agent running on ptvm44.jp.oracle.com port 7864
大丈夫そうだ …
2. Veridata 23c の管理画面の表示
3. 接続の作成
管理コンソールの左ペインにある「接続」に移動し、右上にある作成ボタンを押します。
接続の作成(詳細)が開くので接続名称を入力します。
次のエージェントで Java Agent の情報を入力します。
ここで、エージェント接続は、Java Agent が稼働しているサーバ(ホスト名)、ポートは使用している agent.properties
ファイルにある、ポート(今回は7684)を指定します。
Database は選択式となっており、今回はmysql です。
検証ボタンにより、Java Agent 接続の確認が可能です。
データ・ソースに移り、参照および修正用のスキーマ指定を行います。
修正の可否については対象となるデータベースに依存しますが、Oracle では突合差異の修正は可能で修正する権限を持ったユーザを指定しますが、今回は割愛します。
ここで接続のテストを実行すると、agent.properties で指定した JDBCのurl でデータベース接続を行い、目的のデータベースへの接続確認をする事ができます。
[送信]ボタンを押し、接続を作成する事ができます。
Source および Target への接続が作成できました。
それぞれをクリックして、詳細へ入り参照や修正が可能です。
4. グループと比較ペアの作成
管理コンソールの左ペインにある「グループと比較ペア」に移動し、上部ある作成ボタンを押します。
基礎的な情報を入力します。
名称 : グループの名称
ソース : 突合元となるデータ・ソース(接続) とスキーマ (今回はvdtuser)
ターゲット: : 突合先となるデータ・ソース(接続) とスキーマ (今回はscott)
マッピング・ルールを設定します。(今回は特に変更せず、デフォルトのまま)
マッピング対象の選択と指定画面に移ります。(ここも特に変更せず、デフォルトで)
プレビュー後比較ペアの生成で作成します。
作成された比較ペアと詳細です。
比較対象となるオブジェクト(表)の構造が違う場合にこれらを設定する事で柔軟な突合が可能になります。
5. ジョブの作成と実行
管理コンソールの左ペインにある「ジョブ」に移動し、上部にある作成ボタンを押します。
グループのリストから作成したグループを選択し、生成します。
この画面から右上のジョブの実行ボタンか、またはナビゲーション・ペインのジョブの実行へ移ります。
実行するジョブを選択し、実行します。
6. 結果とレポートの確認
管理コンソールの左ペインにある「ジョブのミニター」に移動し、完了したジョブから詳細を確認します。
レポートのリンクから比較ペアレポートの詳細(テキスト形式)がダウンロードが可能です。
7. 結果とレポートの確認 (非同期ジョブの実行)
一方のデータを変更し差異がある状態で同じジョブを実行してみます。この時、GoldenGate によるレプリケーションは行わないものとして Veridataによる非同期検出を目的とします。Source Database である Oracle への処理になります。
SQL> update emp set sal=1800 where empno='7369';
1行が更新されました。
経過: 00:00:00.01
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80-12-17 1800 20
7499 ALLEN SALESMAN 7698 81-02-20 1600 300 30
7521 WARD SALESMAN 7698 81-02-22 1250 500 30
7566 JONES MANAGER 7839 81-04-02 2975 20
7654 MARTIN SALESMAN 7698 81-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 81-05-01 2850 30
7782 CLARK MANAGER 7839 81-06-09 2450 10
7788 SCOTT ANALYST 7566 87-06-13 3000 20
7839 KING PRESIDENT 81-11-17 5000 10
7844 TURNER SALESMAN 7698 81-09-08 1500 0 30
7876 ADAMS CLERK 7788 87-06-13 1100 20
7900 JAMES CLERK 7698 81-12-03 950 30
7902 FORD ANALYST 7566 81-12-03 3000 20
7934 MILLER CLERK 7782 82-01-23 1300 10
14行が選択されました。
経過: 00:00:00.00
SQL> commit;
1件の非同期が検出されます。
非同期サマリから確認すると、データを同期させるためのアクション(?)が提示されています。
最後に
今回はGoldenGate Veridata 23c を試すシリーズの第4段として、異なるデータベースであるMySQLとOracle間のオブジェクトを突合する接続・比較ペアとグループ、ジョブの作成から実行およびレポート確認まで実施してきました。
マルチ・クラウド環境が促進される現在、データベースも様々なサービスで提供されバージョンだけでなく提供ベンダーが異なるデータベース・オブジェクトの比較・確認のため突合するケースもあり得ます。導入だけでなく操作感もシンプルになったGoldenGate Veridataの活用の場も増えると考えられます。

























