ヘッダーをスキップ
Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド
11g リリース2(11.2)
B56269-05
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

7 フラッシュバック・データベースおよびリストア・ポイントの使用

この章では、フラッシュバック・データベースおよびリストア・ポイントについて説明します。この章では、全体的なデータ保護計画の一環としてこれらの機能を構成、監視およびメンテナンスする方法を示します。

この章の内容は次のとおりです。


関連項目:

フラッシュバック・データベースおよび通常のリストア・ポイントと保証付きリストア・ポイントを使用するリカバリ・シナリオの詳細は、第18章「フラッシュバックおよびデータベースのPoint-in-Timeリカバリの実行」を参照してください。

フラッシュバック・データベース、リストア・ポイントおよび保証付きリストア・ポイントについて

Oracle Flashback Databaseおよびリストア・ポイントは、関連するデータ保護機能です。これらの機能を使用すると、データを特定の時点まで巻き戻して、指定の期間中に論理的なデータ破損またはユーザー・エラーによって生じた問題を解決できます。これらの機能は、Point-in-Timeリカバリの効率的な代替手段となり、リストア対象のデータベースの事前バックアップを必要としません。その効果は、データベースのPoint-in-Timeリカバリ(DBPITR)を使用した場合と同様です。フラッシュバック・データベースおよびリストア・ポイントは、従来のデータベース・リカバリ状況で効果的に使用できるだけでなく、データベースのアップグレード・シナリオ、アプリケーションのデプロイメント・シナリオ、およびテスト・データベースをすばやく作成したり、再作成する必要があるテスト・シナリオでも役立ちます。また、フラッシュバック・データベースは、Data Guardフェイルオーバーの後に、障害が発生したプライマリ・データベースを再構築するかわりとしても効率的に使用できます。


関連項目:

『Oracle Data Guard概要および管理』

リストア・ポイントには、フラッシュバック・データベースおよびその他のメディア・リカバリ操作に関連する機能が備えられています。特に、任意のシステム変更番号(SCN)で作成された保証付きリストア・ポイントによって、フラッシュバック・データベースを使用してデータベースをこのSCNに確実に巻き戻せるようになります。リストア・ポイントおよびフラッシュバック・データベースは、別々に使用することも、一緒に使用することもできます。

フラッシュバック・データベースにアクセスするには、RMANのコマンドFLASHBACK DATABASEまたはSQL文FLASHBACK DATABASEを使用します。いずれかのコマンドを使用して、論理的なデータ破損またはユーザー・エラーからデータベースをすばやくリカバリできます。次の例では、データベースを指定したSCNまたはリストア・ポイントに戻します。

FLASHBACK DATABASE TO RESTORE POINT 'before_upgrade';
FLASHBACK DATABASE TO SCN 202381;

フラッシュバック・データベース

フラッシュバック・データベースにアクセスするには、RMANのコマンドおよびSQL文FLASHBACK DATABASEを使用します。いずれかのコマンドを使用して、論理的なデータ破損またはユーザー・エラーからデータベースをすばやくリカバリできます。

フラッシュバック・データベースは、従来のPoint-in-Timeリカバリと類似しています。フラッシュバック・データベースを使用すると、データベースを直前の状態に戻すことができます。フラッシュバック・データベースは、Point-in-Timeリカバリよりはるかに高速です。フラッシュバック・データベースでは、バックアップからデータファイルをリストアする必要がなく、アーカイブREDOログから変更をほとんど適用する必要がないためです。

データファイルが影響を受けていない場合、フラッシュバック・データベースを使用して、データベースに対する最も不要な変更を無効にすることができます。データベースを直前のインカネーションの状態に戻したり、ALTER DATABASE OPEN RESETLOGS文の効果を元に戻すことができます。FLASHBACK DATABASEコマンドを使用してデータベースの変更を無効にする方法については、「フラッシュバック・データベースを使用したデータベースの巻戻し」を参照してください。

フラッシュバック・データベースでは、独自のロギング・メカニズムによってフラッシュバック・ログが作成され、高速リカバリ領域に格納されます。フラッシュバック・データベースは、フラッシュバック・ログが使用可能な場合にのみ使用できます。フラッシュバック・データベースを使用するには、フラッシュバック・ログが作成されるようにデータベースを事前に設定しておく必要があります。

フラッシュバック・データベースを有効にするには、高速リカバリ領域を構成し、フラッシュバック保存目標を設定します。この保存目標では、フラッシュバック・データベースを使用してデータベースをどの程度巻き戻すかを指定します。

その時点以降、一定間隔で、すべてのデータファイル内の変更されている各ブロックのイメージがフラッシュバック・ログにコピーされます。これらのブロック・イメージを後で再利用して、ログが取得された時点のデータファイルの内容を再構築できます。

