12 レプリケートされたデータとメタデータとの関連付け

この章では、メタデータの使用方法と、レプリケートされたデータとメタデータとを関連付ける方法について説明します。

内容は次のとおりです。

概要

ある表から別の表にデータをレプリケートする場合、ソース表とターゲット表の列構造(メタデータ)が同一かどうかは重要な問題です。Oracle GoldenGateは、次の目的でメタデータを参照します。

  • ソースで、取得された操作に関する完全な情報をReplicatプロセスに提供するため。

  • ターゲットで、レプリケートされたデータがReplicatによって正しくマップされ、(必要に応じて)変換されるよう、ターゲット表の構造を決めるため。

次に示すシナリオでは、それぞれ異なるパラメータまたはパラメータ・セットを使用して、メタデータを処理するOracle GoldenGateプロセスに対してメタデータを正しく表現する必要があります。

  • ソース表を、同一のメタデータ定義を持つターゲット表にレプリケートする場合(同機種レプリケーション)。

  • ソース表を、異なるメタデータ定義を持つターゲット表にレプリケートする場合。

  • ソース表を2つのターゲット表(同一の定義を持つターゲット表と異なる定義を持つターゲット表)にレプリケートする場合。

データ定義ファイルの理解

Oracle GoldenGateは、ローカル・データベースに問い合せて一方の定義セットを取得できますが、リモート・データベースから定義を取得するにはデータ定義ファイルが必要になります。データ定義ファイルには、レプリケート対象データのメタデータに関する情報が含まれています。次の2種類の定義ファイルがあります。

  • ソース定義ファイルには、ソース表の定義が含まれています。

  • ターゲット定義ファイルには、ターゲット表の定義が含まれています。

パラメータ・ファイルでは複数のデータ定義ファイルを使用できます。たとえば、それぞれに異なるアプリケーションの定義を含めることができます。

定義ファイルの内容

データ定義ファイルの形式は内部使用を目的としているため、手順に記載されている場合、またはサポート担当者から指示された場合を除き、Oracle GoldenGateユーザーが編集しないでください。ファイルの先頭に、DEFGENのバージョン、キャラクタ・セットの情報、データベース・タイプ、ロケール、およびその他のデータ・プロパティを示す内部メタデータからなるファイル・ヘッダーがあります。ヘッダーの次にあるのが表定義セクションです。各表定義セクションには、表名、レコード長、列数、および1つ以上の列定義が含まれています。

使用する定義ファイルのタイプと場所

使用する定義ファイルのタイプは、列のマッピングおよび変換がどこで実行されるかによって異なります。

  • WindowsまたはUNIXベースの任意のタイプのデータベース・システムからWindowsまたはUNIXベースの他のシステムにレプリケートする場合、マッピングと変換はExtract、データ・ポンプExtract、Replicatのいずれでも実行できますが、通常はターゲット・システムのReplicatによって実行されます。ただし、Oracle GoldenGateで異なるキャラクタ・セット間の変換を行う必要がある場合、ターゲットのReplicatによってマッピングと変換が行われる必要があります。「定義ファイルのキャラクタ・セットの影響の理解」を参照してください

  • Windows、UNIXまたはLinuxベースの任意のデータベース・システムからNonStopシステム上のEnscribeターゲットにレプリケートする場合、マッピングと変換はWindows、UNIXまたはLinuxシステムで実行する必要があります。2つおよび3つの部分からなるSQL名およびデータ型を、NonStopプラットフォームで使用される3つの部分からなるファイル名に変換できるのはExtractのみです。このシナリオでは、Oracle GoldenGateはソースとターゲットの間でキャラクタ・セットを変換できません。「定義ファイルのキャラクタ・セットの影響の理解」を参照してください

したがって、次のようになります。

  • 列のマッピングおよび変換をターゲットで実行するには、ソースで生成されたソース定義ファイルを使用して、Replicatにソース定義を提供します。

  • 列のマッピングおよび変換をソースで実行するには、ターゲットで生成されたターゲット定義ファイルを使用し、プライマリExtractとデータ・ポンプExtractのどちらが変換を実行するかに応じて、該当するプロセスにターゲット定義を提供します。

  • 中間システムで列マッピングと変換を行うには、複数の定義ファイル・タイプを使用する必要がある場合があります。中間システムでデータ・ポンプを使用するレポート構成の作成およびカスケード・レポート構成の作成を参照してください。中間システムにReplicatがない場合、キャラクタ・セット間の変換は実行できないことに注意してください。

