Oracle: DDLおよびDMLに対してサポートされているデータ型、オブジェクトおよび操作

Oracle Database上のOracle GoldenGateでサポートされているデータ型、オブジェクトおよび操作を確認します。

サポートされる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はサポートされません。

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データ型およびオブジェクトの詳細」を参照してください。

Oracle Databaseエディションのサポートの詳細

この項では、現行のOracle GoldenGateリリースでサポートされているOracleデータベース製品ファミリのデータベース・エディションについて説明します。

Oracle Database Express Edition (XE)は配信のみでサポートされ、統合Replicatや統合モードのパラレルReplicatなどの統合機能はサポートしていません。

Oracle Database Standard Edition 2 (SE2)はサポートされていますが、次の制限があります。
  • Extract、統合Replicatおよび統合モードのパラレルReplicatは、単一スレッドに制限されます。

Oracle Database Enterprise Edition (EE)には、完全なOracle GoldenGate機能を備えています。

Oracle Database Personal Edition (PE)は配信のみでサポートされ、統合または統合モードのパラレルReplicatなどの統合機能はサポートしていません。

Oracle DMLのオブジェクトと操作のサポートの詳細

DML操作の取得とレプリケーションについてOracle GoldenGateでサポートされるOracleオブジェクトと操作のリストを次に示します。

トピック:

マルチテナント・コンテナ・データベース

Oracle GoldenGateは、マルチテナント・コンテナ・データベースとの間でキャプチャと配信を実行します。「マルチテナント・コンテナ・データベースの構成」を参照してください。

アプリケーション・コンテナはサポートされていません。

表、ビューおよびマテリアライズド・ビュー

Oracle GoldenGateでは、標準の表、索引構成表、クラスタ化された表およびマテリアライズド・ビューに対して行われる次のDML操作がサポートされます。

  • INSERT

  • UPDATE

  • DELETE

  • 関連するトランザクション制御操作

ヒント:

DBA_GOLDENGATE_SUPPORT_MODEデータ・ディクショナリ・ビューを使用して、データベースの表に対するOracle GoldenGateキャプチャ・プロセス・サポートのレベルの情報を表示できます。DBA_GOLDENGATE_SUPPORT_MODEPLSQL値は、表がネイティブでサポートされるが、手続き型サプリメンタル・ロギングが必要なことを示します。詳細は、DBA_GOLDENGATE_SUPPORT_MODEに関する項を参照してください。主索引およびNULL以外の一意索引を持たないすべての表を表示する必要がある場合は、DBA_GOLDENGATE_NOT_UNIQUEを使用できます。詳細は、DBA_GOLDENGATE_NOT_UNIQUEに関する項を参照してください。

トピック:

標準の表のサポートの制限