フラッシュバック・データベースを使用してデータベースを過去の目標時点に巻き戻すと、コマンドによって、目標時点以降に変更されたブロックが判別され、フラッシュバック・ログからリストアされます。データベースでは、目標時点の直前の各ブロックのバージョンがリストアされます。次に、データベースでは、REDOログを使用して、これらのブロックがフラッシュバック・ログに書き込まれた後に行われた変更が再適用されます。

ディスクまたはテープ上のREDOログは、フラッシュバック・ログに記録されている期間中、使用可能である必要があります。たとえば、フラッシュバック保存目標が1週間の場合は、過去1週間のすべての変更が含まれているオンラインREDOログおよびアーカイブREDOログに、アクセスできるようにしておく必要があります。実際にPoint-in-Timeリカバリをサポートするには、通常、REDOログはフラッシュバック保存目標より長い期間必要とされます。

フラッシュバック・データベース・ウィンドウ

FLASHBACK DATABASEコマンドをサポートするための十分なフラッシュバック・ログ・データが現在存在するSCNの範囲をフラッシュバック・データベース・ウィンドウと呼びます。フラッシュバック・データベース・ウィンドウは、使用可能なフラッシュバック・ログの最も古いSCNより前に延長することはできません。


注意:

表領域の削除やデータファイルの縮小などの一部のデータベース操作は、フラッシュバック・データベースで無効にできません。詳細は、「フラッシュバック・データベースの制約」を参照してください。

フラッシュバック・ログは、高速リカバリ領域外の場所にはバックアップできません。フラッシュバック・データベース・ウィンドウを満たすための十分なフラッシュバック・ログが保存される可能性を高くするために、高速リカバリ領域を増加することができます(「高速リカバリ領域の初期化パラメータ」を参照)。

高速リカバリ領域が、保存方針に必要なフラッシュバック・ログおよびアーカイブREDOログや他のバックアップなどのファイルを保持できるサイズでない場合、データベースでは、最も古いSCNからフラッシュバック・ログを削除して他のファイル用に領域を確保することができます。この結果、フラッシュバック・データベース・ウィンドウは、高速リカバリ領域のサイズ、保存する必要がある他のバックアップおよび必要なフラッシュバック・ロギング・データの量に応じてフラッシュバック保存目標より短くなる可能性があります。フラッシュバック保存目標は目標であり、フラッシュバック・データベースが使用可能であることを保証するものではありません。

フラッシュバック・データベース・ウィンドウの長さが十分でないためFLASHBACK DATABASEを使用できないときは、ほとんどの場合、同様の目的でデータベースのPoint-in-Timeリカバリ(DBPITR)を使用できます。フラッシュバック・データベースを使用して特定の時点に戻すか、またはフラッシュバック・ウィンドウのサイズを確保できるようにする場合は、保証付きリストア・ポイントが唯一の方法となります。


関連項目:


フラッシュバック・データベースの制約

フラッシュバック・データベースでは、コマンド実行時に存在した、データファイルに対する変更が取り消されるため、次の制約があります。

  • フラッシュバック・データベースでは、Oracle Databaseで行われたデータファイルに対する変更のみを元に戻すことができます。メディア障害の修復またはデータファイルの誤った削除からのリカバリには使用できません。

  • フラッシュバック・データベースを使用して、データファイルの縮小操作を元に戻すことはできません。ただし、縮小されたファイルをオフラインにして、データベースの残りの部分をフラッシュバックし、その後、縮小されたデータファイルをリストアおよびリカバリすることはできます。

  • フラッシュバック・データベースのみを使用して、削除されたデータファイルを回復することはできません。削除されたデータファイルがデータベースに存在していた時点にデータベースをフラッシュバックした場合、データファイル・エントリが制御ファイルに追加されるだけです。削除されたデータファイルをリカバリできるのは、RMANを使用してデータファイルを完全にリストアおよびリカバリした場合のみです。

  • データベース制御ファイルがバックアップからリストアされるか、または再作成されると、すべての累積フラッシュバック・ログ情報が破棄されます。制御ファイルのリストアまたは再作成前の時点に戻すためにFLASHBACK DATABASEを使用することはできません。

  • NOLOGGING操作が実行中だった時点を目標時点としてフラッシュバック・データベースを使用する場合、NOLOGGING操作によって影響を受けたデータベース・オブジェクトおよびデータファイルに、ブロック破損が残る可能性があります。たとえば、ダイレクト・パスINSERT操作をNOLOGGINGモードで2005年4月3日9:00から9:15に実行したとします。その後、フラッシュバック・データベースを使用して同じ日の9:07の目標時点に戻す場合、ダイレクト・パスINSERTによって更新されたオブジェクトおよびデータファイルは、フラッシュバック・データベース操作が完了した後も、ブロック破損状態のままである可能性があります。

    可能な場合、NOLOGGING操作と同時の目標時点またはSCNでフラッシュバック・データベースを使用することを避けてください。また、NOLOGGING操作を実行したら、その直後に、影響を受けたデータファイルの全体バックアップまたは増分バックアップを実行して、操作後の時点へのリカバリが可能になるようにしてください。フラッシュバック・データベースを使用して、ダイレクト・パスINSERTなどの操作中の時点に戻す予定がある場合、操作をLOGGINGモードで実行することを検討してください。


    関連項目:

    NOLOGGINGモードをサポートしている操作の詳細は、Oracle Database SQLリファレンスLOGGING_CLAUSEの説明を参照してください。

