サポートされるOracleデータ型およびオブジェクトの詳細

データベース内で、ディクショナリ・ビューDBA_GOLDENGATE_SUPPORT_MODEを使用して、サポートされるオブジェクトに関する情報を取得できます。レプリケーション・サポートには様々なタイプがあります。
  • REDOからのキャプチャによるサポート

  • プロシージャ・レプリケーション・サポート

ほとんどのデータ型がサポートされいます(SUPPORT_MODE=FULL)。つまり、Oracle GoldenGateではREDO以外の変更がキャプチャされるということです。一部の珍しいケースで情報を取得できない場合もありますが、データベースへの接続を使用して情報をフェッチできます(SUPPORT_MODE=ID KEY)。

Oracle GoldenGate 21c以降では、DBA_GOLDENGATE_SUPPORT_MODE.SUPPORT_MODE= NONEが設定されていると、サポートされていない表に対するDMLは自動的にスキップされます。ただし、そうしたオブジェクトに対するDDLは、DDL INCLUDE/EXCLUDEの設定に基づいてキャプチャされます。DDLサポートについては、「Oracle DDLのオブジェクトと操作のサポートの詳細」を参照してください。

ID KEYでサポートされる表では、これらの表をサポートするためにフェッチする、ソース・データベースまたはADGスタンバイ・データベースへの接続が必要です。ダウンストリームExtractを使用するときには、NOUSERIDの場合、FETCHUSERIDまたはFETCHUSERIDALIASの接続を指定する必要があります。

他の変更は、Extractの追加パラメータ設定を必要とするプロシージャ・レプリケーション(SUPPORT_MODE=PLSQL)でレプリケートできます。ネイティブ・サポートがなく、フェッチによるサポートもなく、プロシージャ・レプリケーションのサポートもない、まれなケースでは、Oracle GoldenGateはサポートされません。

ソース・データベースのDBA_GOLDENGATE_SUPPORT_MODEの他に、ターゲット側のDBA_GOLDENGATE_NOT_UNIQUEディクショナリ・ビューを確認する必要があります。一意性がなく、バインドされていないdata_types (BAD_COLUMN='Y')が設定された表がある場合は、表レコードを一意に識別できないため、論理レプリケーションには使用できません。

Oracleのデータ型、オブジェクト、および操作の詳細なサポート情報は、次のとおりです:

ExtractのREDOサポート:

次のデータ型についてはREDOログから直接のキャプチャが可能で、フェッチは不要です。ダウンストリーム・マイニング構成で使用する場合は、NOUSERIDパラメータを使用できます。
  • NUMBERBINARY FLOATBINARY DOUBLEおよび(論理) UROWID

  • DATEおよびTIMESTAMP

  • CHARVARCHAR2LONGNCHARNVARCHAR2

  • RAWLONG RAWCLOBNCLOBBLOBSECUREFILEBASICFILEおよびBFILE (LOBサイズは4GBに制限されます)

  • CLOBBinaryおよびオブジェクト・リレーショナル(OR)として格納されるXML

  • XML CLOBXMLオブジェクト・リレーショナルおよびXML Binaryとして格納されるXMLType列およびXMLType

  • DTYJSONコードで識別されるネイティブJSONデータ型。

  • ソース・データベースの互換性が12.0.0.0.0以上であるBYTEセマンティクスのUDT (ユーザー定義または抽象データ型)

  • ソース・データベースの互換性が12.0.0.0.0以上のANYDATAデータ型

  • 階層対応表は、ソース・データベースの互換性が12.2.0.0.0以上でプロシージャ・レプリケーションが有効なOracle XMLデータベース・リポジトリで管理されます。

  • ソース・データベースの互換性が12.2.0.0.0以上のREF

  • ソース・データベースの互換性が12.0.0.0.0以上のDICOM

  • ソース・データベースの互換性が12.2.0.0.0以上でプロシージャ・レプリケーションが有効な場合のSDO _TOPO_GEOMETRYSDO_GEORASTERまたはST_GEOMETRY

  • ソース・データベースの互換性が18.1.0.0.0以上のIDENTITY列

  • ソース・データベースの互換性が19.1.0.0.0以上のSDO_RDF_TRIPLE_S

データベースからフェッチされるデータ型

ここに示すデータ型は、REDOログで読み取ることができません。Extractプロセスで処理中にフェッチする必要があります。そうしたレコードのフェッチ方法は、FETCHOPTIONSパラメータを使用して制御します。