これらの制限は、Extractに適用されます。

  • Oracle GoldenGateでは、任意の数の行を含む表をサポートします。

  • 行の長さは最大4MBです。列の変更前および変更後の両方イメージを処理範囲に含むようにOracle GoldenGateが構成されている場合、完全な変更前イメージと変更後イメージの長さの合計に適用される長さは、最大4MBになります。たとえば、行識別子として使用されている列でUPDATE操作が実行されると、変更前および変更後のイメージが処理され、合計で4MBを超えることはできません。変更前および変更後のイメージは、行識別子でない列にも必要ですが、競合の検出および解決(CDR)の比較列として使用されます。CLOBなど、4KBを超えるデータが許可される文字の列では、最初の4KBのデータのみが行内に格納され、4MBの最大行長が可能になります。BLOBなど、4KBを超えるデータが許可されるバイナリの列では、最初の8KBのデータが行内に格納され、4MBの最大行長が可能になります。

  • Oracle GoldenGateでは、データベースによってサポートされている表ごとに最大列数がサポートされています。

  • Oracle GoldenGateでは、データベースによってサポートされている最大列サイズがサポートされます。

  • Oracle GoldenGateでは、列に次のデータ型の1つが含まれていないかぎり、列が1つだけ含まれている表がサポートされています。

    • LOB

    • LONG

    • LONG VARCHAR

    • ネストされた表

    • ユーザー定義型(UDT)

    • VARRAY

    • XMLType

  • 未使用の列を含む表に対するレプリケートの前に、DBOPTIONS ALLOWUNUSEDCOLUMNを設定します。

  • Oracle GoldenGateでは、次のパーティション化属性を持つ表がサポートされます。

    • レンジ・パーティション化

    • ハッシュ・パーティション化および時間隔パーティション化

    • コンポジット・パーティション化

    • 仮想列ベースのパーティション化

    • 参照パーティション化

    • リスト・パーティション化

  • Oracle GoldenGateでは、仮想列を含む表がサポートされますが、これらの列に対する変更データのキャプチャも適用も行われません。データベースでは仮想列がトランザクション・ログに書き込まれず、Oracle Databaseでは仮想列に対するDMLが許可されません。同じ理由から、初期ロード・データは仮想列に適用できません。仮想列から非仮想列へのデータのマップは行えます。

  • Oracle GoldenGateでは、仮想列を含む一意索引を考慮しません。

  • Oracle GoldenGateでは、Oracle Exadataとの間のレプリケーションがサポートされます。Exadataハイブリッド列圧縮をサポートするには、ソース・データベース互換性が11.2.0.0.0以上に設定されている必要があります。

  • Oracle GoldenGateでは、Transparent Data Encryption(TDE)がサポートされます。

  • Oracle GoldenGateでは、DDLレプリケーション・サポートの一環として、あるいはDDLサポートとは無関係のスタンドアロン機能としてTRUNCATE文がサポートされます。

  • Oracle GoldenGateでは、XMLバイナリおよびXMLオブジェクト・リレーショナルのSQL*Loaderダイレクト・パス・インサートを除き、ダイレクト・ロードINSERTのキャプチャがサポートされます。サプリメンタル・ロギングが有効であることと、データベースがアーカイブ・ログ・モードであることが必要です。次の直接ロード方式がサポートされています。

    • /*+ APPEND */ヒント

    • /*+ PARALLEL */ヒント

    • DIRECT=TRUEを設定したSQLLDR

  • Oracle GoldenGateは、Extractの圧縮オブジェクトからのキャプチャを完全にサポートしています。

  • Oracle GoldenGateでは、XAおよびPDML分散トランザクションがサポートされます。

  • Oracle GoldenGateでは、FLASHBACK ARCHIVEを有効にした表でのDML操作がサポートされます。ただし、Oracle GoldenGateでは、FLASHBACK ARCHIVE句を含む表を作成するDDL、またはフラッシュバック・データ・アーカイブ自身を作成、変更または削除するDDLはサポートされません。

ビューのサポートの制限

これらの制限は、Extractに適用されます。

  • Extractが初期ロード・モードの場合、Oracle GoldenGateでビューからのキャプチャがサポートされます(REDOログではなく、ソース・ビューからの直接のキャプチャ)。

  • Oracle GoldenGateで、変更データはビューからキャプチャされませんが、ビューの基になる表からのキャプチャはサポートされます。

マテリアライズド・ビューのサポートの制限

マテリアライズド・ビューはExtractでサポートされますが、次の制限があります。

  • WITH ROWIDを使用して作成されるマテリアライズド・ビューはサポートされていません。

  • WITH ROWIDを使用してマテリアライズド・ビューのログを作成できます。

  • ソース表に主キーを設定しておく必要があります。

  • マテリアライズド・ビューの切捨てはサポートされていません。DELETE FROM文を使用できます。

  • マテリアライズド・ビューの全体リフレッシュのDML(DDLではない)はサポートされます。この機能のDDLサポートが必要な場合はOracle GoldenGateのサポート事例をオープンしてください。

  • Replicatの場合、Create MVコマンドにFOR UPDATE句を含める必要があります。

  • マテリアライズド・ビューまたは基礎となるベース表のいずれか(両方ではない)をレプリケートできます。

システム・パーティション化

システム・パーティション化は、名前付きパーティションによって表を作成できるようにするOracleデータベース機能です。システム・パーティション表は、データベースではメンテナンスされません。各DMLでは、行を配置するパーティションを指定する必要があります。ExtractおよびReplicatのすべてのモードで、システム・パーティション化がサポートされます。システム・パーティション表に関連する各証跡ファイルのレコード・ヘッダーには、パーティション名が含まれます。Oracle GoldenGate 21c以降では、システム・パーティション表に対してパーティション名レコード(PNR)が生成されます(そのレコードがPARTITIONパラメータに含まれている場合)。