通常のリストア・ポイント

通常のリストア・ポイントを作成すると、リストア・ポイント名がSCNまたは特定の時点に割り当てられます。これによって、リストア・ポイントはこのSCNのブックマークまたは別名として機能します。通常のリストア・ポイントは、無効にする必要がある操作を実行する前に作成できます。制御ファイルに、リストア・ポイント名およびSCNが格納されます。

フラッシュバック機能またはPoint-in-Timeリカバリを使用する場合は、時刻またはSCNのかわりに、リストア・ポイント名を使用します。次のコマンドでは、リストア・ポイントをこの方法で使用できます。

  • RMANのRECOVER DATABASEおよびFLASHBACK DATABASEコマンド

  • SQLのFLASHBACK TABLE

通常のリストア・ポイントを作成すると、事前に手動でSCNを記録する必要がありません。つまり、問題が発生した後でフラッシュバック問合せなどの機能を使用して適切なSCNを判別します。

通常のリストア・ポイントは軽量です。制御ファイルには、データベースのパフォーマンスに大きな影響を与えることなく、数千もの通常のリストア・ポイントの記録を保持できます。通常のリストア・ポイントは、手動で削除しない場合でも、最終的には制御ファイルからエージ・アウトされるため、継続的なメンテナンスは不要です。


参照:

フラッシュバック問合せの使用方法については、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。

保証付きリストア・ポイント

通常のリストア・ポイントと同様に、保証付きリストア・ポイントは、リカバリ操作でSCNの別名として機能します。保証付きリストア・ポイントは、制御ファイルからエージ・アウトされず、明示的に削除する必要がある点が主な違いとなります。通常、保証付きリストア・ポイントは、通常のリストア・ポイントで動作するすべてのコマンドで、SCNの別名として使用できます。特に明記されていないかぎり、通常のリストア・ポイントの使用箇所および使用方法に関する情報は、保証付きリストア・ポイントにも適用されます。

保証付きリストア・ポイントによって、フラッシュバック・ログが無効になっている場合でも、フラッシュバック・データベースを使用してデータベースをリストア・ポイントSCNの状態に巻き戻すことができます。フラッシュバック・ロギングが有効になっている場合は、保証付きリストア・ポイントによって、最も古い保証付きリストア・ポイント以降の任意のSCNまで、フラッシュバック・データベースに必要なフラッシュバック・ログが保存されます。したがって、フラッシュバック・ロギングが有効になっている場合は、データベースを1つのSCNにのみ巻き戻すのではなく、連続したいずれかのSCNに巻き戻すことができます。


注意:

フラッシュバック・ロギングが無効になっている場合は、FLASHBACK DATABASEを使用して、保証付きリストア・ポイントと現時点の間にあるSCNに直接データベースをフラッシュバックすることはできません。ただし、最初に保証付きリストア・ポイントにフラッシュバックしてから、保証付きリストア・ポイントと現時点の間にあるSCNにリカバリすることはできます。

必要なログを格納できる十分なディスク領域がリカバリ領域にある場合は、保証付きリストア・ポイントを使用して、数日前または数週間前の良好な状態にデータベース全体を巻き戻すことができます。フラッシュバック・データベースの場合と同様に、ダイレクト・ロード・インサートなどのNOLOGGING操作の影響も、保証付きリストア・ポイントを使用して無効にすることができます。


注意:

フラッシュバック・データベースに適用される制限事項は、保証付きリストア・ポイントにも適用されます。たとえば、データファイルの縮小または表領域の削除を行うと、その影響を受けるデータファイルは、保証付きリストア・ポイントまでフラッシュバックされません。詳細は、「フラッシュバック・データベースの制約」を参照してください。また、データベースに保証付きリストア・ポイントが存在する場合は、データベース互換性パラメータを上位のデータベース・バージョンに設定できません。設定すると、エラーが発生します。このように制限されるのは、現在、フラッシュバック・データベースでは互換性初期化パラメータを使用してデータベース・バージョンの増加を無効にできないためです。

