1.66 FETCHOPTIONS

適用対象

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 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データベースにのみ有効です。デフォルトは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