Oracle GoldenGateリファレンスPARTITION | PARTITIONEXCLUDEを参照してください。

順序およびIDENTITY列

  • IDENTITY列はOracleデータベース18c以降でサポートされていて、Extract、統合モードのパラレルReplicatまたは統合Replicatが必要です。

  • Oracle GoldenGateは、1方向のアクティブ/パッシブ高可用性構成での順序値とIDENTITY列のレプリケーションをサポートしています。

  • Oracle GoldenGateによって、ターゲットの順序値が常にソースの順序値よりも大きくなります(または、キャッシュがゼロの場合、それらに等しくなります)。

トピック:

順序のサポートの制限

これらの制限は、Extractに適用されます。

  • Oracle GoldenGateは、アクティブ/アクティブ双方向構成での順序値のレプリケーションはサポートしません。

  • ソースおよびターゲットの順序のキャッシュ・サイズおよび増分間隔は、同一である必要があります。キャッシュは0を含む任意のサイズにできます(NOCACHE)。

  • 順序は、循環を有効または無効に設定できますが、ソース・データベースとターゲット・データベースの設定は同一にする必要があります。

  • デフォルトの順序列を持つ表は、Extractのレプリケーションから除外されます。

Oracle DMLでサポートされていないオブジェクトおよび操作

Extractでサポートされない追加のOracleオブジェクトまたは操作は、次のとおりです。

  • Oracle Database 12.2以降との互換性を確保するために、REFはネイティブでサポートされますが、主キー・ベースのREF (PKREF)はサポートされません

  • アクティブ/アクティブ双方向構成での順序値

  • データベース・リプレイ

  • EXTERNALとして作成された表

DML自動取得

Oracle GoldenGateでは、自動取得モードで次のDML操作がサポートされます。
  • TABLEEXCLUSIONパラメータがサポートされています。

  • TABLEパラメータがサポートされています。

  • Extractは、自動取得用にデータベースによって配信された表DMLレコードを証跡ファイルに書き込みます。

Oracle DDLのオブジェクトと操作のサポートの詳細

DDL操作の取得とレプリケーションについてOracle GoldenGateでサポートされるOracleオブジェクトと操作について学習します。

Oracle DDLでサポートされているオブジェクトおよび操作

DDLキャプチャのサポートは、データベース・ログマイニング・サーバーに統合されています。データベース・パラメータの互換性を11.2.0.4.0以降に設定する必要があります。Extractは次のようなパスワード・ベースの列の暗号化を含むDDLをサポートします。

  • CREATE TABLE t1 ( a number, b varchar2(32) ENCRYPT IDENTIFIED BY my_password);

  • ALTER TABLE t1 ADD COLUMN c varchar2(64) ENCRYPT IDENTIFIED BY my_password;