保証付きリストア・ポイントとストレージ・スナップショットの比較

実際、保証付きリストア・ポイントは、ストレージ・スナップショットにかわる有効な機能です。多くの場合、ストレージ・スナップショットは、大規模なデータベースの更新、アプリケーションのパッチの適用やアップグレードなどの危険を伴う操作の前に、データベースを保護するために使用します。操作のテスト用にスナップショットまたは複製データベースを作成するかわりに、プライマリ・データベースまたはフィジカル・スタンバイ・データベースに保証付きリストア・ポイントを作成できます。これによって、必要なフラッシュバック・ログが確実に保存される状態で、危険を伴う操作を実行できます。

フラッシュバック・データベースおよび保証付きリストア・ポイントのロギング

フラッシュバック・データベースおよび保証付きリストア・ポイントのロギングでは、変更が適用される前のデータファイル・ブロックのイメージを取得する必要があります。FLASHBACK DATABASEコマンドでは、これらのイメージを使用して、データファイルを前の状態に戻すことができます。

通常のフラッシュバックのロギングと保証付きリストア・ポイントのロギングの主な違いは、ブロックをロギングするタイミング、および高速リカバリ領域で領域圧迫に応じてログを削除できるかどうかに関連しています。これらの違いは、ログに対する領域の使用状況およびデータベースのパフォーマンスに影響します。

リカバリ可能目標によって、フラッシュバック・データベースのロギングを有効にするかどうか、または保証付きリストア・ポイントを使用するかどうか、あるいはその両方を行うかどうかが部分的に決定されます。これらの機能を個別に使用した場合および同時に使用した場合のパフォーマンスおよび領域の使用状況への影響も、決定を行う場合の要因として考慮する必要があります。

保証付きリストア・ポイントおよび高速リカバリ領域の領域使用状況

次の規則によって、高速リカバリ領域でのフラッシュバック・ログの作成、保存、上書きおよび削除が制御されます。

  • フラッシュバック・ログは、高速リカバリ領域に十分な領域がある場合、フラッシュバック保存目標の達成に必要になると常に作成されます。

  • フラッシュバック・ログは、フラッシュバック保存目標の達成に不要になるほど古くなると、再利用されます。

  • データベースでフラッシュバック・ログを作成する必要がある場合に、高速リカバリ領域が一杯になるか、またはディスク領域がなくなると、かわりに最も古いフラッシュバック・ログが再利用されます。


    注意:

    最も古いフラッシュバック・ログを再利用すると、フラッシュバック・データベース・ウィンドウは短くなります。ディスク領域の不足が原因で、多くのフラッシュバック・ログが再利用されると、フラッシュバック保存目標が達成されない場合があります。

  • 高速リカバリ領域が一杯になると、他のファイル用の領域を確保するために、高速リカバリ領域規則に従って再利用可能なアーカイブREDOログが高速リカバリ領域によって自動的に削除される場合があります。この場合、FLASHBACK DATABASEを使用するために、そのREDOログ・ファイルを使用する必要があるフラッシュバック・ログも削除されます。


    注意:

    高速リカバリ領域規則では、次のいずれかの条件が満たされた場合にファイルが再利用可能となります。
    • ファイルは、不要およびフラッシュバック・データベースで必要なしとしてレポートされます。たとえば、ファイルはDB_FLASHBACK_RETENTION_TARGETパラメータの範囲外となります。このファイルはテープにバックアップされます。


  • 高速リカバリ領域内のファイルは、保証付きリストア・ポイントを満たすために必要な場合は削除対象になりません。保証付きリストア・ポイントを満たすために必要なアーカイブREDOログは、ディスクまたはテープにバックアップ後に削除できる場合があります。RMAN FLASHBACK DATABASEコマンドを使用する際に、指定した保証付きリストア・ポイントを満たすために必要なアーカイブREDOログが高速リカバリ領域で使用できない場合、それらはバックアップからリストアされます。

    バックアップ保存方針を満たすために必要なファイルに加えて、保証付きリストア・ポイントを満たすために必要なフラッシュバック・ログおよびその他のファイルを保存すると、高速リカバリ領域が完全に一杯になる場合があります。高速リカバリ領域が一杯になった場合は、「高速リカバリ領域が一杯になった場合の対応」を参照してください。

保証付きリストア・ポイントを作成する場合は、フラッシュバック・データベースの完全なロギングを有効にしているかどうかに関係なく、高速リカバリ領域で使用可能な領域を監視する必要があります。高速リカバリ領域のディスク領域の使用状況を監視する方法については、「高速リカバリ領域でのフラッシュバック・ログの領域の管理」を参照してください。