定義ファイルのキャラクタ・セットの影響の理解

Oracle GoldenGateでは、データの変換を行う場合は、データベースのキャラクタ・セット・エンコーディングを考慮に入れ、定義ファイルを作成する場合は、ローカル・オペレーティング・システムのキャラクタ・セットを考慮に入れます。ソース・データとターゲット・データのキャラクタ・セットが異なる場合、次のガイドラインを考慮に入れます。

データのマッピングと変換をReplicatプロセスに限定

異なるキャラクタ・セット間でレプリケートされたデータの変換を行うプロセスはReplicatのみです。ソース・データベースのキャラクタ・セットからターゲット・データベースのキャラクタ・セット(カスケード構成では中間システムのデータベースのキャラクタ・セット)データを変換します。そのため、ソースとターゲットのキャラクタ・セットが異なる場合、データ・マッピングと変換はReplicatによって行われる必要があります。データ・ポンプのみが含まれるソース・システムや中間システムで行うことはできません。このような場合、ターゲット定義ファイルは無効です。

オペレーティング・システムのキャラクタ・セットが原因のファイルの破損の回避

デフォルトでは、定義ファイルはDEFGENによってローカル・オペレーティング・システムのキャラクタ・セットで記述されます。次の条件を満たす場合、エンコーディング関連の問題が生じることなく、定義ファイルをローカル・システムで作成し、リモート・システムに転送できます。

  • 定義ファイルの転送先のリモート・システムに、ローカル・システムと同じか同等のオペレーティング・システム・キャラクタ・セットがあります

  • リモート・システムのオペレーティング・システム・キャラクタ・セットは、ローカル・システムのオペレーティング・システム・キャラクタ・セットのサブセットです。たとえば、ソースとターゲットのキャラクタ・セットがいずれもASCII互換またはEBCDIC互換で、表名と列名がすべて7ビットのUS-ASCIIまたはそれと同等の文字を使用している場合、ソースとターゲットのシステム間で定義ファイルを移動できます。

オペレーティング・システム・キャラクタ・セット同士の多くは、あまり互換性がないか、まったく互換性がありません。リモート・システムで使用されるものと同じか、互換性のあるキャラクタ・セットで定義ファイルを記述するには、DEFGENを構成する際、DEFSFILEパラメータのCHARSETオプションを使用します。

既存の定義ファイルのキャラクタ・セットの変更

既存の定義ファイルを、キャラクタ・セットに互換性のないオペレーティング・システムへ転送する場合、そのシステムでDEFGENユーティリティを実行して、ファイルのキャラクタ・セットを目的のものに変換できます。この手順では、2つの入力引数(定義ファイルの名前とUPDATECS character_setパラメータ)を指定します。次に例を示します。

defgen ./dirdef/source.def UPDATECS UTF-8

UPDATECSが役立つのは、日本語のWindowsにおける日本語の表名がWindows CP932でデータ定義ファイルに記述されており、その定義ファイルを日本語のUNIXに転送するような場合です。UNIXがPCKロケールで構成されていないかぎり、このファイルは使用できません。そのため、UPDATECSを使用して定義ファイルのエンコーディングを正しい形式に変換する必要があります。

z/OSシステムから別のプラットフォームへのダウンロード

IBM z/OSプラットフォームで生成された定義ファイルをz/OS以外のプラットフォームに転送する場合、BINARYモードでダウンロードする必要があります。

定義テンプレートの使用

定義ファイルを作成する際に定義テンプレートを指定すると、初期起動の後、Oracle GoldenGate構成に表が追加された場合に、新しい定義ファイルを作成する必要性が軽減されます。テンプレートを使用するには、たとえば顧客データベースに顧客ごとの別々の表が存在するが、すべての表が同一であるというように、新しい表がすべて同一の構造を持っている必要があります(「表が同一とみなされるためのルール」を参照)。

テンプレートを使用しない場合に、起動後、新しい表が追加されたときは、Oracle GoldenGate構成に追加された新しい表ごとに定義ファイルを生成し、その内容を既存のマスター定義ファイルにコピーしてから、プロセスを再起動する必要があります。

データ定義を取得するためのOracle GoldenGateの構成

データ定義ファイルとテンプレート(必要な場合)を使用するようにOracle GoldenGateを構成するには、次の操作を実行します。

DEFGENの構成

