処理でDDLが評価される仕組み
この項では、Oracle GoldenGateによるソースおよびターゲット・システムでのDDL文の処理方法について説明します。
Oracle GoldenGateパラメータの異なる基準が処理される順序を示し、ExtractとReplicatがそれぞれDDLを処理する方法の違いについて説明します。
Extract
-
Extractは、DDL文をキャプチャします。
-
Extractは、コメントがあれば、メインの文から分離します。
-
Extractは、
DDL
パラメータを検索します。(この例では、存在するものとします。) -
Extractは、
IGNOREREPLICATES
パラメータを検索します。これがあり、ReplicatがこのシステムでこのDDLを生成した場合、ExtractはそのDDL文を無視します。(この例では、このシステムではReplicat操作がないものとします。) -
Extractは、DDL文が
RENAME
かどうかを判断します。そうである場合、名前変更に内部的にフラグが付けられます。 -
Extractにより、ベース・オブジェクト名と導出オブジェクト名(存在する場合)が取得されます。
-
文が
RENAME
の場合、ExtractはこれをALTER TABLE RENAME
に変更します。 -
Extractは、
DDLOPTIONS REMOVECOMMENTS BEFORE
パラメータを検索します。これがある場合、ExtractはDDL文からコメントを削除しますが、INSTR
またはINSTRCOMMENTS
を使用するDDL INCLUDE
またはDDL EXCLUDE
に備えてコメントを格納します。 -
ExtractはDDLのスコープ(
MAPPED
、UNMAPPED
またはOTHER
)を判断します。-
操作とオブジェクト・タイプがマッピングに対してサポートされており、ベース・オブジェクト名や導出オブジェクト名(
RENAME
の場合)がTABLE
パラメータに含まれている場合、MAPPED
です。
-
操作とオブジェクト・タイプがマッピングに対してサポートされておらず、ベース・オブジェクト名や導出オブジェクト名(
RENAME
の場合)がTABLE
パラメータに含まれていない場合、UNMAPPED
です。 -
これ以外の場合、操作は
OTHER
と識別されます。
-
-
Extractは、
DDL
パラメータにINCLUDE
句とEXCLUDE
句があるかどうかをチェックし、これらの句のDDL
パラメータ基準を評価します。INCLUDE
またはEXCLUDE
がTRUE
と評価されるには、すべてのオプションがTRUE
と評価される必要があります。次のようになります。-
EXCLUDE
句がTRUE
と評価される場合、ExtractはDDL文を破棄し、別のDDL文を評価します。この場合、処理のステップが最初から始まります。 -
INCLUDE
句がTRUE
と評価される場合、またはDDL
パラメータにINCLUDE
句もEXCLUDE
句も含まれていない場合、ExtractはDDL操作を含めて、処理ロジックが続けられます。
-
-
Extractは、
DDLSUBST
パラメータを検索し、INCLUDE
句およびEXCLUDE
句を評価します。それらの句の基準が最終的にTRUE
になる場合、Extractは文字列の置換を行います。Extractは、パラメータ・ファイル内の各DDLSUBST
パラメータに対してDDL文を評価します。すべてのtrueのDDLSUBST
指定について、DDLSUBST
パラメータがファイル内にリストされている順に、Extractによって文字列の置換が行われます。 -
DDLSUBT
が処理されたため、ExtractはREMOVECOMMENTS AFTER
パラメータを検索します。これがある場合、ExtractはDDL文からコメントを削除します。 -
Extractは、
DDLOPTIONS ADDTRANDATA
を検索します。これがある場合、操作がCREATE TABLE
であれば、ExtractはALTER TABLE
name
ADD SUPPLEMENTAL LOG GROUP
コマンドを表に対して発行します。 -
Extractにより、DDL文が証跡に書き込まれます。
Replicat
-
Replicatは、DDL文を証跡から読み取ります。
-
Replicatは、コメントがあれば、メインの文から分離します。
-
Replicatは、
DDLOPTIONS REMOVECOMMENTS BEFORE
を検索します。これがある場合、ReplicatはDDL文からコメントを削除します。 -
Replicatは、DDL同期スコープを評価し、DDLが名前のマッピングに適しているかを判断します。そうでないものは、
OTHER
スコープです。 -
Replicatは、パラメータ・ファイルの
MAP
文を評価します。(証跡から読み取った)このDDLのソースのベース・オブジェクト名がいずれかのMAP
に含まれる場合、操作はMAPPED
スコープとしてマークされます。そうではない場合、UNMAPPED
スコープとしてマークされます。 -
Replicatは、ソースのベース・オブジェクト名を、
MAP
文のTARGET
句に指定されたベース・オブジェクト名で置き換えます。 -
導出オブジェクトがある場合、Replicatは
DDLOPTIONS MAPDERIVED
を検索します。これがある場合、Replicatは、ソースの導出名をMAP
文のターゲット導出名で置き換えます。 -
Replicatは、
DDL
パラメータにINCLUDE
句とEXCLUDE
句があるかどうかをチェックし、それらに含まれるDDL
パラメータ基準を評価します。INCLUDE
またはEXCLUDE
がTRUE
と評価されるには、すべてのオプションがTRUE
と評価される必要があります。次のようになります。-
EXCLUDE
句がTRUE
と評価される場合、ReplicatはDDL文を破棄し、別のDDL文の評価を始めます。この場合、処理のステップが最初から始まります。 -
INCLUDE
句がTRUE
と評価される場合、またはDDL
パラメータにINCLUDE
句もEXCLUDE
句も含まれていない場合、ReplicatはDDL操作を含めて、処理ロジックが続けられます。
-
-
Replicatは、
DDLSUBST
パラメータを検索し、INCLUDE
句およびEXCLUDE
句を評価します。それらの句のオプションが最終的にTRUE
になる場合、Replicatは文字列の置換を行います。Replicatは、パラメータ・ファイル内の各DDLSUBST
パラメータに対してDDL文を評価します。すべてのtrueのDDLSUBST
指定について、DDLSUBST
パラメータがファイル内にリストされている順に、Replicatによって文字列の置換が行われます。 -
DDLSUBT
が処理されたため、ReplicatはREMOVECOMMENTS AFTER
パラメータを検索します。これがある場合、ReplicatはDDL文からコメントを削除します。 -
Replicatは、ターゲット・データベースでDDL操作を実行します。
-
エラーがない場合は、Replicatにより次のDDL文が処理されます。エラーがある場合は、Replicatにより次のステップが実行されます。
-
Replicatは、Replicat
DDLERROR
パラメータのINCLUDE
ルールとEXCLUDE
ルールを、パラメータ・ファイルに出現する順に分析します。Replicatは、エラー・コードに対するルールを検出すると、指定されたエラー処理を適用します。検出されない場合は、DEFAULT
処理を適用します。 -
エラー処理によってDDL文が正常完了とならない場合、Replicatは、ルールでの指定に応じて異常終了、操作の無視、または操作の破棄のいずれかを実行します。
ノート:
同じソースに対して複数のターゲットがMAP
文にある場合、ターゲットごとに処理ロジックが実行されます。