| Oracle® Fusion Middleware Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成 12c (12.2.0.1) E70107-04 |
|
![]() 前 |
![]() 次 |
次に、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により、INCLUDEおよびEXCLUDE句のDDLパラメータが確認され、それらの句の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により、INCLUDEおよびEXCLUDE句のDDLパラメータが確認され、それらに含まれる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文に同じソースに対する複数のターゲットが存在する場合は、それぞれに対して処理ロジックが実行されます。