F.3 文字マップ変換

CHARMAP機能は、Oracle GoldenGate 12.1.2.1.0以上で使用できます。CHARMAPを使用すると、Oracle GoldenGate Replicatで文字マッピング・ファイルおよび設定を指定して、文字コード・ポイント・マッピングをオーバーライドできます。この機能は、ターゲット・データベースの文字セットがソース・データベースの文字セットのサブセットである場合に便利です。

ノート:

同じ文字セットに対して文字セット変換を有効にすると、パフォーマンスが低下する可能性があります。
Oracle DatabaseからTeradataへのレプリケーションの例を次に示します。
  • ソースの証跡ファイルはUTF-8です。

  • Teradataのターゲット・データベースはUTF-16です。

Teradataにデータを適用する場合、Teradataで6706 The string contains an untranslatable character.エラーが発生します。Teradataでは、U+FFFDなどの有効なUnicodeコード・ポイントがすべて実装されているわけではありません。Oracle Databaseの無効なUnicodeのデフォルト置換文字はTeradataで認識されません。

エラーを回避するには、次のステップを実行して、TeradataデータベースでサポートされていないUnicode文字をサポートされているUnicode文字に変換するようにCHARMAPを設定します。
  1. UTF-16からUTF-16へのマップなど、ソースとターゲットが同じ文字セットである場合は、厳密な文字検証を有効にする必要があります。次のパラメータをReplicatパラメータに追加します。
      REPLACEBADCHAR FORCECHECK
  2. 文字マッピング・オーバーライド定義ファイルを作成します。次の例では、ソースはOracle AL32UTF8列で、ターゲットはUTF-16で、U+FFFDをU+0020空白にマップします。
    SOURCECHARSET   AL32UTF8    
    TARGETCHARSET   UTF-16    
    \xef\xbf\xbd     \x20
  3. Replicatパラメータ・ファイルで前述のオーバーライド定義ファイルを指定します。次の例では、ステップ2のファイルが./dirprm/fffd.mapとして保存されます。データベース接続のログイン時に変換が行われる場合は、MAPパラメータの前(できればloginパラメータの前)にパラメータを追加します。

    CHARMAP ./dirprm/fffd.map

CHARMAPは、Oracle GoldenGate for DB2 LUW、iSeriesおよびDB2 z/OSなど、サポートされているすべてのデータベースでOracle GoldenGate Replicatによってサポートされます。