処理でDDLが評価される仕組み

この項では、Oracle GoldenGateによるソースおよびターゲット・システムでのDDL文の処理方法について説明します。

Oracle GoldenGateパラメータの異なる基準が処理される順序を示し、ExtractとReplicatがそれぞれDDLを処理する方法の違いについて説明します。

Extract

  1. Extractは、DDL文をキャプチャします。

  2. Extractは、コメントがあれば、メインの文から分離します。

  3. Extractは、DDLパラメータを検索します。(この例では、存在するものとします。)

  4. Extractは、IGNOREREPLICATESパラメータを検索します。これがあり、ReplicatがこのシステムでこのDDLを生成した場合、ExtractはそのDDL文を無視します。(この例では、このシステムではReplicat操作がないものとします。)

  5. Extractは、DDL文がRENAMEかどうかを判断します。そうである場合、名前変更に内部的にフラグが付けられます。

  6. Extractにより、ベース・オブジェクト名と導出オブジェクト名(存在する場合)が取得されます。

  7. 文がRENAMEの場合、ExtractはこれをALTER TABLE RENAMEに変更します。

  8. Extractは、DDLOPTIONS REMOVECOMMENTS BEFOREパラメータを検索します。これがある場合、ExtractはDDL文からコメントを削除しますが、INSTRまたはINSTRCOMMENTSを使用するDDL INCLUDEまたはDDL EXCLUDEに備えてコメントを格納します。

  9. ExtractはDDLのスコープ(MAPPEDUNMAPPEDまたはOTHER)を判断します。

    • 操作とオブジェクト・タイプがマッピングに対してサポートされており、ベース・オブジェクト名や導出オブジェクト名(RENAMEの場合)がTABLEパラメータに含まれている場合、MAPPEDです。

    • 操作とオブジェクト・タイプがマッピングに対してサポートされておらず、ベース・オブジェクト名や導出オブジェクト名(RENAMEの場合)がTABLEパラメータに含まれていない場合、UNMAPPEDです。

    • これ以外の場合、操作はOTHERと識別されます。

  10. Extractは、DDLパラメータにINCLUDE句とEXCLUDE句があるかどうかをチェックし、これらの句のDDLパラメータ基準を評価します。INCLUDEまたはEXCLUDETRUEと評価されるには、すべてのオプションがTRUEと評価される必要があります。次のようになります。

    • EXCLUDE句がTRUEと評価される場合、ExtractはDDL文を破棄し、別のDDL文を評価します。この場合、処理のステップが最初から始まります。

    • INCLUDE句がTRUEと評価される場合、またはDDLパラメータにINCLUDE句もEXCLUDE句も含まれていない場合、ExtractはDDL操作を含めて、処理ロジックが続けられます。

  11. Extractは、DDLSUBSTパラメータを検索し、INCLUDE句およびEXCLUDE句を評価します。それらの句の基準が最終的にTRUEになる場合、Extractは文字列の置換を行います。Extractは、パラメータ・ファイル内の各DDLSUBSTパラメータに対してDDL文を評価します。すべてのtrueのDDLSUBST指定について、DDLSUBSTパラメータがファイル内にリストされている順に、Extractによって文字列の置換が行われます。

  12. DDLSUBTが処理されたため、ExtractはREMOVECOMMENTS AFTERパラメータを検索します。これがある場合、ExtractはDDL文からコメントを削除します。

  13. Extractは、DDLOPTIONS ADDTRANDATAを検索します。これがある場合、操作がCREATE TABLEであれば、ExtractはALTER TABLE name ADD SUPPLEMENTAL LOG GROUPコマンドを表に対して発行します。

  14. Extractにより、DDL文が証跡に書き込まれます。

Replicat

  1. Replicatは、DDL文を証跡から読み取ります。

  2. Replicatは、コメントがあれば、メインの文から分離します。

  3. Replicatは、DDLOPTIONS REMOVECOMMENTS BEFOREを検索します。これがある場合、ReplicatはDDL文からコメントを削除します。

  4. Replicatは、DDL同期スコープを評価し、DDLが名前のマッピングに適しているかを判断します。そうでないものは、OTHERスコープです。

  5. Replicatは、パラメータ・ファイルのMAP文を評価します。(証跡から読み取った)このDDLのソースのベース・オブジェクト名がいずれかのMAPに含まれる場合、操作はMAPPEDスコープとしてマークされます。そうではない場合、UNMAPPEDスコープとしてマークされます。

  6. Replicatは、ソースのベース・オブジェクト名を、MAP文のTARGET句に指定されたベース・オブジェクト名で置き換えます。

  7. 導出オブジェクトがある場合、ReplicatはDDLOPTIONS MAPDERIVEDを検索します。これがある場合、Replicatは、ソースの導出名をMAP文のターゲット導出名で置き換えます。

  8. Replicatは、DDLパラメータにINCLUDE句とEXCLUDE句があるかどうかをチェックし、それらに含まれるDDLパラメータ基準を評価します。INCLUDEまたはEXCLUDETRUEと評価されるには、すべてのオプションがTRUEと評価される必要があります。次のようになります。

    • EXCLUDE句がTRUEと評価される場合、ReplicatはDDL文を破棄し、別のDDL文の評価を始めます。この場合、処理のステップが最初から始まります。

    • INCLUDE句がTRUEと評価される場合、またはDDLパラメータにINCLUDE句もEXCLUDE句も含まれていない場合、ReplicatはDDL操作を含めて、処理ロジックが続けられます。

  9. Replicatは、DDLSUBSTパラメータを検索し、INCLUDE句およびEXCLUDE句を評価します。それらの句のオプションが最終的にTRUEになる場合、Replicatは文字列の置換を行います。Replicatは、パラメータ・ファイル内の各DDLSUBSTパラメータに対してDDL文を評価します。すべてのtrueのDDLSUBST指定について、DDLSUBSTパラメータがファイル内にリストされている順に、Replicatによって文字列の置換が行われます。

  10. DDLSUBTが処理されたため、ReplicatはREMOVECOMMENTS AFTERパラメータを検索します。これがある場合、ReplicatはDDL文からコメントを削除します。

  11. Replicatは、ターゲット・データベースでDDL操作を実行します。

  12. エラーがない場合は、Replicatにより次のDDL文が処理されます。エラーがある場合は、Replicatにより次のステップが実行されます。

  13. Replicatは、Replicat DDLERRORパラメータのINCLUDEルールとEXCLUDEルールを、パラメータ・ファイルに出現する順に分析します。Replicatは、エラー・コードに対するルールを検出すると、指定されたエラー処理を適用します。検出されない場合は、DEFAULT処理を適用します。

  14. エラー処理によってDDL文が正常完了とならない場合、Replicatは、ルールでの指定に応じて異常終了、操作の無視、または操作の破棄のいずれかを実行します。

ノート:

同じソースに対して複数のターゲットがMAP文にある場合、ターゲットごとに処理ロジックが実行されます。