注意:

保存方針の要件および保証付きリストア・ポイントのため、高速リカバリ領域からの削除対象となるファイルがない場合、データベースはディスクが一杯になった場合と同様に動作します。多くの場合、これによってデータベースは停止します。「高速リカバリ領域が一杯になった場合の対応」を参照してください。

フラッシュバック・ロギングが無効になっている状態での保証付きリストア・ポイントのロギング

フラッシュバック・データベースのロギングが無効になっているときに保証付きリストア・ポイントを作成するとします。この場合、保証付きリストア・ポイントの時点以降にデータファイル・ブロックが初めて変更されると、データベースによって、変更前のブロックのイメージがフラッシュバック・ログに格納されます。このため、フラッシュバック・ログには、保証付きリストア・ポイントが作成された時点で変更されているすべてのデータ・ブロックの内容が保持されます。同じブロックに対するこれ以降の変更では、そのブロックが最後に変更されてから別の保証付きリストア・ポイントが作成されない、または以降のフラッシュバック・データベース操作がブロックの元のコンテンツにリストアされないかぎり、その内容が再度ロギングされることはありません。フラッシュバック・データベースを使用してデータベースを同じリストア・ポイントに複数回リストアする場合、保証付きリストア・ポイントを毎回削除して再作成するのが一般的です。これにより古いフラッシュバック・ログは削除され、高速リカバリ領域の領域割当て制限を超えないことも保証されます。

このロギング方法には、次の重要な効果があります。

  • FLASHBACK DATABASEを使用すると、ブロック・イメージを使用して、保証付きリストア・ポイントの時点でのデータファイルの内容を再作成できます。

  • 同じデータを繰り返し変更するワークロードでは、ディスク領域の使用量が、通常のフラッシュバック・ロギングより少なくなる可能性があります。変更された各ブロックは1回のみロギングされるため、必要な領域が少なくなります。このディスク領域の節約は、小さいボリュームが挿入されたアプリケーションでは有効な場合があります。大きいボリュームまたは大きいバッチが挿入されたアプリケーションでは、このメリットはあまりありません。また、フラッシュバック・データベース・ロギングを行わずに保証付きリストア・ポイントをロギングした場合のパフォーマンスのオーバーヘッドも小さくなる可能性があります。

保証付きリストア・ポイントが作成された時点にデータベースを戻すことが第一の目標であるとします。この場合は、通常、フラッシュバック・ロギングを無効にして、保証付きリストア・ポイントのみを使用する方がより効率的です。たとえば、週末にデータベース・ホストに対してアプリケーション・アップグレードを実行するとします。アップグレードの開始時に、保証付きリストア・ポイントを作成します。アップグレードに失敗した場合は、FLASHBACK DATABASEコマンドを使用して変更を無効にします。

保証付きリストア・ポイントが定義された状態でのフラッシュバック・データベースのロギング

フラッシュバック・データベースを有効にし、1つ以上の保証付きリストア・ポイントを定義すると、データベースで通常のフラッシュバック・ロギングが実行されます。この場合、現時点と現在定義されている最も古い保証付きリストア・ポイントの間の任意の時点にフラッシュバックするために必要なフラッシュバック・ログが、リカバリ領域に保存されます。フラッシュバック・ログは、保証を実現するために必要な場合、領域圧迫に応じて削除されることはありません。

フラッシュバック・ロギングでは、パフォーマンスのオーバーヘッドが発生します。また、データベースでのアクティビティのパターンに応じて、高速リカバリ領域で著しい領域圧迫が発生する場合もあります。したがって、高速リカバリ領域で使用される領域を監視する必要があります。

フラッシュバック・データベースおよび保証付きリストア・ポイントの前提条件

フラッシュバック・データベースおよび保証付きリストア・ポイントの操作を正常に行うには、いくつかの重要なデータベース・オプションを最初に設定する必要があります。

フラッシュバック・データベース

フラッシュバック・データベースを有効にする前に、次のデータベース設定を構成します。

  • フラッシュバック・データベースの操作ではアーカイブ・ログが使用されるため、データベースをARCHIVELOGモードで実行している必要があります。

  • フラッシュバック・ログは高速リカバリ領域にのみ格納可能なため、高速リカバリ領域を有効にする必要があります。

  • Oracle Real Application Clusters(Oracle RAC)データベースの場合、高速リカバリ領域はクラスタ・ファイル・システムまたはASM内にある必要があります。

保証付きリストア・ポイント

保証付きリストア・ポイントを使用するには、データベースが追加の前提条件を満たす必要があります。つまり、COMPATIBLE初期化パラメータが10.2.0以上に設定されている必要があります。


