COLMAP句でマップされる列の指定

COLMAPの構文は次のとおりです。

COLMAP ([USEDEFAULTS, ] target_column = source_expression)

この構文でtarget_columnはターゲット列の名前とsource_expressionです。source_expressionsの例を次に示します。

  • ソース列の名前(ORD_DATEなど)。

  • 数値定数(123など)。

  • 一重引用符で囲まれた文字列定数('ABCD'など)。

  • Oracle GoldenGate列変換関数を使用する式。COLMAP文内で、Oracle GoldenGate列変換関数のいずれかを使用して、マップされた列のデータを変換できます。たとえば:

    @STREXT (COL1, 1, 3)
     
  • BEFORE column_nameの使用例を示します。BEFORE ORD_DATE

  • AFTER column_nameの使用例を示します。AFTER ORD_DATE。列名がリストされている場合、これがデフォルトのオプションです。

列マッピングに、異なるデータベース・タイプに由来する、大/小文字が区別される複数の列が関係する場合、各列を、データベースに格納されているとおりに指定してください。

  • 大/小文字を区別するために二重引用符が必要になるデータベースの場合は、大/小文字が区別される列名を二重引用符で囲んで指定してください。

  • 大/小文字は区別されるが二重引用符が必要ないデータベースの場合は、列名を、データベースに格納されているとおりに指定してください。

次は、Oracleデータベースのターゲット列と、大/小文字が区別されるSQLサーバー・データベースのソース列との間でのマッピングを示しています。

COLMAP ("ColA" = ColA)

Oracle GoldenGateへの名前の指定の詳細は、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

文字セットとロケールが異なるデータベース間でソース列とターゲット列をマップする場合のグローバリゼーションに関する考慮事項については、「データ・マッピング時のグローバリゼーションに関する考慮事項」を参照してください。

COLMAPを使用してキー列に値をマップ(主キーの更新操作が発生)しないでください。Oracle GoldenGateがターゲット行の特定に使用するWHERE句では、キー列の正しい変更前イメージが使用されません。かわりに、変更後イメージが使用されます。このため、SQLEXEC文などのキー列に基づく関数を使用している場合、エラーになります。

列マッピングの制限

列マッピングの制限は次のとおりです。
  • LOB列は、FILTER列、WHERE列、またはCOLMAP文のsource_expressionとしては使用できません。LOB列は、BLOBCLOBNCLOBXMLType、ユーザー定義データ型、ネストした表、VARRAYsおよびその他の特別なデータ型です。

  • ソース列に4000バイトを超える値が含まれる場合、値はLOBレコードとして証跡に格納されるため、変換ルーチンでこの列を使用することはできません。たとえば、OracleのVARCHAR2(4000 CHAR)と日本語の文字セットは、それぞれの文字を3バイトとして保存します。これは、列の長さが12000バイトになり、Oracle GoldenGateではこの値がLOBフィールドとして格納されることを意味します。

  • Oracle GoldenGateが実行する完全な全SQL文のサイズは、4MBを超えます。たとえば、数千のVARCHAR2(4000)列を持つ表があり、それぞれに4000バイトを配置する場合、Oracle GoldenGateで実行される合計のSQL文が、最大サイズの4MBを超える可能性があります。