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