メタデータ定義を取得するシステムで次の手順を実行します。

  1. Oracle GoldenGateディレクトリからGGSCIを実行します。
  2. GGSCIで、次のコマンドを発行してDEFGENのパラメータ・ファイルを作成します。
    EDIT PARAMS DEFGEN
    
  3. 表12-1にリストされている順序でパラメータを入力します。パラメータ文ごとに新規行を開始します。

    表12-1 DEFGENのパラメータ

    パラメータ 説明
    CHARSET character_set
    

    DEFGENでパラメータ・ファイルの読取りに使用されるキャラクタ・セットを指定するには、このパラメータを使用します。デフォルトでは、パラメータ・ファイルのキャラクタ・セットはローカル・オペレーティング・システムのキャラクタ・セットです。CHARSETを使用する場合は、パラメータ・ファイルの1行目に指定する必要があります。

    DEFSFILE file_name [APPEND | PURGE] [CHARSET character_set] [FORMAT RELEASE major.minor]
    
    • APPENDを指定した場合、DEFGENは、指定のファイルがすでに存在すれば、既存の内容の最後に(現在の実行からの)新しい内容を書き込みます。

    • PURGEを指定した場合、DEFGENは、現在の実行からの新しい内容を書き込む前に、指定のファイルを消去します。これはデフォルトです。

    • CHARSETを指定した場合、オペレーティング・システムのデフォルト・キャラクタ・セットではなく、指定のキャラクタ・セットで定義ファイルが生成されます。

    • FORMAT RELEASEは、定義ファイルのOracle GoldenGateリリース・バージョンを指定します。定義ファイルが、DEFGENプロセスより古いバージョンのOracle GoldenGateにあるプロセスによって読み取られる場合に使用します。

    DEFGENの出力となるデータ定義ファイルの相対名または完全修飾名を指定します。

    各パラメータ・オプションとそれらがキャラクタ・セットに与える影響についての重要な情報は、『Oracle GoldenGateリファレンス』を参照してください。

    詳細は、「定義ファイルのキャラクタ・セットの影響の理解」を参照してください。

    [{SOURCEDB | TARGETDB} datasource]
    {USERIDALIAS alias | USERID user, PASSWORD password [encryption_options]}
    • SOURCEDB | TARGETDBでは、データソース名を指定します(接続情報の一部として必要な場合)。Oracleでは必要ありません。

    • USERID user, PASSWORD password [encryption_options]は、ユーザー名とパスワード、および暗号化オプション(オプション)を指定します。

    • USERIDALIASはOracle GoldenGate資格証明ストアに格納された資格証明を介するデータベース認証を提供します。

    データベース接続情報を指定します。

    datasourceは、DSN (データソース名)またはOracleコンテナ・データベース(CDB)のコンテナにです。Oracleコンテナ・データベースに接続する場合、複数のコンテナにあるオブジェクトに対して定義を生成する必要があるときは、一般ユーザーとしてrootコンテナに接続します。それ以外の場合は、特定のコンテナに接続して、そのコンテナのためだけの定義を生成できます。

    SOURCEDBUSERIDおよびUSERIDALIASの詳細(それらがサポートするデータベースなど)は、『Oracle GoldenGateリファレンス』を参照してください。

    NOCATALOG

    定義が定義ファイルへ書き込まれる前に、表名からコンテナ名(Oracle)を削除します。このパラメータは、2つの部分からなる名前(owner.object)のみをサポートするデータベースへのマッピングに定義ファイルが使用される場合に使用します。

    TABLE container. owner.table
    [, {DEF | TARGETDEF} template];
    

    説明:

    • containerOracleコンテナ・データベース内のコンテナです。

    • ownerは、定義対象の表を含むスキーマの名前です。

    • tableは、定義対象の表です。

    • [, {DEF | TARGETDEF} template]を指定すると、この表のメタデータに基づいた定義テンプレートが追加で作成されます。このオプションは、初期ロードではサポートされません。このオプションの詳細は、『Oracle GoldenGateリファレンス』を参照してください。

    定義を定義する1つ以上の表の完全修飾名を指定し、オプションで表のメタデータを定義テンプレートの基礎として使用します。大/小文字が区別されるデータベースに対しては、表名とテンプレート名における大/小文字の区別が維持されます。ワイルドカードの使用と大/小文字の区別の詳細は、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

    ソース定義ファイルを生成する場合はソース表を指定し、ターゲット定義ファイルを生成する場合はターゲット表を指定します。

    ワイルドカードの指定から表を除外するには、TABLEEXCLUDEパラメータを使用します。

    DEFGENでは、UDTがサポートされないことに注意してください。

  4. ファイルを保存して閉じます。
  5. GGSCIを終了します。
