業界トップクラスのデータベースエキスパート集団

株式会社アクアシステムズ

Oracle GoldenGateによる高速データ連携
第3回「DDL/変換を含む片方向レプリケーション」

 Oracle GoldenGateによる高速データ連携

update:

第3回「DDL/変換を含む片方向レプリケーション」

著者:吉田 宗弘

1. Introduction

1.1 DDL/変換を含む片方向レプリケーション

前回は、GoldenGate で一番基本となる「DML の片方向レプリケーション」について解説を行いました。これで新環境に、旧環境のサブセットを作成する事が可能となります。しかし実際にレプリケーション環境を構築すると、「DDL もレプリケートさせたい」、「旧環境と新環境でテーブルの構成を変えたい」といった要望が出てくる事が予想されます。今回はそう言った要望に応えるべく、DDL/変換を含む片方向レプリケーションについて解説を行います。

1.2 DDL を含む片方向レプリケーション

GoldenGate を使用してDDL をレプリケートさせる場合には、追加の設定が必要となります。それでは実際に、GoldenGate でDDL のレプリケートを確認してみましょう。 DDL のレプリケートを行うためには、内部で利用するオブジェクトの作成が必要となります。これらのオブジェクトは、GoldenGate をInstallしたディレクトリ下に用意されているスクリプトを実行する事で作成する事ができます。 スクリプト実行時にGoldenGate 管理ユーザ名の入力を求められますので、ggs と入力します。

注意 : Oracle 10g の場合、DDL レプリケーションのセットアップを行う際には、recyclebin をOff にしておく必要があります。


1.2.1 DDL レプリケーションの設定

DDL レプリケーションを行うためには、DB 側の設定だけではなくGoldenGate 側にも設定が必要となります。ここでは、DDL レプリケーションを使用するためのGoldenGate の設定について記述していきます。各設定を行い、各GoldenGate プロセスの再起動を行って下さい。

1) GLOBALS 設定


2) Capture 設定 (CAP01)


3) Replicat 設定 (REP01)



追加したパラメータの説明

区分 パラメータ 概要

GLOBALS

GGSCHEMA

DDL レプリケーションで、GoldenGate が所有するデータベース・オブジェクトを含むスキーマ名を指定

Capture

DDL INCLUDE…

DDL サポートの有効化
PUBLIC SYNONYM に対するDDL 操作をキャプチャの対象外とする。
※ Public Synonym に対するAlter 操作はSYSDBA権限が必要とするため、これを除外しないとReplicat がORA-1031 (権限不足) で異常終了します。
Notes#1403026.1 にある通り、ReplicatをSYSDBA 権限で接続させる事でも回避可能です。

DDLOPTIONS

ADDTRANDATA :
新しく追加された表に対して自動でSupplemental Logging の有効化
REPORT:
レポートファイルにDDL 処理の詳細を記載

Replicat

DDL INCLUDE…

GoldenGate管理ユーザのオブジェクト "GGS.*" 以外を反映の対象とする。

DDLERROR…

ターゲット上で見つからないオブジェクトに対してDDL が発行された場合は、Replicat を異常終了させる。

DDLOPTIONS

レポートファイルにDDL 処理の詳細を記載

ここでは全てのDDL を対象にレプリケートの設定を行いましたが、DDL パラメータで指定するオプションによって、CREATE のみ、SNAPSHOTのみ等、柔軟な指定を行う事が可能です。詳細についてはGoldenGate のリファレンスマニュアルで確認して下さい。

1.2.2 動作確認

SQL*PlusからDDLを含む操作を行い、結果を確認します。

これで、GoldenGate によるDDL レプリケーションの確認ができました。

1.3 データ変換を含む片方向レプリケーション

これまでは旧環境と新環境で同じ構成のテーブルについて検証を行ってきましたが、GoldenGate では構成の異なるテーブルに対してもレプリケートが可能です。
それでは実際に、データ変換を含むレプリケーションについて検証してみましょう。
ここでは先程作成したemp_tab 表を例に確認を行います。
新環境では、First_name 列とLast_name 列を連結してFull_name 列に格納する事とします。GoldenGate によって新環境にもemp_tab 表が作成されているので、新環境では新たにemp_tab2 表を作成します。初期同期の手順を簡略化するため、旧環境でemp_tab 表のデータを削除しておきます。



1.3.1 データ定義ファイルの準備

Source DB とTarget DB でテーブルの構成が異なる場合、Replicat プロセスに元のテーブル構成を認識させるため、Source DB 側でデータ定義ファイルを作成しTarget DB 側に配置しておく必要があります。
データ定義ファイルの作成には、defgen ユーティリティを使用しますが、最初にCapture プロセスやReplicat プロセスと同様に、defgen 用のパラメータ・ファイルを作成します。



上記設定で使用しているパラメータの説明

パラメータ 概要

defsfile

作成するデータ定義ファイルのパス

userid/password

DB に接続するユーザ名/パスワード

table

データ定義ファイルに含めるテーブル名



1.3.2 Replicatプロセスの設定


データ定義ファイルを準備したら、Replicat プロセスがSource DB のデータ定義を認識するように、Replicat プロセスの設定を変更してReplicat プロセスの再起動を行います。



上記設定で使用しているパラメータの説明

パラメータ 概要

SOURCEDEFS

参照するデータ定義ファイルのパス

MAP … COLMAP

テーブル構成を変更する際の列データのマッピング

※ @strcatはGoldenGate が事前に用意している文字列を連結する関数
他の関数については、リファレンス・ガイド 第5章「列変換ファンクション」を参照願います。


1.3.3 動作確認

SQL*Plus からデータ変換が行われるSQL 文を実行し、結果を確認します。


以上でデータ変換を含むレプリケーションの確認ができました。

業界トップクラスのデータベースエキスパート集団
アクアシステムズ

データベースに関するすべての課題、トラブル、お悩みを解決します。
高難易度、複雑、他社対応不可案件など、お気軽にご相談ください。