Oracle® Fusion Middleware Oracle GoldenGateリファレンスfor Windows and UNIX 12c (12.2.0.1) E70112-04 |
|
前 |
次 |
適用対象
Extract (Oracleのみ)
説明
BR
パラメータでは、Bounded Recovery (BR)機能を制御します。この機能は、現在Oracleデータベースをサポートしています。
Bounded Recoveryは一般的なExtractチェックポイント機能のコンポーネントです。計画的または計画外のなんらかの理由でExtractが停止した場合、その時点でオープンしている(コミットされていない)トランザクションの数、およびトランザクションの古さにかかわらず、Extractの停止後の効率的なリカバリを保証します。Bounded Recoveryにより、Extractが停止した位置までリカバリし、正常な処理を再開するまでにかかる最大時間の上限を設定できます。
注意:
このパラメータをデフォルト設定から変更する前に、Oracleサポートに連絡してください。ほとんどの本番環境では、このパラメータの変更は必要ありません。ただし、Bounded Recoveryチェックポイント・ファイル用のディレクトリは、Oracleサポートの支援なしで指定できます。
Extractによるオープンしていたトランザクションのリカバリ方法
Extractは、REDOログ内でトランザクションの開始位置(Oracleの場合は最初の実行可能SQL文)を検出すると、このトランザクション内の取得が指定されているすべてのデータをメモリーにキャッシングし始めます。取得が必要なデータを含まないトランザクションにも、今後の操作によって取得が必要なデータが含まれる可能性があるため、Extractはこのようなトランザクションもキャッシュする必要があります。
Extractは、トランザクションのコミット・データを検出すると、キャッシュしているこのトランザクション全体をトレイルに書込み、メモリーからクリアします。Extractは、トランザクションのロールバック・レコードを検出すると、このトランザクション全体をメモリーから破棄します。Extractがコミットまたはロールバックを処理するまで、トランザクションはオープンしているとみなされ、その情報収集が継続されます。
トランザクションのコミットまたはロールバック・レコードを検出する前にExtractが停止した場合には、Extractの再起動の際に、キャッシュされていた情報をすべてリカバリする必要があります。Extractが停止したときにオープンしていたすべてのトランザクションがリカバリの対象になります。
Extractは、次のようにこのリカバリを実行します。
Extractが停止したときにオープンしているトランザクションがなかった場合は、現在のExtract読取りチェックポイントからリカバリを開始します。これは標準リカバリです。
ログ内での開始位置の時刻がExtractの停止時刻と非常に近いオープンしていたトランザクションがある場合、Extractはその中で最も古いトランザクションの開始位置からログを再度読み取ってリカバリを開始します。この場合Extractは、停止前にトレイルに書き込み済または破棄したトランザクションについては重複作業を行う必要がありますが、この作業は処理するデータ量が比較的少ないため許容できます。これも標準リカバリとみなされます。
Extractが長時間オープンしているトランザクションとみなすトランザクションが1つ以上あった場合は、ExtractはBounded Recoveryを利用してリカバリを開始します。
Bounded Recoveryの動作
トランザクションは、BR
パラメータのBRINTERVAL
オプションで指定されている1つのBounded Recovery間隔より長くオープンしている場合に長時間に及ぶトランザクションとみなされます。たとえば、Bounded Recovery間隔が4時間の場合は、4時間よりも前に開始されたすべてのトランザクションが長時間オープンしているトランザクションになります。
Extractは、Bounded Recovery間隔ごとにBounded Recoveryチェックポイントを作成し、(存在する場合)長時間に及ぶトランザクションの状態とデータを含め、Extractの現在の状態とデータをディスクに永続化します。Extractは、Bounded Recoveryチェックポイント作成後に停止した場合、オープンしている長時間に及ぶ最も古いトランザクションが最初に登場するログ内の位置からではなく、直前のBounded Recovery間隔内の位置、または最新のBounded Recoveryチェックポイントからリカバリを開始します。
最大Bounded Recovery時間(Extractが停止位置までのリカバリにかかる最大時間)は、現在のBounded Recoveryチェックポイント間隔の2倍を上回ることはありません。実際のリカバリ時間は、次の要因によって決まります。
最新の有効なBounded Recovery間隔からExtract停止までの時間。
その期間のExtract使用状況。
以前にトレイルに書き込まれたトランザクションの使用率。Bounded Recoveryは、これらのトランザクションをディスクに書き込まなければならなかった最初のExtract処理よりも、(破棄することによって)はるかに早くこれらのトランザクションを処理します。トランザクション・データに対して発生する再処理のほとんどは破棄です。
Extractは、リカバリの際、最新のBounded Recoveryチェックポイントで保存された永続データおよび状態(長時間に及ぶトランザクションのものを含む)をリストアします。
たとえば、あるトランザクションが24時間オープンしていて、Bounded Recovery間隔が4時間であるとします。このときの最大リカバリ時間は、Extract処理時間の8時間を超えず、たいていこの時間を下回ります。最新の有効なBounded Recoveryチェックポイントに対する停止位置、およびその時点におけるExtractのアクティビティによって、実際の時間は異なります。
Bounded Recoveryのメリット
ディスクの永続性を使用して長時間に及ぶトランザクションを保管し、リカバリすることによって、Extractは発生頻度は少ないながら、発生した場合にパフォーマンスに重大な(悪い)影響を及ぼす状況に対応できます。多くの場合、長時間に及ぶトランザクションの開始点は、Extractが停止したときのログ内の処理位置よりもはるか前に遡ります。長時間に及ぶトランザクションは、多数の古いログにまたがっている可能性があり、古いログの一部はアクセス可能な記憶域に存在しないか、削除されていることもあります。長時間に及ぶトランザクションの開始からもう一度ログを読み取るためには、許容できないほど長時間要するだけではなく、長時間に及ぶトランザクションはまれにしか発生しないため、大半はすでにトレイルに書き込み済、または破棄された他のトランザクションをもう一度取得する作業が必要になります。永続化された長時間に及ぶトランザクションの状態とデータをリストアできれば、この作業は不要になります。
Bounded Recoveryの例
次の図は、一連のトランザクションが開始されたタイムラインを表しています。これは、長時間オープンしているトランザクションが特定の間隔の後にディスクにどのように永続化され、処理失敗の後にリカバリされるかを示しています。これは、この例で使用されている用語の理解に役立ちます。
永続オブジェクトとは、Bounded Recoveryチェックポイントで永続化されたキャッシュ内の任意のオブジェクトです。通常はトランザクションの状態またはデータですが、キャッシュはExtractの内部のオブジェクトにも使用されます。これらすべてを集合的にオブジェクトと呼びます。
最も古い非永続オブジェクトとは、現在のBounded Recoveryチェックポイント直前の間隔内のキャッシュにある、オープンしている最も古いオブジェクトです。通常は、この間隔内にあるオープンしている最も古いトランザクションです。Bounded Recoveryを再起動すると、実行時プロセスは最も古い非永続オブジェクトの位置から再開し、通常のトランザクションの場合は、これがREDOログ内のこのトランザクションの位置になります。
この例では、Bounded Recovery間隔は4時間です。オープンしているトランザクションは、現在のBounded Recoveryチェックポイントから1つのBounded Recovery間隔より長い間オープンしている場合、現在のチェックポイントで永続化されます。
BRチェックポイントn:
オープンしているトランザクションは、T(27)、T(45)、T(801)、T(950)およびT(1024)の5つです。これ以外のトランザクションはすべて、コミットされてトレイルに送信されたか、ロールバックされました。トランザクションは、タイムラインに沿って開始位置が示されています。
1つのBounded Recovery間隔より長くオープンしているトランザクションは、T(27)およびT(45)です。BRチェックポイントnでこれらはディスクに永続化されます。
最も古い非永続オブジェクトはT(801)です。これは、オープンしている時間が1つのBounded Recovery間隔に満たないので、ディスクに永続化される資格がありません。このトランザクションは最も古い非永続化オブジェクトなので、ログ内のこのトランザクションの開始位置がBRチェックポイントnチェックポイント・ファイルに保管されます。ExtractはBRチェックポイントn以降に予期せず停止すると、このログ位置までリカバリし、そこからログの再読取りを開始します。直前のBounded Recovery間隔に最も古い非永続オブジェクトが存在しない場合、Extractは現在のBounded Recoveryチェックポイントのログ位置からログの再読取りを開始します。
BRチェックポイントn+1:
T(45)は直前のBounded Recovery間隔で使用済(更新済)なので、新しい永続オブジェクト・ファイルに書き込まれます。古いファイルは、BRチェックポイントn+1完了後に削除されます。
Extractは、BRチェックポイントn+1の書込み中、またはBRチェックポイントnとBRチェックポイントn+1間のBounded Recoveryチェックポイント間隔内のある時点で処理に失敗すると、最後の有効なチェックポイントであるBRチェックポイントnからリカバリを開始します。BRチェックポイントnの再開始位置は、最も古い非永続トランザクションであるT(801)の開始点です。したがって、最も長いリカバリ時間は常に、Extractが停止したポイントから2つのBounded Recovery間隔未満、このケースでは8時間未満になります。
BRチェックポイントn+3000
このシステムは長い時間実行されています。T(27)およびT(45)のみが永続トランザクションです。T(801)およびT(950)は、BRチェックポイントn+2999より前のある時点でコミットされ、トレイルに書き込まれました。現在オープンしているトランザクションは、T(208412)およびT(208863)のみです。
BRチェックポイントn+3000が書き込まれます。
BRチェックポイントn+3000の後の間隔で電源障害が発生します。
新しいExtractがBRチェックポイントn+3000までリカバリします。T(27)およびT(45)は、BRチェックポイントn時点の状態を含む、それぞれの永続ファイルからリストアされます。ログ読取りは、T(208412)の開始から再開します。
長時間に及ぶトランザクションの管理
Oracle GoldenGateは、長時間に及ぶトランザクションを管理するために、次のパラメータとコマンドを提供します。
WARNLONGTRANS
パラメータでは、Extractによってトランザクションが長時間に及んでいることの警告メッセージが生成されるまでの、トランザクションのオープン時間を指定します。またWARNLONGTRANS
も使用して、Oracle GoldenGateが長時間に及ぶトランザクションをチェックする頻度を制御します。この設定はBounded Recovery間隔とは無関係で、Bounded Recovery間隔に影響しません。
SEND EXTRACT
コマンドとSKIPTRANS
オプションでは、指定したトランザクションをExtractにスキップさせます。
SEND EXTRACT
コマンドとFORCETRANS
オプションでは、Extractに、指定したトランザクションをコミット済トランザクションとしてトレイルに書き込ませます。
TRANLOGOPTIONS
パラメータとPURGEORPHANEDTRANSACTIONS
オプションでは、ノードに障害が発生し、Extractがロールバックを取得できないときに発生する孤立トランザクションのパージを有効化します。
ディスクに書き込まれるファイルについて
Bounded Recovery間隔が終了すると、Extractは常にBounded Recoveryチェックポイント・ファイルを作成します。永続化が必要な長時間に及ぶトランザクションが存在する場合、これらのトランザクションは各自の永続オブジェクト・ファイルに書き込まれます。永続オブジェクト・ファイルには、ディスクに永続化される単一のトランザクションの状態およびデータが格納されます。
これまでの経験では、長時間に及ぶトランザクションを永続化する必要はほとんどなく、このようなケースのほとんどでトランザクションは空です。
以前に永続化されたオブジェクトがまだオープンしていて、完了したばかりのBounded Recovery間隔中にその状態やデータが変更された場合、このオブジェクトは新しい永続オブジェクト・ファイルに再度永続化されます。このような変更が発生しない場合、オープンしているトランザクションの以前に作成された永続化オブジェクト・ファイルは変更されません。
理論的には、1つの長時間に及ぶトランザクションを永続化するために、複数の永続ファイルが必要になること可能性もあります。
注意:
Bounded Recoveryファイルは、Extractが別のシステムに移動された場合、同一のデータベースが使用されているとしても、新しいシステムのすべての関連要素が元のシステムと同一でなければ、Extractの状態のリカバリに使用できません。たとえば、Oracle 11g Solarisプラットフォームに書き込まれたチェックポイント・ファイルは、Oracle 11g Linuxプラットフォーム上のExtractのリカバリに使用できません。
Bounded Recoveryを標準リカバリに変更する状況
Extractは、永続オブジェクトが存在するまれな状況を除き、ほとんどのケースでBounded Recoveryではなく標準リカバリを使用します。特定の異常な状況では、ExtractはBounded Recoveryから標準リカバリ・モードに切り替えられない場合があります。たとえば、(長時間に及ぶトランザクションの永続データが保管されている)ディスクの物理的な破損、Bounded Recoveryチェックポイント・ファイルの不注意な削除、環境の継続性に影響を及ぼすその他のアクションやイベントなどが発生する状況があげられます。もっと容易に修正可能な障害が原因の場合もあります。
一部のケースを除き、Extractは、リカバリ中にBounded Recovery処理に失敗すると、標準モードに切り替えます。標準リカバリの完了後、Bounded Recoveryはもう一度有効化されます。
Bounded Recoveryは、次の状況では起動されません。
Extractの開始位置がCSNまたは時間によって変更された。
Extract I/Oチェックポイントが変更された。
Extractパラメータ・ファイルがリカバリ中に変更された(TABLE
指定の変更など)。
リカバリの完了後、Bounded Recoveryは次の実行に向けてもう一度有効化されます。
Bounded Recovery中にExtractが異常終了した場合の措置
ExtractがBounded Recovery中に異常終了した場合は、エラー・ログを確認して理由を特定してください。無効なパラメータ・ファイル、Bounded Recoveryファイルが含まれるディレクトリの不適切な権限など、迅速に解決できる問題が原因の場合もあります。こうしたケースでは、問題の修正後、Extractを再起動してBounded Recoveryを有効化できます。
問題が修正できない場合は、BRRESET
オプションでExtractの再起動を試みます。Extractは標準モードでリカバリを実行し、その後Bounded Recoveryを再び有効化できます。
BRパラメータの変更
Bounded Recoverは、デフォルトで有効化されており、デフォルトのBounded Recovery間隔は4時間です(BRINTERVAL
オプションで制御します)。この間隔は、ほとんどの環境に適切なはずです。BR
パラメータを変更するときは、先に必ずOracleサポート・アナリストの指示を受けるようにしてください。Oracle GoldenGateアナリストは、使用可能なBounded Recovery実行時統計に基づいてBounded Recovery使用状況を分析し、デフォルトでは不十分な不測のイベント発生時に適切なBRINTERVAL
の設定を特定できます。
BR
の変更を要求された場合は、Bounded Recovery間隔が標準Extractチェックポイント間隔の倍数であることに注意してください。Extractチェックポイントは、CHECKPOINTSECS
パラメータで制御されます。したがって、BR
パラメータは、標準Extractチェックポイントに対するBounded Recoveryチェックポイントの割合を制御します。Oracle担当者から指示された場合は、両方のパラメータを変更する必要があります。
サポートされるデータベース
このパラメータはOracleデータベースに適用されます。他のデータベースでは、Extractは障害時の最も古いトランザクションの開始位置から古いログを読み取ってリカバリを行い、長時間に及ぶトランザクションは永続化されません。
デフォルト
BR BRINTERVAL 4, BRDIR BR
構文
BR [, BRDIR directory] [, BRINTERVAL number {M | H}] [, BRKEEPSTALEFILES] [, BROFF] [, BROFFONFAILURE] [, BRFSOPTION { MS_SYNC | MS_ASYNC }]
BRDIR
directory
BR
ディレクトリを含める親ディレクトリの相対パス名または完全パス名を指定します。BR
ディレクトリには、Bounded Recoveryチェックポイント・ファイルが保管され、このディレクトリ名は変更できません。BR
ディレクトリのデフォルトの親ディレクトリは、Oracle GoldenGateインストール・ファイルを含むルート・ディレクトリにあるBR
という名前のディレクトリです。
特定のOracle GoldenGateインストール内の各Extractグループは、BRDIR
で指定されたディレクトリの下に各自のサブディレクトリを持ちます。各サブディレクトリには、関連するExtractグループの名前が付けられます。
directory
には、文字列temp
またはtmp
(大/小文字を区別しない)を含む名前を使用しないでください。一時ディレクトリは、内部または外部のクリーンアップ・プロシージャで削除されることがあります。
BRINTERVAL
number
{M | H}
Bounded Recoveryチェックポイント間の時間を指定します。この時間をBounded Recovery間隔と呼びます。この期間は、CHECKPOINTSECS
パラメータによって制御されている、Extractの標準のチェックポイント間隔の整数倍です。ただし、正確な値を設定する必要はありません。Bounded Recoveryは、必要に応じて内部で有効なBRINTERVAL
パラメータを調整します。
最小間隔は1分です。最大値は999999999時間です。デフォルト間隔は4時間です。
BRKEEPSTALEFILES
古いBounded Recoveryチェックポイント・ファイルを保持します。デフォルトでは、現在のチェックポイント・ファイルのみが保持されます。Extractは、古いBounded Recoveryチェックポイント・ファイルからはリカバリできません。古いファイルは、Oracleサポート・アナリストに指示された場合にのみ保持するようにしてください。
BROFF
Bounded Recoveryの実行およびリカバリを無効にします。このオプションを使用する前にOracleに連絡してください。通常の場合、Bounded Recoveryに問題があると、Bounded Recoveryは自身を無効化します。
BROFFONFAILURE
エラー発生後、Bounded Recoveryを無効化します。デフォルトでは、ExtractはBounded Recovery処理中にエラーを検出すると、標準リカバリに切り替えますが、リカバリの完了後Bounded Recoveryをもう一度有効化します。BROFFONFAILURE
では、Bounded Recoveryの実行時処理を無効化します。
BRRESET
BRRESET
は起動オプションであり、Extractに、現在の実行の間は標準リカバリを使用させ、リカバリの完了後にBounded Recoveryを再び有効化させます。このパラメータは、エラーを検出してもBounded Recoveryが標準モードに戻らない、まれなケースで使用します。Bounded Recoveryは、実行時に有効化されます。このオプションを使用する前にOracleサポートに連絡してください。
このオプションを使用するには、Extractをコマンドラインから起動する必要があります。Extractをコマンドラインから起動するには、次の構文を使用します。
extract paramfile name.prm reportfile name.rpt
説明:
paramfile
name
.prm
は、Extractパラメータ・ファイルの相対名または完全修飾名です。このコマンド名はpf
に短縮できます。
reportfile
name
.rpt
は、Extractレポート・ファイルをデフォルト以外の場所に配置する場合の、Extractレポート・ファイルの相対名または完全修飾名です。このコマンド名はrf
に短縮できます。
BR BRFSOPTION {MS_SYNC | MS_ASYNC}
Bounded Recoveryでマップ済データの同期/非同期書込みを実行します。
例
BR BRDIR /user/checkpt/br
では、Bounded Recoveryチェックポイント・ファイルの作成先を/user/checkpt/br
ディレクトリに指定します。