注意:

通常のリストア・ポイントを使用する場合は、設定が必要な特別な前提条件はありません。

通常のリストア・ポイントと保証付きリストア・ポイントの使用

この項では、通常のリストア・ポイントおよび保証付きリストア・ポイントに関して使用する様々なコマンドおよび監視機能について説明します。

通常のリストア・ポイントと保証付きリストア・ポイントの作成

通常のリストア・ポイントまたは保証付きリストア・ポイントを作成するには、SQL文CREATE RESTORE POINTを使用します。このとき、リストア・ポイントの名前を入力し、それを保証付きリストア・ポイントにするか通常のリストア・ポイント(デフォルト)にするかを指定します。

リストア・ポイントを作成する手順

  1. SQL*Plusをターゲット・データベースに接続します。


    関連項目:

    SQL*Plusを使用してデータベースに接続する方法については、『Oracle Database管理者ガイド』を参照してください。

  2. データベースがオープンまたはマウントされていることを確認します。データベースがマウントされている場合、(フィジカル・スタンバイ・データベースでないかぎり)正しく停止されている必要があります。

  3. CREATE RESTORE POINT文を実行します。

    次に、SQL*Plusで通常のリストア・ポイントを作成する方法の例を示します。

    SQL> CREATE RESTORE POINT before_upgrade;
    

    次に、保証付きリストア・ポイントの作成方法の例を示します。

    SQL> CREATE RESTORE POINT before_upgrade GUARANTEE FLASHBACK DATABASE;
    

関連項目:


リストア・ポイントの表示

LISTコマンドを使用して、特定のリストア・ポイント、またはRMANリポジトリで認識されるすべてのリストア・ポイントを表示できます。このコマンドの例を次に示します。

LIST RESTORE POINT restore_point_name;
LIST RESTORE POINT ALL;

RMANは、リストア・ポイントのSCNおよび時刻、リストア・ポイントのタイプおよびリストア・ポイントの名前を表示します。出力例を次に示します。

RMAN> LIST RESTORE POINT ALL;
 
using target database control file instead of recovery catalog
SCN              RSP Time  Type       Time      Name
---------------- --------- ---------- --------- ----
341859           28-JUL-06            28-JUL-06 NORMAL_RS
343690           28-JUL-06 GUARANTEED 28-JUL-06 GUARANTEED_RS

現在定義されているすべてのリストア・ポイント(通常および保証付き)のリストを表示するには、次の問合せでV$RESTORE_POINT制御ファイル・ビューを使用します。

SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#,
        GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE
        FROM V$RESTORE_POINT;

ビューからの出力は次のとおりです。

  • 各リストア・ポイントの名前(保証付きおよび通常)

  • SCN

  • リストア・ポイントの作成日時とその時点のデータベース・インカネーション番号

  • リストア・ポイントのタイプ(通常または保証付き)

  • そのリストア・ポイントに対するフラッシュバック・データベース操作に必要な情報をサポートするために使用される高速リカバリ領域の領域量

通常のリストア・ポイントの場合、STORAGE_SIZEが0(ゼロ)になります。保証付きリストア・ポイントの場合、STORAGE_SIZEは、高速リカバリ領域のディスク領域の容量を示します。この領域は、そのリストア・ポイントに対するFLASHBACK DATABASEを保証するために必要なログの保持に使用されます。


関連項目:


リストア・ポイントの削除

既存のリストア・ポイントが不要であることを確認した場合、または既存のリストア・ポイントの名前を使用してリストア・ポイントを作成する必要がある場合は、SQL*Plus文DROP RESTORE POINTを使用して、リストア・ポイントを削除できます。次に例を示します。

SQL> DROP RESTORE POINT before_app_upgrade;
Restore point dropped.

通常のリストア・ポイントおよび保証付きリストア・ポイントの両方の削除に、同じ文を使用します。


注意:

通常のリストア・ポイントは、明示的に削除しなくても、最終的には制御ファイルからエージ・アウトされます。制御ファイル内のリストア・ポイントは、次の規則に基づいて保存されます。
  • 最新の2048個のリストア・ポイントは、その保存期間に関係なく、常に制御ファイルに保存されます。

  • CONTROL_FILE_RECORD_KEEP_TIMEの値よりも新しいリストア・ポイントは、定義されているリストア・ポイント数に関係なく、いずれも保持されます。

これらの条件のどちらも満たさない通常のリストア・ポイントは、制御ファイルからエージ・アウトされる可能性があります。


保証付きリストア・ポイントは制御ファイルからエージ・アウトされません。明示的に削除されるまで残ります。


参照:

SQLのDROP RESTORE POINT文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