DDLサポートに関して、Extractに次の追加の文が適用されます。

  • Oracle GoldenGateのすべてのトポロジ構成は、Oracle DDLレプリケーションでサポートされています。

  • Oracle DDLのアクティブ/アクティブ(双方向)レプリケーションは、同一のメタデータが含まれている2つ(および2つだけ)のデータベース間でサポートされています。

  • Oracle GoldenGateでは、次のオブジェクトでDDLはサポートされます。

    • クラスタ

    • ディレクトリ

    • ファンクション

    • 索引

    • パッケージ

    • プロシージャ

    • 表領域

    • ロール

    • 順序

    • シノニム

    • トリガー

    • ビュー

    • マテリアライズド・ビュー

    • ユーザー

    • 非表示列

  • Oracle DDLのOracleエディション・ベース再定義(EBR)のデータベース・レプリケーションは、次のOracle Databaseオブジェクトに対するExtractでサポートされています。

    • ファンクション

    • ライブラリ

    • パッケージ(仕様と本体)

    • プロシージャ

    • シノニム

    • 型(仕様と本体)

    • ビュー

  • Oracle GoldenGate 21c以降、サイズが4MBを超えるDDLにレプリケーション・サポートが提供されます。

  • Oracle GoldenGateは、グローバル一時表(GTT) DDL操作をレプリケートできるように、Extractへのこの操作の表示をサポートしています。この操作はデフォルトでは設定されていないため、有効にするにはDDLOPTIONSパラメータを設定する必要があります。

  • Oracle GoldenGateは、NOUSERIDおよびTRANLOGOPTIONS GETCTASDMLとともに使用するディクショナリをサポートしています。これは、Extractは、ディクショナリ・オブジェクトを問い合せることなく、LogMinerディクショナリからオブジェクト・メタデータを受信することを意味します。Oracle GoldenGateは、ソース・データベースの互換性パラメータが11.2.0.4以降のときに自動的にディクショナリを使用します。

    Oracle GoldenGate release 12.2.xでディクショナリと証跡フォーマットを使用するときには、Extractはマイニング・データベースにLogminerパッチが適用されることを必要とします(Oracle Databaseのリリースが12.1.0.2よりも前の場合)。

  • Oracle GoldenGateは、Extractでの非表示列のレプリケーションをサポートしています。証跡フォーマット・リリース12.2が必要です。ReplicatではMAPINVISIBLECOLUMNSパラメータを指定するか、MAPパラメータのCOLMAP句で非表示列に明示的にマップする必要があります。

    SOURCEDEFSまたはTARGETDEFSを使用する場合、Oracle表の定義ファイルのメタデータ・フォーマットは証跡フォーマットと互換性があることが必要です。メタデータ・フォーマット12.2は証跡フォーマット12.2と互換性があり、12.2より前のメタデータ・フォーマットは12.2より前の証跡フォーマットと互換性があります。定義ファイルのメタデータ・フォーマットを指定するには、DEFGENで定義ファイルを生成するときに、DEFSFILEパラメータのFORMAT RELEASEオプションを使用します。

  • ネームスペース・コンテキストを作成するDDL文(CREATE CONTEXT)は、Extractによってキャプチャされ、Replicatによって適用されます。

  • ポンプ・モードのExtractは、次のDDLオプションをサポートしています。

    • DDL INCLUDE ALL

    • DDL EXCLUDE ALL

    • DDL EXCLUDE OBJNAME

    DDL EXCLUDESOURCECATALOGおよびALLCATALOGオプションもサポートされています。

    DDLパラメータが指定されていない場合、すべてのDDLが証跡に書き込まれます。DDL EXCLUDE OBJNAMEが指定されている場合は、オブジェクト所有者が除外ルールに一致しないと証跡に書き込まれます。

  • Oracleデータベース21c以降では、Oracle GoldenGateによってレプリケートされないDML/DDLの変更のブロックをサポートするために、次のDDLを使用できます。

    ALTER DATABASE [ENABLE | DISABLE] goldengate blocking mode;
    Oracle GoldenGateのブロック・モードが有効な場合、表でsupport_mode NONEを使用して、サポートされていないOracle PL/SQL文を実行するDMLは、次のエラーで失敗します。
    ORA-26981: "operation was unsupported during Oracle GoldenGate blocking mode"
    Oracleデータベース21cの場合は、次の機能により、Oracle GoldenGateで表にsupport_mode NONEが設定されます。
    • ADT列または型指定表の属性としてのBFILE

    • スカラーのない表

    • OLAP AW$表

    • シャード・キュー表

    • ソートされたハッシュ・クラスタ表

    • リレーショナル表のADT属性に対する主キー制約

    • 長い(4000バイトを超える) raw/varcharに対する主キー/一意キー制約

    • V$DATABASE列、Goldengate_Blocking_Modeを問い合せると、現在のブロック・モードのステータスを確認できます。

  • DDL自動取得モードの場合:
    • ExtractはTABLEおよびTABLEEXCLUDEパラメータに基づいてDDLを取得するため、DDL INCLUDE MAPPEDにのみ関連します。

    • 自動取得できるのは、表関連のDDLのみです。

    • 表レベルで自動取得を有効にするDDL:
      CREATE/ALTER TABLE … ENABLE LOGICAL REPLICATION ALLKEYS;
      または
      CREATE/ALTER TABLE … ENABLE LOGICAL REPLICATION ALLOW NOVALIDATE KEYS;

    Oracle DatabaseユーティリティガイドのOracle GoldenGateのサプリメンタル・ロギングの取得方法を参照してください。

  • 次の操作は、パーティション関連のDDLとパーティション・メンテナンス操作でサポートされます。

    • パーティションの削除:

      同じ名前でパーティションが再作成されると、新しいオブジェクト番号が付与されます。内部キャッシュは、パーティション削除DDLの処理時に、領域の消費量が最小限になるようにクリアされます。

    • パーティションの切捨て:

      パーティション名とオブジェクト番号は同じままです。元表のオブジェクト・バージョンは同じままです。

    • パーティション名の変更:

      パーティション・オブジェクト番号は同じままですが、新しい名前が付与されます。元表のオブジェクト・バージョンがバンプされます。メモリー内の名前キャッシュは、このDDLが確認されると無効になり、次のDML時に再移入されます。特定のパーティション・オブジェクト番号が重要かどうかを格納するキャッシュは、新しいパーティション名がフィルタ処理済からフィルタ処理なしに切り替わる可能性があるため、再評価する必要もあります。

    • パーティションの交換:

      パーティション内のデータを表内のデータと交換します(またはその逆に交換します)。交換されるパーティションのオブジェクト番号は変更されません。データ・オブジェクト番号は変更されますが、Extractでは使用しません。パーティション自体は引き続き同じ表に属します。

    • パーティションのマージ:

      1つ以上のパーティションを新しいパーティションにマージします。DDLによって新しいパーティションが作成され、マージ元のパーティションが削除されます。メモリー内のキャッシュは領域を節約するためにクリアする必要があり、ユーザーはフィルタ・ルールが新しく作成されたパーティションに対して適切なことを確認する必要があります。

    • パーティションの分割:

      分割されるパーティションには元の名前とオブジェクト番号が保持され、分割されたデータのための新しいパーティションが作成されます。ユーザーは、パーティションのフィルタ・ルールが新しく作成されたパーティションに適していることを確認する必要があります。

    • パーティションの結合:

      ハッシュ・パーティション表のパーティション数を減らします。結合される特定のパーティションはデータベースにより選択され、コンテンツの再配布後に削除されます。残存するパーティションでは、同じ名前とオブジェクト番号が維持されます。内部キャッシュは、領域の消費量が最小限になるようにクリアする必要があります。

    • パーティションの変更:

      リスト・パーティションの値の追加または削除とは別に、パーティションのデフォルトの属性と実際の属性を変更します。すべての変更で、パーティション名とオブジェクト番号は維持されます。

    • パーティションの移動:

      パーティション・データが新しい表領域に移動されます。パーティション名と番号は同じままです。

    • 表の再定義:

      dbms_redefinitionは、暫定表を使用して表をパーティション化するために使用できます。パーティションは暫定表に作成され、finish_redef操作後に表の名前がスワップされます。暫定表に作成されたパーティションでは、表のスワップ時に名前とオブジェクト番号が保持されます。パーティションは元表に属するようになっているため、Extractフィルタ・キャッシュはfinish_redef時に再評価する必要があります。ユーザーはフィルタ・ルールが適切なことを確認する必要があります。

    • 再定義パーティション:

      表を再定義する場合、パーティションは元の表から暫定表に引き継がれます。たとえば、元の表にはUSER表領域に存在するパーティションがあり、暫定表がパーティションなしで作成され、その表がNEW表領域に存在する場合について考えてみます。この場合、finish_redef操作後に、表がスワップされたときにもパーティションは引き続きUSER表領域に存在します。再定義パーティションによって、パーティションは暫定表のNEW表領域に移動できるようになります。パーティションの名前とオブジェクト番号は維持されます。

    • システム生成のパーティション名:

      ハッシュ・パーティションや分割パーティションなどの操作に対してパーティションが自動的に作成される場合、パーティション名の形式はSYS_P sequence valueになります。同様に、サブパーティションの形式はSYS_SUBP sequence valueになります。フィルタ・ルールに準拠するDMLを除外する前に、このパーティション名の変更をお薦めします。