REDOデータを生成するデータベースと、Oracle GoldenGateがデータのフェッチに使用するデータベースは同じにすることをお薦めします。ただし、これが不可能な場合は、フェッチ・データベースとして、読取り専用でオープンしているActive Data Guardスタンバイ・データベースを使用することもできます。

SECUREFILE LOB

  • DBMS_LOB.FRAGMENT_*プロシージャで変更済

  • NOLOGGING LOB

  • ソース・データベースのリリースが12gR2未満である重複解除LOB

オブジェクト表には次の属性があります。
  • ネストされた表

  • SDO_TOPO_GEOMETRY

  • SDO_GEORASTER

フェッチでは、UDTのANYDATA列はサポートされません。

その他の考慮事項

  • NUMBERは、Oracleで許可されている最大サイズまで指定できます。浮動小数点数の範囲および精度のサポートは、ホスト・マシンによって異なります。通常は有効桁数が16桁の精度ですが、データベースのドキュメントで想定されている近似について確認してください。Oracle GoldenGateでは、サポートされる精度を超える値は丸められるか切り捨てられます。

  • 非論理的なUROWID列は、Extractによって識別されます。警告メッセージはレポート・ファイルに生成されます。列情報は証跡レコードに含まれません。レコードのそれ以外のサポートされているデータ型はすべて証跡レコードの一部であり、レプリケートされます。

  • 初期ロード、SQLEXEC、または列をデータベースからのみフェッチできる操作についてのTZR (リージョンID)で表されたTIMESTAMP WITH TIME ZONE。これらの場合、列が選択されると、ソース・データベースによってリージョンIDが時間オフセットに変換されます。Replicatは、タイムスタンプを日付と時間のデータとして、時間オフセット値とともにターゲット・データベースに適用します。

  • 4Kから32KへのVARCHARの拡張(拡張またはLONG VARCHAR)
    • 32KのLONG列は次として使用することはできません:
      • 行識別子

      • キー索引または一意索引の一部

      • TABLEパラメータまたはMAPパラメータのKEYCOLS句内

      • CDRの解決列(競合検出および解決)

    • 拡張VARCHAR列が一意索引または制約の一部の場合、この表へのダイレクト・パス挿入により、Replicatが異常終了して警告が表示されることがあります。ALL_INDEXESまたはALL_IND_COLUMNS (一意索引)、あるいはALL_CONS_COLUMNSまたはALL_CONSTRAINTS (一意制約)をチェックして、拡張VARCHARによって異常終了が発生したことを確認します。拡張VARCHARを確認したら、索引を一時的に削除にするか、制約を無効にできます。
      • 一意索引: DROP INDEX index_name;

      • 一意制約: ALTER TABLE table_name MODIFY CONSTRAINT constraint_name DISABLE;

  • BFILE列はロケータをレプリケートします。データベースの外部にあるサーバー・ファイル・システムのファイルは、レプリケートされません
  • マルチバイト文字データ:ソースとターゲットのデータベースが、レプリケートされる表と順序のスキーマ定義に関して論理上同一である必要があります。変換、フィルタリングおよび他の操作は使用できません。

  • 2つのデータベース間の文字セットは、次のいずれかである必要があります。

    • ソースとターゲットで同一

    • 同等。同じ文字セットではありませんが、同じ文字のセットを含みます

    • ターゲットがソースのスーパーセット

    マルチバイト・データは、バイトまたは文字のセマンティクスで使用できます。

  • UDTには、異なるソース・スキーマとターゲット・スキーマを含めることができます。オブジェクトの列または行内に値が含まれているUDTは、TABLE文またはMAP文のフィルタ基準で使用したり、Oracle GoldenGateの列変換関数の入力または出力、SQLEXECまたは他の組込みデータ操作ツールとして使用することはできません。Oracleの同様のソースおよびターゲットにのみ、サポートが提供されます。

    CREATE TABLE as SELECT (CTAS)文を使用して作成されたオブジェクト表を完全にサポートするには、CTAS文からDMLをキャプチャするようにExtractを構成する必要があります。Oracleのオブジェクト表は、サポートされているターゲット・データベースのOracle以外のオブジェクト表にマップできます。

  • XML列タイプは、フィルタリングおよび操作では使用できません。TABLE文またはMAP文でCOLMAP句を使用して、オブジェクトのXML表現を文字列にマップできます。

    XMLデータで作業する場合は、AL32UTF8文字セットをデータベース文字セットにすることをお薦めします。これにより、Oracle GoldenGateによってソースからターゲットに正しく変換されます。DDLレプリケーションが有効な場合、Oracle GoldenGateでCTAS文をレプリケートし、基となるターゲット表からのデータの選択を可能にします。TRANLOGOPTIONS GETCTASDMLパラメータが設定されている場合は、OIDが保持されます。XMLType表の場合、行オブジェクトIDがソースとターゲットの間で一致する必要があります。

  • JSONデータ型の場合、DTYJSONは、問合せおよび領域効率、プラットフォーム間の転送性のためにバイナリJSON形式で格納されます。JSONデータをテキストとして含む列は、任意のテキスト・データ型(VARCHAR2CLOB)とIS JSON制約を使用して宣言します。JSONデータ型は、XStream Out、XStream Inプロセスとともに、Oracle GoldenGate ExtractおよびReplicatプロセスでサポートされます。JSONサポートは、Replicatが異常終了しないようにインライン・テキストJSONを4Kに制限します。

    デフォルトでは、ExtractはネイティブJSON列をテキスト形式で書き込みますが、binary_json_formatパラメータを使用すると、強制的にネイティブ形式で書き込むようになります。そのため、このパラメータはVARCHAR2NVARVAR2CLOBNCLOBには設定しないでください。このパラメータは、デフォルトでは設定されていません。OracleからOracleにのみレプリケートする場合は、このパラメータを設定して、わずかなパフォーマンスの向上を得られます。また、strなどの列操作関数は、テキストJSONに対してのみサポートされます。

  • ターゲット・データベースのLOBデータ型に対する重複除外は解除することをお薦めします。DEDUPLICATIONを有効なままにしておくと、適用側のパフォーマンスに重大な影響を与えます。