DEFGENの実行
  1. Oracle GoldenGateがインストールされているディレクトリから、次の引数を使用してDEFGENを実行します。この例は、UNIXファイル・システムの構造を示しています。
    defgen paramfile dirprm/defgen.prm [reportfile dirrpt/defgen.rpt]
    [NOEXTATTR]
    

    説明:

    • defgenは、プログラムの名前です。

    • paramfileは必須のキーワードです。dirprm/defgen.prmは、DEFGENパラメータ・ファイルの相対名またはフルパス名です。(例には通常の場所が示されています。)

    • reportfileは必須のキーワードです。dirrpt/defgen.rptは、画面および指定したレポート・ファイルに出力を送ります。(例には通常の場所が示されています。)画面に出力するのみの場合、reportfile引数は省略できます。

    • NOEXTATTRは、リリース11.2.1より古いOracle GoldenGateとの下位互換性を維持するために使用できますが、ASCII以外のキャラクタ・セット、大/小文字の区別、および空白とともに引用符で囲んだオブジェクト名をサポートしません。NOEXTATTRを指定すると、DEFGENは、Oracle GoldenGateリリース11.2.1で導入されたグローバリゼーション機能をサポートするデータベース・ロケールおよびキャラクタ・セットを組み込みません。表名または列名にマルチバイト文字や空白などの特殊文字が含まれている場合、NOEXTATTRを指定すると、DEFGENは表定義を組み込みません。パラメータ・ファイルでAPPENDモードが使用されている場合、NOEXTATTRは無視され、その他の属性が指定されているかどうかに関係なく、新しい表定義が既存のファイル形式で追加されます。

  2. 追加で作成する定義ファイルについて、前述の手順を繰り返します。
  3. ASCIIモードを使用して、ローカルのOracle GoldenGate dirdefサブディレクトリからリモートのdirdefサブディレクトリに定義ファイルをFTP送信します。
リモート・システムへの定義ファイルの転送

ローカルとリモートのオペレーティング・システムが異なり、リモート・オペレーティング・システムのキャラクタ・セット用に定義ファイルが作成されている場合に、データ定義ファイルをリモート・システムにFTP送信するには、BINARYモードを使用します。こうすることで、FTPプログラムによって予期しない文字(復帰改行文字や改行文字など)がファイルに挿入されるのを回避できます。z/OSからz/OS以外のプラットフォームへ定義ファイルを転送する場合、必ずBINARYモードを使用してください。

定義ファイルの指定

次の方法でデータ定義ファイルを適切なOracle GoldenGateプロセスに関連付けます。

  • Extractパラメータ・ファイルのTARGETDEFSパラメータを使用して、ターゲット定義ファイルをExtractグループまたはデータ・ポンプに関連付けます。

  • Replicatパラメータ・ファイルのSOURCEDEFSパラメータを使用して、ソース定義ファイルをReplicatグループに関連付けます。

  • Oracle GoldenGateによって、ソース・データベースもターゲット・データベースも含まない中間システムでマッピングまたは変換を実行する場合、パラメータ・ファイルのSOURCEDEFSおよびTARGETDEFSを使用して、ソース定義ファイルおよびターゲット定義ファイルをデータ・ポンプExtractに関連付けます。Oracle Databaseでは、中間システムにOracleライブラリも存在している必要があります。

複数の定義ファイルを指定する正しい方法は、「定義ファイルの使用例」を参照してください。

同じパラメータ・ファイルで、SOURCEDEFSASSUMETARGETDEFSを使用しないでください。ASSUMETARGETDEFSの詳細は、同一のメタデータを想定するためのOracle GoldenGateの構成を参照してください。

定義テンプレートに一致する表の追加

Oracle GoldenGate構成内の新しい表を定義テンプレートにマップするには、TABLEパラメータとMAPパラメータの次のオプションを適宜使用します。

  • ソース定義テンプレートの名前を指定するには、DEFを使用します。

  • ターゲット定義テンプレートの名前を指定するには、TARGETDEFを使用します。

これらのオプションを指定すると、ExtractプロセスまたはReplicatプロセスで指定のテンプレートと同じ定義が使用されるため、新しい表の定義ファイルを新たに作成したり、プロセスを再起動したりする必要はありません。

定義ファイルの使用例

