0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GoldenGate Veridata23cを試す(4) 異なるDBの突合

Posted at

はじめに

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)を利用します。
Q19_00.png
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 の管理画面の表示

Q19_01.png

3. 接続の作成

管理コンソールの左ペインにある「接続」に移動し、右上にある作成ボタンを押します。

Q19_02.png

接続の作成(詳細)が開くので接続名称を入力します。

Q19_03.png

次のエージェントで Java Agent の情報を入力します。

Q19_04.png

ここで、エージェント接続は、Java Agent が稼働しているサーバ(ホスト名)、ポートは使用している agent.properties
ファイルにある、ポート(今回は7684)を指定します。
Database は選択式となっており、今回はmysql です。
検証ボタンにより、Java Agent 接続の確認が可能です。

Q19_05.png

Q19_06.png

データ・ソースに移り、参照および修正用のスキーマ指定を行います。
修正の可否については対象となるデータベースに依存しますが、Oracle では突合差異の修正は可能で修正する権限を持ったユーザを指定しますが、今回は割愛します。

Q19_07.png

ここで接続のテストを実行すると、agent.properties で指定した JDBCのurl でデータベース接続を行い、目的のデータベースへの接続確認をする事ができます。

Q19_08.png

[送信]ボタンを押し、接続を作成する事ができます。

Q19_09.png

Source および Target への接続が作成できました。
それぞれをクリックして、詳細へ入り参照や修正が可能です。

Q19_10.png

4. グループと比較ペアの作成
管理コンソールの左ペインにある「グループと比較ペア」に移動し、上部ある作成ボタンを押します。

Q19_11.png

基礎的な情報を入力します。
名称 : グループの名称
ソース : 突合元となるデータ・ソース(接続) とスキーマ (今回はvdtuser)
ターゲット: : 突合先となるデータ・ソース(接続) とスキーマ (今回はscott)

マッピング・ルールを設定します。(今回は特に変更せず、デフォルトのまま)

Q19_12.png

マッピング対象の選択と指定画面に移ります。(ここも特に変更せず、デフォルトで)

Q19_13.png

プレビュー後比較ペアの生成で作成します。

Q19_14.png

作成された比較ペアと詳細です。

Q19_15.png

比較対象となるオブジェクト(表)の構造が違う場合にこれらを設定する事で柔軟な突合が可能になります。

5. ジョブの作成と実行
管理コンソールの左ペインにある「ジョブ」に移動し、上部にある作成ボタンを押します。

Q19_16.png

Q19_17.png

グループのリストから作成したグループを選択し、生成します。

Q19_18.png

Q19_19.png

この画面から右上のジョブの実行ボタンか、またはナビゲーション・ペインのジョブの実行へ移ります。

Q19_20.png

Q19_21.png

実行するジョブを選択し、実行します。

Q19_22.png

6. 結果とレポートの確認
管理コンソールの左ペインにある「ジョブのミニター」に移動し、完了したジョブから詳細を確認します。

Q19_23.png

レポートのリンクから比較ペアレポートの詳細(テキスト形式)がダウンロードが可能です。

Q19_24.png

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;

ジョブの実行と結果:
Q19_25.png

1件の非同期が検出されます。

Q19_26.png

非同期サマリから確認すると、データを同期させるためのアクション(?)が提示されています。

最後に

今回はGoldenGate Veridata 23c を試すシリーズの第4段として、異なるデータベースであるMySQLとOracle間のオブジェクトを突合する接続・比較ペアとグループ、ジョブの作成から実行およびレポート確認まで実施してきました。
マルチ・クラウド環境が促進される現在、データベースも様々なサービスで提供されバージョンだけでなく提供ベンダーが異なるデータベース・オブジェクトの比較・確認のため突合するケースもあり得ます。導入だけでなく操作感もシンプルになったGoldenGate Veridataの活用の場も増えると考えられます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?