SQLEXECの制限事項

レプリケーション・サポートが存在する場合はいくつかありますが、SQLEXECを使用する場合などでは、処理に制限があります。次の表に、これらの制限事項を示します。

SQLEXECでサポートされているデータ型 サポートの制限事項

NUMBER, BINARY FLOAT, BINARY DOUBLE UROWID

次の特殊な例:
  • XMLタイプ

  • UDT

  • オブジェクト表

  • コレクションまたはネストされた表

(N)CHAR(N) VARCHAR2 LONGRAWLONG RAW (N)CLOBCLOBBLOBSECUREFILEBASICFILEおよびBFILE

サポート対象外

XML列、XMLType

サポート対象外

ネイティブJSONデータ型

VARCHAR2NVARCHAR2CLOBNCLOBは、Extractのパラメータbinary_json_formatを設定している場合はサポートされません。

UDT

サポート対象外

ANYDATA

サポート対象外

階層対応表

サポート対象外

RET

サポート対象外

DICOM

サポート対象外

SDO_TOPO_GEOMETRYSDO_GEORASTER

サポート対象外

IDENTITY列

サポート対象外

SDO_RDF_TRIPLE_S

サポート対象外

ノート:

DBMS_LOG.FRAGMENTを使用して更新されたSECUREFILE LOB、またはNOLOGGINGに設定されたSECUREFILE LOBは、REDOから読み取られるかわりにフェッチされます。

ノート:

この表にリストされていないデータ型は、通常の製品と同じ制限がありますが完全にSQLEXECでサポートされます。

特別なデータ型の処理

Extract用の様々なOracleデータ型に対する特別な構成要件を次に示します。

マルチバイト文字型

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

TIMESTAMP

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

TIMESTAMP WITH TIME ZONETZRで表されてOracle GoldenGateが異常終了しないようにするには、ExtractパラメータTRANLOGOPTIONSINCLUDEREGIONIDWITHOFFSETで使用して、TZRで表されたTIMESTAMP WITH TIMEZONEを、バージョン10g以降のOracleソースからそれより前のOracleターゲットに、またはOracleソースからOracle以外のターゲットにレプリケートします。これらのオプションにより、TZRで表されたTIMESTAMP WITH TIME ZONEをサポートしないOracleバージョン、およびUTCオフセットで表されたタイムゾーンのみをサポートするデータベース・システムにレプリケートできます。

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

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

Extract LOBの構成ガイドラインを次に示します。

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

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