このトピックには、定義ファイルを含むいくつかの基本的な使用例が含まれます。

ターゲット・システム上で使用するソース定義ファイルの作成

ソース・システム上で使用するターゲット定義ファイルの作成

ターゲット・システム上で使用する複数のソース定義ファイルの作成

ターゲット・システム上で使用するソース定義ファイルの作成

次の構成では、ソース定義ファイルを出力として作成するDEFGENパラメータ・ファイルを使用します。この例は、Oracleデータベースの表を対象としています。

DEFSFILE C:\ggs\dirdef\record.def
USERIDALIAS ogg
TABLE acct.cust100, DEF custdef;
TABLE ord.*;
TABLE hr.*;

このDEFGEN構成の結果は次のとおりです。

  • 名前別の個別定義が、ordおよびhrスキーマのすべての表に対して作成されます。

  • acct.cust100に基づいてcustdefテンプレートが作成されます。データベースには、それぞれacct.cust100と同一の定義を持つ他のacct.cust*表が存在します。

表は、Replicatのパラメータ・ファイルで次のようにマップされます。

-- This is a simplified parameter file. Your requirements may vary.
REPLICAT acctrep
USERIDALIAS ogg
SOURCEDEFS c:\ggs\dirdef\record.def
MAP acct.cust*, TARGET acct.cust*, DEF custdef;
MAP ord.prod, TARGET ord.prod;
MAP ord.parts, TARGET ord.parts;
MAP hr.emp, TARGET hr.emp;
MAP hr.salary, TARGET hr.salary;

最初のMAP文のDEFオプションで指定したとおり、ワイルドカード指定acct.cust*に一致する表の定義はcustdefテンプレートから取得されます。

ソース・システム上で使用するターゲット定義ファイルの作成

同じ表のターゲット定義が必要な場合、その表をプライマリExtractまたはデータ・ポンプに対してマップできます。

  • ターゲットがEnscribeデータベースの場合、ソース定義のかわりにターゲット定義が必要です。

  • マッピングと変換を中間システムで実行する場合、ソース定義に加えてターゲット定義も必要です。

ターゲット定義ファイルを作成するためのDEFGEN構成は次のようになります。

DEFSFILE C:\ggs\dirdef\trecord.def
USERIDALIAS ogg
TABLE acct.cust100, DEF tcustdef;
TABLE ord.*;
TABLE hr.*;

注意:

ソース定義ファイルを作成するDEFGEN構成については、前の例を参照してください。

Extract構成は次のようになります。

-- This is a simplified parameter file. Your requirements may vary.
EXTRACT acctex
USERIDALIAS ogg
RMTHOSTOPTIONS sysb, MGRPORT 7890, ENCRYPT AES192 KEYNAME mykey1
ENCRYPTTRAIL AES192
RMTTRAIL $data.ggsdat.rt
SOURCEDEFS c:\ggs\dirdef\record.def
TARGETDEFS c:\ggs\dirdef\trecord.def
TABLE acct.cust*, TARGET acct.cust*, DEF custdef, TARGETDEF tcustdef;
TABLE ord.prod, TARGET ord.prod;
TABLE ord.parts, TARGET ord.parts;
TABLE hr.emp, TARGET hr.emp;
TABLE hr.salary, TARGET hr.salary;

この例では、acc.cust*表に対して、custdef (record.defファイルから)という名前のソース・テンプレートとtcustdef (trecord.defファイルから)という名前のターゲット・テンプレートが使用されます。ordおよびhrスキーマの表の定義は、表名に基づいた明示的な定義から取得されます(そのかわりに、ここでワイルドカード指定を使用することも可能です)。

ターゲット・システム上で使用する複数のソース定義ファイルの作成

これは、複数の定義ファイルの使用方法を示す単純な例です。パラメータの要件は、Oracle GoldenGateトポロジとデータベース・タイプによって異なる場合があります。

次に示すのは、1つ目のデータ定義ファイルを作成するDEFGENパラメータ・ファイルです。

DEFSFILE C:\ggs\dirdef\sales.def
USERIDALIAS ogg
TABLE ord.*;

次に示すのは、2つ目のデータ定義ファイルを作成するDEFGENパラメータ・ファイルです。ファイル名および表の指定が1つ目のものとは異なります。

DEFSFILE C:\ggs\dirdef\admin.def
USERIDALIAS ogg
TABLE hr.*;

