2 Oracle GoldenGateのグローバリゼーション・サポート

この章では、ネイティブ言語のエンコーディングでのデータ処理を可能にする、Oracle GoldenGateのグローバリゼーション・サポートについて説明します。

内容は次のとおりです。

2.1 文字セットの維持

データをネイティブ言語のエンコーディングで処理するために、Oracle GoldenGateでは、データベースの文字セットとオペレーティング・システム・ロケール(該当する場合)が考慮されます。

内容は次のとおりです。

2.1.1 データベース構造メタデータの文字セット

Oracle GoldenGateでは、カタログ、スキーマ、表および列の名前は、ソース・データベースおよびターゲット・データベースの文字セット・エンコーディングに従って、ネイティブ言語で処理されます。この処理は、パラメータ・ファイルとコマンド・インタプリタにも適用されます(それらはオペレーティング・システム・ロケールに従って処理されます)。これらのオブジェクトは、クライアント・インタフェース全般、コンソールおよびファイルに、ローカライズ形式で表示されます。

2.1.2 文字型データの文字セット

Oracle GoldenGateの適用プロセス(Replicat)では、文字型の列にデータが含まれている場合に、ある文字セットから別の文字セットへのデータ変換がサポートされます。文字セット変換のサポートは、TABLE文またはMAP文のCOLMAP句またはUSEDEFAULTS句で実行される列から列へのマッピングに限定されています。列変換関数、SQLEXECまたはTOKENS機能ではサポートされません。

文字セット、文字セット間の変換、およびデータ・マッピングの詳細は、データのマッピングおよび操作を参照してください。

2.1.3 データベース接続の文字セット

ExtractプロセスおよびReplicatプロセスは、データベースへの接続時にセッション文字セットを使用します。Oracle Databaseの場合、セッション文字セットはExtractとReplicatの両方で設定されるデータベース文字セットと同様に設定されています。MySQLの場合、セッション文字セットはSOURCEDBおよびTARGETDBSESSIONCHARSETオプション、またはGLOBALSファイルでグローバルに設定されるSESSIONCHARSETパラメータから取得されます。その他のデータベース・タイプの場合は、プログラムによって取得されます。また、Oracle GoldenGateプロセスは、Oracle GoldenGateとデータベースの間の通信やデータ転送(SQL問合せ、フェッチ、データ適用など)にもセッション文字セットを使用します。

2.1.4 テキスト入力およびテキスト出力の文字セット

Oracle GoldenGateでは、次の場所で、ホスト・オペレーティング・システムのデフォルト文字セットでのテキスト入力およびテキスト出力がサポートされます。

  • コンソール

  • コマンドラインでの入力および出力

  • FORMATASCIIFORMATSQLFORMATXMLの各パラメータ、パラメータ・ファイル、データ定義ファイル、エラー・ログ、プロセス・レポート、破棄ファイルなどのテキスト・ファイル、およびOracle GoldenGateユーザーがOracle GoldenGate環境の構成、実行、監視に使用するその他の判読可能なファイル

プラットフォームで、必要な文字セットがオペレーティング・システムのデフォルトとしてサポートされていない場合は、次のパラメータを使用して文字セットを指定できます。

  • CHARSETパラメータ(プロセスがパラメータ・ファイルの読取りに使用する文字セットを指定する場合)

  • DEFSFILEパラメータのCHARSETオプション(特定の文字セットでデータ定義ファイルを生成する場合)

GGSCIコマンド・コンソールは、キーボードとOBEYファイルの入力、およびコンソール出力に関して、常にローカル・オペレーティング・システムの文字セットで動作します。

2.2 Unicodeおよびネイティブ文字の使用

Oracle GoldenGateでは、Unicodeで、またはWindows、UNIXおよびLinuxオペレーティング・システムのネイティブ文字エンコーディングで文字を表すためのエスケープ・シーケンスの使用がサポートされています。エスケープ・シーケンスは、オペレーティング・システムで必要な文字がサポートされていない場合に、または必要に応じて他の目的で使用できます。このサポートの詳細は、エスケープ・シーケンスのサポートを参照してください。

2.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によってサポートされます。