プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成
12c (12.2.0.1)
E70107-04
目次へ移動
目次

前
次

10.3 特別なデータ型の処理

この項は、特に断りのないかぎり、Extractがクラシック・キャプチャ・モードで動作する場合も統合キャプチャ・モードで動作する場合も該当します。次のOracleデータ型に対する特別な構成要件について説明します。

10.3.1 マルチバイト・キャラクタ型

マルチバイト・キャラクタは、サポートされている文字セットの一部としてサポートされます。Oracleソース・データベースのセマンティクス設定がBYTEで、Oracleターゲットの設定がCHARの場合、構成でReplicatパラメータSOURCEDEFSを使用し、DEFGENユーティリティによって生成された定義ファイルをターゲットに配置します。これらの手順は、ソースおよびターゲットのデータ定義が同一であるかどうかにかかわらず、セマンティクス内の差異のサポートに必要です。Replicatでは、定義ファイルを参照して固定サイズの文字列のサイズ上限を決定します。

キャラクタ・セットのサポートの詳細は、Oracle GoldenGateの管理for Windows and UNIXを参照してください。

SOURCEDEFSおよびDEFGENユーティリティの詳細は、『Oracle GoldenGateの管理for Windows and UNIX』を参照してください。

10.3.2 Oracle Spatialオブジェクト

SDO_GEORASTERオブジェクト型の列が1つ以上含まれている表をOracleソースからOracleターゲットにレプリケートするには、それらが正しく処理されるよう、次の手順に従ってOracle GoldenGateを構成します。

  1. GeoRaster表とそれに関連するラスター・データ表に対するTABLE文とMAP文を作成します。
  2. SDO_GEORASTERデータ型のMETADATA属性の値が1MBを超える場合、XMLBUFSIZEオプションを指定してDBOPTIONSパラメータを使用し、SDO_GEORASTERデータ型の埋込みSYS.XMLTYPE属性を格納するメモリー・バッファのサイズを大きくします。バッファが小さすぎる場合、Extractは異常終了します。XMLBUFSIZEの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
  3. ターゲットのGeoRaster表とSpatialデータの整合性を確実にするには、トリガーをソースとターゲットの両方で有効にしておきます。MAPパラメータのREPERRORオプションを使用して、トリガーをターゲットで有効にしているために発生する「ORA-01403 No data found」エラーを処理します。ソースのGeoRaster表の行を削除すると、トリガーによって削除がラスター・データ表にカスケードされます。両方の削除がレプリケートされます。レプリケートされた親削除によって、ターゲット上でカスケードされた(子)削除がトリガーされます。レプリケートされた子削除が行われると、冗長になりエラーが発生します。REPERRORを使用するには、次のようにします。
    • ラスター・データ表が含まれている各MAP文でREPERROR文を使用します。

    • Oracleエラー1403をSQLエラーとして使用します。

    • いずれかの応答オプションをエラー処理に使用します。

ターゲットのGeoRaster表のアクティブなトリガーによって生じるラスター表のエラーを処理する適切な方法は、DISCARDを指定してREPERRORを使用し、エラーをトリガーした、カスケードされた削除を破棄します。ターゲットのGeoRaster表のトリガーによって、ラスター・データ表に対して削除が実行されるため、レプリケートされた削除は不要です。

MAP geo.st_rdt, TARGET geo.st_rdt, REPERROR (-1403, DISCARD) ;

エラー処理の監査証跡を保持する必要がある場合は、REPERROREXCEPTIONを使用して例外処理を呼び出します。この場合、例外表を作成して、次のようにソースのラスター・ターゲット表に2回マップします。

  • 1回目は実際のターゲットのラスター・データ表(1403エラーを処理するREPERRORを使用)。

  • 2回目は例外表で、COLMAP句を使用して1403エラーとその他の関連する情報をキャプチャします。

例外表の使用の詳細は、Oracle GoldenGateの管理for Windows and UNIXを参照してください。

REPERRORオプションの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

10.3.3 TIMESTAMP