サポートされていないOracle DDLのオブジェクトおよび操作

ここでは、Oracle DDLでサポートされていないオブジェクトと操作を示します。

除外されるオブジェクト

次の名前または名前の接頭辞はOracle予約済とみなされ、Oracle GoldenGate DDL構成から除外する必要があります。これらの名前を含むオブジェクトはOracle GoldenGateによって無視されます。

除外されるスキーマ:

  "ANONYMOUS", // HTTP access to XDB
  "APPQOSSYS", // QOS system user
  "AUDSYS", // audit super user
  "BI", // Business Intelligence
  "CTXSYS", // Text
  "DBSNMP", // SNMP agent for OEM
  "DIP", // Directory Integration Platform
  "DMSYS", // Data Mining
  "DVF", // Database Vault
  "DVSYS", // Database Vault
  "EXDSYS", // External ODCI System User
  "EXFSYS", // Expression Filter
  "GSMADMIN_INTERNAL", // Global Service Manager
  "GSMCATUSER", // Global Service Manager
  "GSMUSER", // Global Service Manager
  "LBACSYS", // Label Security
  "MDSYS", // Spatial
  "MGMT_VIEW", // OEM Database Control
  "MDDATA",
  "MTSSYS", // MS Transaction Server
  "ODM", // Data Mining
  "ODM_MTR", // Data Mining Repository
  "OJVMSYS", // Java Policy SRO Schema
  "OLAPSYS", // OLAP catalogs
  "ORACLE_OCM", // Oracle Configuration Manager User
  "ORDDATA", // Intermedia
  "ORDPLUGINS", // Intermedia
  "ORDSYS", // Intermedia
  "OUTLN", // Outlines (Plan Stability)
  "SI_INFORMTN_SCHEMA", // SQL/MM Still Image
  "SPATIAL_CSW_ADMIN", // Spatial Catalog Services for Web
  "SPATIAL_CSW_ADMIN_USR",
  "SPATIAL_WFS_ADMIN", // Spatial Web Feature Service
  "SPATIAL_WFS_ADMIN_USR",
  "SYS",
  "SYSBACKUP",
  "SYSDG",
  "SYSKM",
  "SYSMAN", // Adminstrator OEM
  "SYSTEM",
  "TSMSYS", // Transparent Session Migration
  "WKPROXY", // Ultrasearch
  "WKSYS", // Ultrasearch
  "WK_TEST",
  "WMSYS", // Workspace Manager
  "XDB", // XML DB
  "XS$NULL",
  "XTISYS", // Time Index