1つ目の定義ファイルと2つ目の定義ファイルの表は、同じReplicatパラメータ・ファイルで次のようにマップされます。

REPLICAT acctrep
USERIDALIAS ogg
SOURCEDEFS c:\ggs\dirdef\sales.def
MAP ord.*, TARGET ord.*;
SOURCEDEFS c:\ggs\dirdef\admin.def
MAP hr.*, TARGET hr.*;

自動証跡ファイル・リカバリの使用方法

証跡リカバリ・プロセスには、場合によって、破損または欠落した証跡ファイルをOracle GoldenGateが自動的に再作成する機能があります。Extractポンプの再起動時にポンプが書き込んでいた最後の証跡が存在しない場合、Extractポンプはターゲット・システム上で欠落した証跡ファイルの再作成を試みます。これは、プロセスのチェックポイント情報と前回の有効な証跡ファイルを使用して自動的に実行されます。Replicatプロセスは、新しい証跡リカバリ機能によって再作成された証跡ファイル内に重複データがあると、そのデータを自動的にスキップします。このリカバリは、この順序番号以降にターゲット証跡が1つ以上あり、Extractポンプの読取り元のソース上に証跡ファイルがまだ存在する場合に発生します。

このプロセスは、ターゲット上で破損または無効な証跡ファイルを再作成する場合にも使用できます。破損した証跡ファイルとそれ以降の証跡ファイルを単純に削除してから、Extractポンプを再起動します。この新しい動作では、PURGEOLDEXTRACTS MINKEEPルールを適切に構成して、ターゲット環境の再構築に使用できるソースの証跡ファイルが必ず存在するようにしておくことをお薦めします。この機能では、ソースとターゲットの両方のサーバーでOracle GoldenGateリリース12.1.2.1.8以上が使用されている必要があります。NOFILTERDUPTRANSACTIONSを指定してReplicatを起動すると、Replicatのデフォルト動作が無効になり、ターゲット・データベースに適用済のトランザクションが再度適用される可能性があるため、それは実行しないでください。

Oracle GoldenGateを自己記述型の証跡ファイルに対して構成する方法

このリリースのデフォルト動作では、ソースのメタデータを格納し、ターゲットへ転送して、証跡ファイルごとにカプセル化します。つまり、各ファイルにメタデータ・レコードを追加することで、自己記述型のExtract証跡またはファイルが作成されます。メタデータ・レコードには次の2種類があります。

  • データベース定義レコード(DDR)

    DDRでは、キャラクタ・セットやタイムゾーンなど、特定のデータベースに関する情報を提供します。データベース定義レコードは、キャプチャ対象のプラガブル・データベースごとにデータベース・メタデータを格納するため、証跡に追加されます。プラガブル・データベースのすべての行変更レコードには、そのプラガブル・データベースに対応するDDRに基づいて、キャラクタとローカル・タイム・ゾーンのタイムスタンプが設定されています。DDRは、統合データベースと非統合データベースの両方に対して生成されます。

  • 表定義レコード(TDR)

    TDRは、表および表に含まれる列に関する定義の詳細を提供します。このレコードの内容は、定義ファイル(file_defおよびcol_defクラスにある情報のサブセット)に記載されている内容と似ています。各データベースは、自身のデータベース固有情報を各TDRに埋め込むことができます。TDRには完全な表定義が含まれ、これを使用して同じ表の様々な行変更レコードが記述されます。出力証跡が新しいファイルにロール・オーバーするか、ソース表定義が変更された場合に、新しいTDRが書き込まれます。

    TDRには、行変更レコードで表される表オブジェクトの定義が記述されていることに注意する必要があります。これはソースの表定義に似ていますが、まったく同じではありません。たとえば、列変換関数がソース列に適用されている場合、データベース内にあるその値のメタデータは、証跡ファイルに表示されるメタデータとは異なります。

自己記述型の証跡ファイル・フォーマットのメタデータ・レコードは、次のように動作します。

図は、自己記述型の証跡ファイル・フォーマットのメタデータ・レコードが動作する方法を示しています

自己記述型の証跡ファイルを使用すると、SOURCEDEFSASSUMETARGETDEFSが必要なくなるので、パラメータ・ファイルが簡素化され、異種レプリケーションの構成が簡単になり、次のことを実現します。

  • オブジェクト名の圧縮に伴う証跡ファイル・サイズの削減。

  • 異なるキャラクタ・セットとタイムゾーンを持つ複数のカタログから1つの証跡にデータを抽出する機能。

  • 3つ以上のOracleデータベース間でDDLレプリケーションを構成する機能。GETREPLICATSUPDATEMETADATAおよびNOTAGの各パラメータを使用する必要はありません。ソース表とターゲット表に類似性がない場合に、Oracle GoldenGateプロセスを同期することなく、DDLをレプリケートできます。

  • ソース定義ファイルの作成および管理が不要。