XML

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

  • ExtractはXMLスキーマへの変更のキャプチャをサポートしませんが、スキーマを展開してから、再同期しなくてもそのレプリケーションを再開できます。XMLスキーマの変更のサポートを参照してください。

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

トピック:

XMLスキーマの変更のサポート

XMLスキーマの変更のサポートについて学習します。Extractは、XMLスキーマに対する変更のキャプチャをサポートしていません。

トピック:

RegisterSchemaのサポート

RegisterSchemaは、XMLスキーマを参照する表を作成する前に、ソースとターゲットの両方のデータベースでスキーマ定義を登録することで処理されます。

DeleteSchemaのサポート

まず、ソース・データベースでDeleteSchemaを発行します。

Replicatでソース・データベースの変更が処理されたら、ターゲット・データベースでDeleteSchemaコールを発行します。

CopyEvolveのサポート

CopyEvolveプロシージャではスキーマを展開(変更)し、列を追加または削除することで表を変更できます。

CopyEvolveプロシージャも、XMLドキュメントが有効かどうかを変更するために使用できます。CopyEvolveの処理には、調整が必要です。

ソース・データベースでCopyEvolveを発行する場合、次の手順を使用します。

  1. ソース・データベースで独立した表への変更を停止します。
  2. プライマリまたはソースのデータベースでCopyEvolveを実行します。
  3. Replicatがそれらの表からのデータをすべてターゲット・データベースに適用し終えるのを待ちます。
  4. Replicatを停止します。
  5. ターゲット・データベースでCopyEvolveを適用します。
  6. Replicatを再起動します。

ユーザー定義型

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パラメータの前に存在する必要があります。

サポートされていないOracleデータ型

Oracle GoldenGateでは、次のデータ型はサポートされません。

  • +12:00から-12:00の範囲外の時間オフセット値。Oracle GoldenGateでは、+12:00から-12:00の間の時間オフセット値をサポートしています。

  • 単一列のみが含まれ、その列が次のいずれかである表。

    • UDT

    • LOB (CLOB、NCLOB、BLOB、BFILE)

    • XMLType列

    • データが32KBを超えるVARCHAR2 (MAX)

  • LOB、UDT、XMLまたはXMLType列があり、次のいずれかがない表。

    • 主キー

    • 一意制約または一意索引を持つスカラー列

    すべてのスカラー列の組合せで一意性が保証されない表はサポートされません。

  • 次のXML特性を持つ表:
    • XML属性で構成された主キー制約を持つ表

    • オブジェクト識別子に基づく主キー(PKOID)を持つXMLType表。

    • 行オブジェクト識別子(OID)がソースとターゲット間で一致しないXMLType表。

    • 空のCTAS文で作成されるXMLType表。

    • XMLスキーマに変更が加えられるXMLスキーマベースのXMLType表および列(XMLスキーマは、dbms_xmlパッケージを使用してソース・データベースおよびターゲット・データベースに登録する必要があります)。

    • XMLTypeを更新するSET値の全体の長さは、新しいコンテンツと他の操作、XQueryバインド値を含めて32Kを超えます。

    • XML-バイナリおよびXML-ORのSQL*Loaderダイレクト・パス・インサート。

  • 次のUDT特性を持つ表:

    • CFILEまたはOPAQUEを含むUDT (XMLTypeを除く)

    • バイナリまたは印刷できない文字が含まれているCHAR属性とVARCHAR属性を含むUDT

    • RMTTASKパラメータを使用するUDT

  • 次の条件を持つUDTおよびネストされた表:

    • CHAR、NVARCHAR2またはNCLOB属性を持つネストされた表のUDT。

    • UDTにCLOB、BLOB、拡張(32k) VARCHAR2またはRAW属性を含むネストされた表。

    • 他のUDTの一部である、ネストされた表の列/属性。

  • ネストされた表のデータを更新する際には、ネストされた表が含まれている行を同時に更新する必要があります。それ以外の場合、サポートはありません。

  • VARRAYSとネストされた表をフェッチすると、変更箇所のみでなく、毎回、列の内容全体がフェッチされます。それ以外の場合、サポートはありません。

  • オブジェクト表には次の属性があります。

    • ネストされた表

    • SDO_TOPO_GEOMETRY

    • SDO_GEORASTER

その他の除外については、「サポートされるOracleデータ型およびオブジェクトの詳細」を参照してください。