フラッシュバック・データベースの使用

この項では、フラッシュバック・データベース用の基本的なコマンドについて説明します。また、フラッシュバック・データベースのパフォーマンスを最適化するためのガイドラインを示します。

フラッシュバック・データベースの有効化

フラッシュバック・データベースを有効にするには、次の手順に従います。

フラッシュバック・ロギングを有効にする手順

  1. データベース・インスタンスがオープンまたはマウントされていることを確認します。インスタンスがマウントされている場合、フィジカル・スタンバイ・データベースでないかぎり、データベースが正しく停止されている必要があります。その他のOracle RACインスタンスは、どのモードでもかまいません。

  2. オプションで、DB_FLASHBACK_RETENTION_TARGETに、フラッシュバックの期間の長さを分単位で設定します。

    ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=4320; # 3 days
    

    デフォルトでは、DB_FLASHBACK_RETENTION_TARGETは1日(1440分)に設定されます。

  3. データベース全体でフラッシュバック・データベース機能を有効にします。

    ALTER DATABASE FLASHBACK ON;
    
  4. 必要に応じて、特定の表領域のフラッシュバック・ロギングを無効にします。

    デフォルトでは、すべての永続表領域に対してフラッシュバック・ログが生成されます。特定の表領域のフラッシュバック・ロギングを無効にして、オーバーヘッドを軽減できます。次に例を示します。

    ALTER TABLESPACE tbs_3 FLASHBACK OFF;
    

    表領域のフラッシュバック・ロギングは、次のコマンドを使用して、後で再度有効にできます。

    ALTER TABLESPACE tbs_3 FLASHBACK ON;
    

    表領域に対してフラッシュバック・データベースを無効にする場合は、FLASHBACK DATABASEを実行する前に、データファイルをオフラインにする必要があります。

データベースをオープンした状態でフラッシュバック・データベースを有効にする場合、まれに、コマンドが必要なメモリーを取得できないことがあります。この理由でコマンドが失敗した場合、しばらくしてからコマンドを再試行するか、インスタンスを停止し再起動してからコマンドを再試行します。

フィジカル・スタンバイ・データベースでフラッシュバック・データベースを有効にすると、スタンバイ・データベースをフラッシュバックできます。スタンバイ・データベースのフラッシュバック・データベースには、Data Guard環境で使用可能ないくつかのアプリケーションがあります。詳細は、『Oracle Data Guard概要および管理』を参照してください。

フラッシュバック・データベースのロギングの無効化

マウントまたはオープンされた状態のいずれかのデータベース・インスタンスで、次のコマンドを発行します。

ALTER DATABASE FLASHBACK OFF;

最適なフラッシュバック・データベースのパフォーマンスのための環境の構成

フラッシュバック・ログをメンテナンスすると、データベース・インスタンスで発生するオーバーヘッドが比較的制限されます。変更されたブロックがメモリーからフラッシュバック・ログに比較的低い頻度で定期的に書き込まれ、プロセスおよびI/Oオーバーヘッドが制限されます。

フラッシュバック・データベースが有効になっている大規模な本番データベースのパフォーマンスを向上させるには、次のガイドラインに従うことをお薦めします。

  • 高速リカバリ領域には、可能な場合、オペレーティング・システムのファイル・キャッシュを使用せずに高速なファイル・システムを使用します。

    通常、データベースによって高速リカバリ領域に作成されるファイル(フラッシュバック・ログなど)は、サイズが大きくなります。オペレーティング・システムのファイル・キャッシュは、通常、これらのファイルに対しては有効ではなく、実際には、このファイル・キャッシュによって、これらのファイルに対する読取り/書込みを行った場合のCPUオーバーヘッドが増加する場合があります。したがって、オペレーティング・システムのファイル・キャッシュが行われないASMなどのファイル・システムを使用することをお薦めします。

  • 高速リカバリ領域を保持するファイル・システムに、十分なディスク・スピンドルを構成します。

    大規模な本番データベースでは、データベースでフラッシュバック・ログを効果的に書き込むために必要となるディスク・スループットをサポートするために、複数のディスク・スピンドルが必要な場合があります。

  • 高速リカバリ領域の保持に使用されるストレージ・システムに非揮発性RAMがない場合は、ストライプ化されたストレージ・ボリュームにファイル・システムを構成します。

    比較的小さなストライプ・サイズ(128KBなど)を使用します。この方法では、フラッシュバック・ログへのそれぞれの書込みを複数のスピンドルに分散することによって、パフォーマンスを向上できます。

  • 大規模なデータベースでは、初期化パラメータLOG_BUFFERを8MB以上に設定します。