タイムスタンプ・データをレプリケートするには、次のガイドラインに従います。

  1. TZRで表されたTIMESTAMP WITH TIME ZONEでOracle GoldenGateが異常終了しないようにするには、次のいずれかを指定してExtractパラメータTRANLOGOPTIONSを使用します。
    • INCLUDEREGIONID: TZRで表されたTIMESTAMP WITH TIME ZONEを、Oracleソースから同じバージョン以降のOracleターゲットにレプリケートします。

    • INCLUDEREGIONIDWITHOFFSET: TZRで表されたTIMESTAMP WITH TIMEZONEを、v10g以降のOracleソースから、それより前のOracleターゲットに、またはOracleソースからOracle以外のターゲットにレプリケートします。

    これらのオプションにより、TZRで表されたTIMESTAMP WITH TIME ZONEをサポートしないOracleバージョン、およびUTCオフセットで表されたタイムゾーンのみをサポートするデータベース・システムにレプリケートすることができます。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

  2. Oracle Databaseは、TIMESTAMP WITH LOCAL TIME ZONEデータを受信先のデータベース(Oracle GoldenGateの場合はターゲット・データベース)のローカルのタイムゾーンに正規化します。適用するデータの元のタイム・スタンプを保持するために、Replicatはセッションをソース・データベースのタイムゾーンに設定します。Replicatパラメータ・ファイルのSOURCETIMEZONEを使用することで、このデフォルトをオーバーライドして、異なるタイムゾーンを指定できます。Replicatでセッションをターゲット・タイムゾーンに強制的に設定させるには、PRESERVETARGETTIMEZONEパラメータを使用します。

    SOURCETIMEZONEパラメータを使用して、バージョン12.1.2より前のExtractでキャプチャされるデータのソース・タイムゾーンを指定することもできます。これらのバージョンは、ソース・タイムゾーンを証跡に書き込みません。

10.3.4 ラージ・オブジェクト(LOB)

クラシックと統合の両方のキャプチャ・モードでのLOBに対する構成ガイドラインは、次のとおりです。

  1. 可能な場合、行外にラージ・オブジェクトを保存します。

  2. (統合キャプチャのみ該当)統合キャプチャでは、REDOログからLOBがキャプチャされます。LOBドキュメントに対するUPDATE操作では、LOBの変更された部分のみが記録されます。変更された部分のみが記録される場合にLOBドキュメント全体の証跡への書込みを強制するには、Extractパラメータ・ファイルでFETCHPARTIALLOBオプションを指定してTRANLOGOPTIONSパラメータを使用します。Extractは、ログマイニング・サーバーから部分的なLOBコンテンツを受信すると、部分的なLOBを処理するのではなく、LOBイメージ全体をフェッチします。Oracle以外のターゲットにレプリケートする場合、またはLOBイメージ全体が必要なその他の場合にこのオプションを使用します。TRANLOGOPTIONSの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

10.3.5 XML

Oracle GoldenGate制約内でXMLを使用するためのツールは、次のとおりです。

  • クラシックと統合の両キャプチャ・モードで、XMLスキーマへの変更のキャプチャはサポートされませんが、スキーマを展開して、再同期をしなくてもそのレプリケーションを再開できます。「XMLスキーマの変更のサポート」を参照してください。

  • (統合キャプチャのみ該当)統合キャプチャでは、REDOログからXMLがキャプチャされます。XMLドキュメントのUPDATE操作では、OBJECT RELATIONALまたはBINARYとして格納されている場合、XMLの変更された部分のみが記録されます。変更された部分のみが記録される場合にXMLドキュメント全体の証跡への書込みを強制するには、Extractパラメータ・ファイルでFETCHPARTIALXMLオプションを指定してTRANLOGOPTIONSパラメータを使用します。Extractは、ログマイニング・サーバーから部分的なXMLコンテンツを受信すると、部分的なXMLを処理するのではなく、XMLドキュメント全体をフェッチします。Oracle以外のターゲットにレプリケートする場合、またはXMLイメージ全体が必要なその他の場合にこのオプションを使用します。TRANLOGOPTIONSの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

10.3.6 ユーザー定義型

Oracle Databaseがリリース12.0.0.0.0以上と互換性がある場合、統合ExtractはREDOからデータをキャプチャします(フェッチなし)。詳細は、「フラッシュバック問合せの設定」を参照してください。

NCHARNVARCHAR2またはNCLOB属性のユーザー定義型を含むソース・データをOracleターゲットにレプリケートする場合は、Replicatパラメータ・ファイルのHAVEUDTWITHNCHARパラメータを使用します。この型のデータが証跡で検出される場合は、HAVEUDTWITHNCHARによって、ReplicatがAL32UTF8でOracleターゲットに接続されます(これは、これらの属性のいずれかがユーザー定義のデータ型に含まれる場合に必要です)。HAVEUDTWITHNCHARは、NLS_LANGがターゲットでAL32UTF8に設定される場合でも必要です。デフォルトのReplicatは、NLS_LANGを無視し、データベースのネイティブ・キャラクタ・セットでOracle Databaseに接続します。ReplicatはOracle Call InterfaceのOCIStringオブジェクトを使用していますが、これはNCHARNVARCHAR2またはNCLOB属性をサポートしないため、ReplicatがそれらをCHARとしてバインドする必要があります。このような状況では、AL32UTF8のターゲットに接続することでデータの損失を防ぎます。HAVEUDTWITHNCHARは、パラメータ・ファイルのUSERIDまたはUSERIDALIASパラメータの前に存在する必要があります。