フェッチオプション
有効な対象
Extract
摘要
FETCHOPTIONSパラメータでは、Oracle GoldenGateが次の状況でデータをフェッチする方法の特定の側面を制御します。
-
Extractが更新操作を再構築するために十分な情報がトランザクション・レコードに含まれていない場合。
-
TABLE文のMISSINGCOLS句の結果として、Oracle GoldenGateが列値をフェッチする必要がある。
FETCHOPTIONSは表に固有です。1つのFETCHOPTIONS文は、別のFETCHOPTIONS文が見つかるまで、後続のすべてのTABLE文に適用されます。
ほとんどのインストールでは、デフォルトのフェッチ・プロパティで十分に機能します。
デフォルト
紛失した行を無視し、処理を継続する
構文
FETCHOPTIONS
[, FETCHPKUPDATECOLS]
[, MISSINGCOLS]
[, INCONSISTENTROW <action>]
[, MAXFETCHSTATEMENTS <number>]
[, MISSINGROW <action>]
[, NOFETCH]
[, SUPPRESSDUPLICATES]
[, USEKEY | NOUSEKEY]
[, USELATESTVERSION | NOUSELATESTVERSION]
[, USESNAPSHOT | NOUSESNAPSHOT]
[, USEROWID | NOUSEROWID]
FETCHPKUPDATECOLS
主キーが更新された場合、使用できないすべての列をフェッチします。デフォルトでは、このオプションはオフです。オフにすると、有効化されている他のFETCHOPTIONSオプションに従って、列のフェッチが実行されます。
オンにすると、主キー列への更新中のみ有効になります。結果は、TABLE文で(*)を使用したときと同じです。LOB列はフェッチに含まれます。
HANDLECOLLISIONS.を使用する場合は、このパラメータを使用します。Replicatが欠落している更新を検出すると、更新を挿入に変換するためにすべての列が使用可能になります。
MISSINGCOLS
更新操作および削除操作(LOB列を含む)から欠落している列をすべてフェッチします。このオプションはOracle AI Databaseにのみ有効です。データをフェッチするための追加の問合せにより、データベースとExtractのパフォーマンスに悪影響を与える可能性があります。特に、大きなLOB値をフェッチして証跡に書き込む必要がある場合は大きくなります。
このパラメータの設定は、次のパラメータの設定と同じです。
MISSINGCOLS(*) in the TABLE statement
NOCOMPRESSDELETES FETCHMISSINGCOLS
GETUPDATEBEFORES
NOCOMPRESSUPDATES
LOGALLSUPCOLS
ただし、FETCHOPTIONS MISSINGCOLSと設定すると、次のパラメータと競合します。
FETCHOPTIONS NOFETCH
FETCHOPTIONS FETCHPKUPDATECOLS
COMPRESSDELETES
COMPRESSUPDATES
GETUPDATEBEFORES
LOGALLSUPCOLS
INCONSISTENTROW <action>
列データが行IDで正常にフェッチされましたが、キーが一致しなかったことを示します。行IDが再利用されたか、この操作の後(およびフェッチの前)に主キー更新が行われました。
<action>には、次のいずれかを指定できます。
ALLOW
状況を許可して処理を継続します。
IGNORE
状況を無視して処理を継続します。これがデフォルト値です。
REPORT
状況と行のコンテンツを破棄ファイルにレポートしますが、部分的な行の処理を継続します。
DISCARD
データを破棄し、部分的な行は処理しません。
ABEND
データを破棄し、処理を中止します。
MAXFETCHSTATEMENTS <number>
Extractがソース・データベースから行データをフェッチするために使用可能な、許可される準備済問合せの最大数を制御します。フェッチされたデータは、トランザクション・ログ・レコードから論理SQL文を構築するために使用できる情報が不足しているときに使用されます。問合せは必要に応じて準備およびキャッシュされます。MAXFETCHSTATEMENTSで指定した値に到達すると、最も古い問合せが最も新しい問合せに置き換えられます。このパラメータの値は、Extractがフェッチ問合せのみのために保持しているオープンされているカーソル数を制御します。Extractは、ストアド・プロシージャに必要なカーソルなど、他の目的のために追加のカーソルを使用できます。このパラメータは、Oracle AI Databaseにのみ有効です。デフォルトは100文です。データベースが、ここで指定するカーソル数の他に、別のアプリケーションおよびプロセスが使用するカーソルもサポートできることを確認してください。
MISSINGROW <action>
Oracle GoldenGateがフェッチする行を特定できない場合にレスポンスを指定し、行(変更された値)の一部のみでも処理できるようにします。通常、行が特定できない理由は、変更レコードが作成されてからフェッチがトリガーされるまでの間に行が削除されてしまっているか、必要な行イメージが指定されているUNDO保存期間以前のものであったためです。
<action>には、次のいずれかを指定できます。
ALLOW
状況を許可して処理を継続します。これがデフォルト値です。
IGNORE
状況を無視して処理を継続します。
REPORT
状況と行のコンテンツを破棄ファイルにレポートしますが、部分的な行の処理を継続します。
DISCARD
データを破棄し、部分的な行は処理しません。
ABEND
データを破棄し、処理を中止します。
NOFETCH
Extractによるデータベースからの列のフェッチを防ぎます。このオプションはデフォルトではオフです。Extractはトレイルにレコードを書き込みますが、紛失した列であることを示すトークンを挿入します。
SUPPRESSDUPLICATES
Oracleで有効です。LOB列での更新時にターゲット表領域が過剰に大きくなるのを回避できます。デフォルトでは、SUPPRESSDUPLICATESはオフに設定されています。たとえば、レプリケーション後に、232MBソース表領域が7.52GBのターゲット表領域になる場合があります。
USEKEY |
NOUSEKEY |
フェッチする行を見つけるためにOracle GoldenGateが主キーを使用するかどうかを決定します。
USEKEYおよびUSEROWID両方を指定する場合、レコードにより高速にアクセスできるROWIDの方が優先されます。デフォルトはUSEROWIDです。
USELATESTVERSION |
NOUSELATESTVERSION |
Oracleで有効です。USESNAPSHOTとともに使用します。デフォルトのUSELATESTVERSIONでは、UNDO表領域からフェッチできない場合に、Extractにソース表からデータをフェッチさせます。NOUSELATESTVERSIONは、スナップショット・フェッチが失敗した場合に、Extractにその状況を無視して処理を継続させます。
スナップショット・フェッチが失敗した場合の代替アクションを指定するには、MISSINGROWオプションを使用します。
USESNAPSHOT |
NOUSESNAPSHOT |
Oracleで有効です。デフォルトのUSESNAPSHOTでは、Extractに、REDOレコードから完全には取得できない特定の操作の再構築に必要なデータの適切なスナップショットを、Oracle Flashbackメカニズムを使用してフェッチさせます。NOUSESNAPSHOTでは、Extractに、フラッシュバック・ログではなくソース表から必要なデータをフェッチさせます。
USEROWID |
NOUSEROWID |
Oracleで有効です。Oracle GoldenGateが行IDを使用してフェッチされる行を見つけるかどうかを決定します。
USEKEYおよびUSEROWID両方を指定する場合、レコードにより高速にアクセスできるROWIDの方が優先されます。デフォルトはUSEROWIDです。
例
例1
次の例では、ExtractにFlashback Queryを使用してデータをフェッチさせ、条件を無視してフェッチが失敗した場合にはその状況を無視してレコードの処理を継続させます。
FETCHOPTIONS USESNAPSHOT, NOUSELATESTVERSION
例2
MAXFETCHSTATEMENTS 150
例3
次の例では、ExtractにFlashback Queryを使用してデータをフェッチさせ、データを使用できない場合にはExtractを異常終了させます。
FETCHOPTIONS USESNAPSHOT, NOUSELATESTVERSION, MISSINGROW ABEND