サポートされる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サポート:
NOUSERID
パラメータを使用できます。
-
NUMBER
、BINARY FLOAT
、BINARY DOUBLE
および(論理)UROWID
-
DATE
およびTIMESTAMP
-
CHAR
、VARCHAR2
、LONG
、NCHAR
、NVARCHAR2
-
RAW
、LONG RAW
、CLOB
、NCLOB
、BLOB
、SECUREFILE
、BASICFILE
およびBFILE
(LOBサイズは4GBに制限されます) -
CLOB
、Binary
およびオブジェクト・リレーショナル(OR)として格納されるXML
列 -
XML CLOB
、XML
オブジェクト・リレーショナルおよび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_GEOMETRY
、SDO_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
の拡張(拡張またはLONGVARCHAR
)-
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データをテキストとして含む列は、任意のテキスト・データ型(VARCHAR2
、CLOB
)とIS JSON
制約を使用して宣言します。JSONデータ型は、XStream Out、XStream Inプロセスとともに、Oracle GoldenGate ExtractおよびReplicatプロセスでサポートされます。JSONサポートは、Replicatが異常終了しないようにインライン・テキストJSONを4Kに制限します。デフォルトでは、ExtractはネイティブJSON列をテキスト形式で書き込みますが、
binary_json_format
パラメータを使用すると、強制的にネイティブ形式で書き込むようになります。そのため、このパラメータはVARCHAR2
、NVARVAR2
、CLOB
、NCLOB
には設定しないでください。このパラメータは、デフォルトでは設定されていません。OracleからOracleにのみレプリケートする場合は、このパラメータを設定して、わずかなパフォーマンスの向上を得られます。また、str
などの列操作関数は、テキストJSONに対してのみサポートされます。 -
ターゲット・データベースのLOBデータ型に対する重複除外は解除することをお薦めします。
DEDUPLICATION
を有効なままにしておくと、適用側のパフォーマンスに重大な影響を与えます。
SQLEXECの制限事項
レプリケーション・サポートが存在する場合はいくつかありますが、SQLEXEC
を使用する場合などでは、処理に制限があります。次の表に、これらの制限事項を示します。
SQLEXECでサポートされているデータ型 | サポートの制限事項 |
---|---|
|
次の特殊な例:
|
|
サポート対象外 |
|
サポート対象外 |
ネイティブ |
|
|
サポート対象外 |
|
サポート対象外 |
階層対応表 |
サポート対象外 |
|
サポート対象外 |
|
サポート対象外 |
|
サポート対象外 |
IDENTITY列 |
サポート対象外 |
|
サポート対象外 |
ノート:
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 ZONE
がTZR
で表されてOracle GoldenGateが異常終了しないようにするには、ExtractパラメータTRANLOGOPTIONS
をINCLUDEREGIONIDWITHOFFSET
で使用して、TZR
で表されたTIMESTAMP WITH TIMEZONE
を、バージョン10g以降のOracleソースからそれより前のOracleターゲットに、またはOracleソースからOracle以外のターゲットにレプリケートします。これらのオプションにより、TZRで表されたTIMESTAMP WITH TIME ZONE
をサポートしないOracleバージョン、およびUTCオフセットで表されたタイムゾーンのみをサポートするデータベース・システムにレプリケートできます。
SOURCETIMEZONE
パラメータを使用して、バージョン12.1.2より前のExtractでキャプチャされるデータのソース・タイムゾーンを指定することもできます。これらのバージョンは、ソース・タイムゾーンを証跡に書き込みません。
ラージ・オブジェクト(LOB)
Extract LOBの構成ガイドラインを次に示します。
-
可能な場合、行外にラージ・オブジェクトを保存します。
-
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スキーマに対する変更のキャプチャをサポートしていません。
トピック:
DeleteSchemaのサポート
まず、ソース・データベースでDeleteSchema
を発行します。
Replicatでソース・データベースの変更が処理されたら、ターゲット・データベースでDeleteSchema
コールを発行します。
CopyEvolveのサポート
CopyEvolveプロシージャではスキーマを展開(変更)し、列を追加または削除することで表を変更できます。
CopyEvolveプロシージャも、XMLドキュメントが有効かどうかを変更するために使用できます。CopyEvolve
の処理には、調整が必要です。
ソース・データベースでCopyEvolve
を発行する場合、次の手順を使用します。
- ソース・データベースで独立した表への変更を停止します。
- プライマリまたはソースのデータベースで
CopyEvolve
を実行します。 - Replicatがそれらの表からのデータをすべてターゲット・データベースに適用し終えるのを待ちます。
- Replicatを停止します。
- ターゲット・データベースで
CopyEvolve
を適用します。 - Replicatを再起動します。
ユーザー定義型
Oracle Databaseの互換性がリリース12.0.0.0.0以上の場合、ExtractはREDOからデータをキャプチャします(フェッチなし)。詳細は、「フラッシュバック問合せの設定」を参照してください。
NCHAR
、NVARCHAR2
またはNCLOB
属性のユーザー定義型を含むソース・データをOracleターゲットにレプリケートする場合は、Replicatパラメータ・ファイルのHAVEUDTWITHNCHAR
パラメータを使用します。この型のデータが証跡で検出される場合は、HAVEUDTWITHNCHAR
によって、ReplicatがAL32UTF8
でOracleターゲットに接続されます(これは、これらの属性のいずれかがユーザー定義のデータ型に含まれる場合に必要です)。HAVEUDTWITHNCHAR
は、NLS_LANG
がターゲットでAL32UTF8
に設定される場合でも必要です。デフォルトのReplicatは、NLS_LANG
を無視し、データベースのネイティブ文字セットでOracle Databaseに接続します。ReplicatはOracle Call InterfaceのOCIString
オブジェクトを使用していますが、これはNCHAR
、NVARCHAR2
または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データ型およびオブジェクトの詳細」を参照してください。