特別なスキーマ:

  "AURORA$JIS$UTILITY$", // JSERV
  "AURORA$ORB$UNAUTHENTICATED", // JSERV
  "DSSYS", // Dynamic Services Secured Web Service
  "OSE$HTTP$ADMIN", // JSERV
  "PERFSTAT", // STATSPACK
  "REPADMIN",
  "TRACESVR" // Trace server for OEM

除外される表は次のとおりです(*ワイルドカードは任意のスキーマまたは文字を示します)。

  "*.AQ$*", // advanced queues
  "*.DR$*$*", // oracle text
  "*.M*_*$$", // Spatial index
  "*.MLOG$*", // materialized views
  "*.OGGQT$*",
  "*.OGG$*", // AQ OGG queue table
  "*.ET$*", // Data Pump external tables
  "*.RUPD$*", // materialized views
  "*.SYS_C*", // constraints
  "*.MDR*_*$", // Spatial Sequence and Table
  "*.SYS_IMPORT_TABLE*",
  "*.CMP*$*", // space management, rdbms >= 12.1
  "*.DBMS_TABCOMP_TEMP_*", // space management, rdbms < 12.1
  "*.MDXT_*$*" // Spatial extended statistics tables
サポートされていないその他のDDL

Oracle GoldenGateでは次のものはサポートされていません。

  • ネストされた表に対するDDL。

  • IDENTITY列に対するDDL。

  • ALTER DATABASEおよび ALTER SYSTEM (これらはDDLとはみなされません)。ディクショナリを使用している場合は、ALTER DATABASE DEFAULT EDITIONおよびALTER PLUGGABLE DATABASE DEFAULT EDITIONをレプリケートできます。その他のALTER [PLUGABLE] DATABASEコマンドはすべて無視されます。

  • スタンバイ・データベースに対するDDL。

  • データベース・リンクDDL。

  • FLASHBACK ARCHIVE句を含む表を作成するDDL、またはフラッシュバック・データ・アーカイブ自身を作成、変更または削除するDDL。FLASHBACK ARCHIVEを含む表に対するDMLはサポートされません。

  • 一部のDDLは、システム生成のオブジェクト名を生成します。システム生成オブジェクトの名前は、異なる2つのデータベース間で常に同じであるとはかぎりません。そのため、システム生成名を持つオブジェクトに対するDDL操作は、その名前がターゲットで完全に同じ場合にのみ実行する必要があります。