自己記述型の証跡の動作の理解

ソース表定義の変更時、新しいTDRをExtractのメモリーおよび証跡ファイルに更新するには、次の基準を満たす必要があります。

Oracleデータベース・ソース

統合Extract (Oracle Database 11.2.0.4以上および互換 = 11.2.0.4以上): ソース表でDDLが実行された後、更新されたメタデータ・レコードが統合Extractによってシームレスに生成されるため、手動の手順は必要ありません。DDLレプリケーションが有効かどうかに関係なく、このようになります。

クラシックExtract: DDL後に更新されたメタデータ・レコードをExtractによってシームレスに生成するには、Extractパラメータ・ファイルにDDLパラメータを含む必要があります。または、12.2より前のリリースでのように、Extractがすべての関連データベース変更を証跡に完全に出力して停止した後でのみ、DDLを実行する必要があります。DDLが実行された後、Extractを再起動する必要があります。以前のリリースと異なり、Replicatを停止し、DEFGENを使用してSOURCEDEFSを再生成する必要はありません。

異機種データベース・ソース

12.2より前のリリースでのように、Extractがすべての関連データベース変更を証跡に完全に出力して停止した後でのみ、DDLを実行する必要があります。DDLが実行された後、Extractを再起動する必要があります。以前のリリースと異なり、Replicatを停止し、DEFGENを使用してSOURCEDEFSを再生成する必要はありません。

内容は次のとおりです。

サポートに関する考慮事項

次のサポート情報を確認します。

  • 証跡ファイル・フォーマット:

    • メタデータ・レコードを含めるには、Oracle GoldenGate release 12c (12.2.0.1)以上であることが必要です。

    • 複数証跡構成で、古い証跡フォーマットを使用して12c (12.2.0.1)の証跡フォーマットは作成できません。

    • FORMATASCIIFORMATSQLおよびFORMATXML証跡にメタデータ・レコードを含めることはできません。

  • 既存の証跡ファイル構成では、表のメタデータの解決方法について、次に示す以前の抽出証跡と自己記述型の抽出証跡とを簡単に切り替えることができます。

    • USE_TRAILDEFS GLOBALSパラメータを使用して、すべてのポンプとReplicatを制御する方法。

    • SOURCEDEFSおよびASSUMETARGETDEFSOVERRIDEオプションを使用して、ポンプまたはReplicatを個別に制御する方法。これはお薦めされていません。

  • ログダンプでは、DEFGEN出力のようなメタデータ・レコードを表示します。

  • リバースは12c (12.2.0.1)証跡フォーマットではサポートされません。

  • 表がマップされている場合、生成されたTDRはソース表ではなくマップされた表の定義に基づきます。

  • 証跡のメタデータは、HP NonStop (Guardian)を除くすべてのデータベースでサポートされます。

自己記述型の証跡ファイルの使用方法

USE_TRAILDEFS GLOBALSパラメータでは、すべてのポンプとReplicatを有効化または無効化します。SOURCDEFSASSUMETARGETDEFおよびそのソース表定義に関連するこのコマンドの使用方法を次に示します。

図12-1 USE_TRAILDEFS | NOUSE_TRAILDEFSの使用方法

図は、SOURCDEFSおよびASSUMETARGETDEFに関連するコマンドの使用方法を表示し、そのソース表定義を説明しています。

自己記述型の証跡ファイルを使用する場合は、ASSUMETARGETDEFSおよびSOURCEDEFSの各パラメータとともにOVERRIDEオプションを使用する必要があります。

パラメータ・ファイルの例

次に、Extractパラメータ・ファイルの例を示します。

EXTRACT ext1
USERID tkggadmin@inst1, password tkggadmin
DDL include objname hr.*, include objname st_hr.*
RMTTRAIL $data/ggs12.2/a1
TABLE hr.*;
TABLE st_hr.salary, TARGET hr.salary, COLMAP  (USEDEFAULTS, 
						     ts = @GETENV('GGHEADER' , 'COMMITTIMESTAMP'));
RMTTRAIL $data/ggs12.2/a2, NO_OBJECTDEFS
TABLE orders.*;