フラッシュバック・データベースのロギングで発生するオーバーヘッドは、データベース・ワークロードでの読取りと書込みの組合せによって異なります。ワークロードが書込み集中型の場合、データベースのすべての変更を記録する必要があるため、フラッシュバック・データベースのロギングのオーバーヘッドが増加します。問合せによってデータは変更されないため、フラッシュバック・データベースのロギング・アクティビティには影響しません。

フラッシュバック・データベースのパフォーマンスに対する影響の監視

自動ワークロード・リポジトリ(AWR)では、データベースの問題検出および自己チューニングのためにパフォーマンス統計の収集、処理および保持を行うことによって、データベースの統計収集が自動化されています。システムにおけるフラッシュバック・データベースのワークロードの監視を行う場合、そのデータ分析方法は複数あります。たとえば、フラッシュバック・データベースを有効にする前と後で、AWRレポートを比較できます。また、AWRスナップショットを参照して、フラッシュバック・ロギングによって発生するシステムの使用状況を明確にすることもできます。たとえば、flashback buf free by RVWRが最上位の待機イベントとして表示されている場合は、Oracle Databaseではフラッシュバック・ログへの迅速な書込みを行うことができないことを示しています。したがって、「最適なフラッシュバック・データベースのパフォーマンスのための環境の構成」で説明したいずれかの方法で、高速リカバリ領域に使用されているファイル・システムおよび記憶域をチューニングすることをお薦めします。

V$FLASHBACK_DATABASE_STATビューには、データベースによって記録されたフラッシュバック・データのバイト数が表示されます。ビューの各行には、(通常は1時間にわたって)累積された統計が表示されます。FLASHBACK_DATAおよびREDO_DATA列には、一定期間中に書き込まれたフラッシュバック・データおよびREDOデータのバイト数がそれぞれ示されます。DB_DATA列には、読取りおよび書込みが行われたデータ・ブロックのバイト数が示されます。FLASHBACK_DATAおよびREDO_DATA列は順次書込みに対応し、DB_DATA列はランダム読取りおよび書込みに対応しています。

順次I/OとランダムI/Oの違いのため、I/Oオーバーヘッドは、フラッシュバック・ログに対して発行されたI/O操作の数によってより明確に示されます。表7-1に示すV$SYSSTAT統計は、様々な目的のためにインスタンスによって発行されたI/O操作の数を示しています。

表7-1 V$SYSSTAT統計

列名 列の意味

physical write I/O request

データ・ブロックの書込みのために発行された書込み操作の数

Physical read I/O request

データ・ブロックの読取りのために発行された読取り操作の数

Redo writes

REDOログへの書込みのために発行された書込み操作の数

Flashback log writes

フラッシュバック・ログへの書込みのために発行された書込み操作の数

Flashback log write bytes

このインスタンスから書き込まれたフラッシュバック・データベース・データの合計バイト・サイズ



関連項目:

  • V$SYSSTATビューの列の詳細は、『Oracle Databaseリファレンス』を参照してください。

  • AWRの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

  • AWRレポートの詳細は、『Oracle Database 2日でパフォーマンス・チューニング・ガイド』を参照してください。


I/Oエラーが発生した場合のフラッシュバック・ライター(RVWR)の動作

フラッシュバックが有効になっている場合、または保証付きリストア・ポイントが存在する場合は、バックグラウンド・プロセスRVWRによって、高速リカバリ領域内のフラッシュバック・データベース・ログにフラッシュバック・データが書き込まれます。RVWRでI/Oエラーが発生した場合は、次の動作が予測されます。

  • 保証付きリストア・ポイントが定義されている場合は、RVWRでI/Oエラーが発生すると、インスタンスで障害が発生します。

  • 保証付きリストア・ポイントが定義されていない場合は、RVWRでI/Oエラーが発生しても、インスタンスは影響を受けません。次の場合に注意してください。

    • プライマリ・データベースでは、データベースをオープンしている間はフラッシュバック・データベースが自動的に無効になります。既存のすべてのトランザクションおよび問合せは、影響を受けずに続行されます。これは、シングル・インスタンス・データベースおよびOracle RACデータベースの両方で予測される動作です。

    • フィジカル・スタンバイ・データベースまたはロジカル・スタンバイ・データベースでは、RVWRが応答を停止してI/Oを定期的に再試行しているように見えます。最終的に、これによってロジカル・スタンバイ・データベース、またはフィジカル・スタンバイ・データベースの管理リカバリが一時停止する場合があります。(Oracle Databaseでは、スタンバイ・インスタンスの障害は発生しません。最大保護モードでプライマリ・データベースの障害が発生しないようにするためです)。この問題を解決するには、SHUTDOWN ABORTまたはALTER DATABASE FLASHBACK OFFコマンドを発行します。