次に、Replicatパラメータ・ファイルの例を示します。

REPLCAT rep1
USERID tkggadmin@inst2, password tkggadmin
DDLERROR default discard
DDL include all
DISCARDFILE ./dirrpt/rep1.dsc purge
MAP hr.*, TARGET hr.*;

同一のメタデータを想定するためのOracle GoldenGateの構成

注意:

この項は、自己記述型の証跡ファイルには適用されません。

ソース表とターゲット表が同一のメタデータ定義を持つ場合、Replicatのパラメータ・ファイルでASSUMETARGETDEFSパラメータを使用します。このパラメータは、Replicatに対して、ターゲットの定義がソースの定義と同じであると想定し、SQL文の作成時にその定義をレプリケートされたデータに適用するよう指示します。ソース表とターゲット表はあらゆる点で同一である必要があるため、変換処理は不要です(ただし、カタログ、コンテナ、表の所有者と名前のいずれかまたは両方が異なっていてもかまいません)。

表が同一とみなされるためのルール

ソースとターゲットの構造が同一であるためには、次の要件を満たす必要があります。

  • データベース・タイプが同じであること(すべてOracleであるなど)。

  • キャラクタ・セットおよびロケールが同じであること(american_AMERICAなど)。

  • 同じ数の列が含まれていること。

  • 列名が同一であること(該当する場合は大/小文字、空白、引用符も含む)。

  • データ型が同一であること。

  • 列の長さが同一であること。

  • 文字の列の列長さセマンティクス(バイトか文字か)が同じであること。

  • すべての列が同じ順序で定義されていること。

次の単純なReplicatパラメータ・ファイルは、ASSUMETARGETDEFSの使用方法を示しています。詳細は、『Oracle GoldenGateリファレンス』ASSUMETARGETDEFSに関する項を参照してください。

-- Specifies the group name.
REPLICAT acctrep
-- Specifies database login with an alias to a credential in the credential store.
USERIDALIAS ogg
-- Specifies a file for discard output.
DISCARDFILE ./dirrpt/backup/r_prod.dsc, APPEND
-- States that source and target definitions are identical.
ASSUMETARGETDEFS
-- Maps source tables to target tables.
MAP hq.product, TARGET region1.product;
MAP hq.price, TARGET region1.price;

ソースとターゲットの構造が異なる場合は、SOURCEDEFSパラメータを使用します。異なるメタデータを想定するためのOracle GoldenGateの構成を参照してください。ASSUMETARGETDEFSSOURCEDEFSは、同じパラメータ・ファイルで使用できません。

異なるメタデータを想定するためのOracle GoldenGateの構成

「表が同一とみなされるためのルール」のルールを満たさない場合、ソースとターゲットのメタデータ定義は同一であるとみなされません。ソース表とターゲット表の定義が異なる場合、Oracle GoldenGateでは、ある形式から別の形式への変換を実行する必要があります。変換を実行するには、Oracle GoldenGateが両方の定義セットを認識していることが必要です。

同じ定義と異なる定義の組合せを使用するためのOracle GoldenGateの構成

注意:

この項は、自己記述型の証跡ファイルには適用されません。

ASSUMETARGETDEFSSOURCEDEFSは、同じパラメータ・ファイルで使用できます。これが可能なのは、一部のソース表とターゲット表のペアの間では列のマッピングまたは変換を実行する必要があるが、その他の表のペアは同一である場合です。

次の例は、同じパラメータ・ファイルでSOURCEDEFSASSUMETARGETDEFSを使用する方法を示しています。この例は、acctordhrの各スキーマの表がSOURCEDEFSを必要とする前の例に基づいていますが、動的に作成されstockという名前がランダムな数値とともに付加される表を持つrptスキーマが追加されています。Oracle GoldenGateでDMLだけでなくDDLもレプリケートするには、ターゲット表が同一であることが必要です。その場合、ASSUMETARGETDEFSを指定する必要があります。

REPLICAT acctrep
USERIDALIAS ogg
SOURCEDEFS c:\ggs\dirdef\record.def
MAP acct.cust*, TARGET acct.cust*, DEF custdef;
MAP ord.prod, TARGET ord.prod;
MAP ord.parts, TARGET ord.parts;
MAP hr.emp, TARGET hr.emp;
MAP hr.salary, TARGET hr.salary;
ASSUMETARGETDEFS
MAP rpt.stock, TARGET rpt.stock;