この記事はSaurav Dasによる”Flashback Database and Flashback Logs“の日本語翻訳版記事です。

2023年8月22日


最近、お客様からフラッシュバック・ログの削除・再利用に関するご質問をいただくことがありました。私たちは誤解を招くことの無いよう、ドキュメントの記載を訂正しましたが、その修正過程の中で新しい学びがありましたので、このブログを通じてOracle Databaseコミュニティの皆様に共有したいと思います。

フラッシュバック・ログの内容に入る前に、まずフラッシュバックについて少しおさらいをしましょう。

フラッシュバックはそのシンプルさにより、Oracle Database固有の重要な高可用性機能のひとつとして知られています。この機能によりOracle Databaseのユーザーは複雑なリカバリ・プロセスを踏むことなく、ロールバックを実行することが出来ます。人的エラーやデータベース・アップグレード、検証、論理破損などの様々なシナリオにて発生した問題を修正するために、データベースや表、トランザクションを巻き戻すことが出来ます。

Oracle Databaseでは2種類のフラッシュバック・テクノロジーが利用できます。

  • 論理フラッシュバック:テーブル、トランザクション、クエリをフラッシュバックするために使用できるUndoデータに依存

  • 物理フラッシュバック:データベース全体のフラッシュバックに使用されるフラッシュバック・ログに依存

フラッシュバック・データベース(この場合、論理フラッシュバック)は高速リカバリ領域(FRA)にフラッシュバック・ログを生成する独自のロギング・メカニズムを使用しています。さらに、フラッシュバック・データベースを利用にはFRAの構築とflashback retention targetの設定が必須となります。retention targetはデータ・ファイル内の変更があった各ブロックのイメージを周期的にフラッシュバック・ログにコピーするようデータベースに指示を出します。これらのイメージは後にデータベースを以前の状態にオンデマンドで再構築する時に使用されます。それ以降の変更に関しては、利用可能なオンライン/アーカイブREDOログが存在すれば、それらを使用してリカバリが実行されます。

 

私たちは、フラッシュバック・ログに利用できる十分な容量にFRAをサイジングするようお客様にアドバイスをしています。FRA内のフラッシュバック・ログの運用には以下の4つの方法があります。

  • 作成:フラッシュバック・ログは以下の条件が満たされた場合に作成されます。

    • FRAに十分な容量がある

    • DB_FLASHBACK_RETETION_TARGETが設定されている

  • 削除:フラッシュバック・ログは以下のシナリオで削除される場合があります。

    • フラッシュバック・ログが通常のリストアポイントの条件を満たしていて、かつFRA内の容量を圧迫している状態

    • フラッシュバック・ログが保持期間に従って削除されていき、それに従ってアーカイブREDOログも容量不足により削除される場合

    • フラッシュバック・ログが既にテープにバックアップされている状態

  • 再利用・上書き:フラッシュバック・ログは以下の場合に再利用もしくは上書きをされます。

    • 保持期間を超えている場合

    • 保証付きリストアポイントで利用されない場合

    • 古いフラッシュバック・ログでFRAの容量が逼迫しているとき

  • 保持:フラッシュバック・ログは以下の場合のみ保持されます。

    • 保証付きリストアポイントのためにフラッシュバック・ログが必要な場合

    • FRAの容量が十分にあるとき

それでは、本題のフラッシュバック・ログの削除と再利用について触れていきましょう。

上記の各説明でフラッシュバック・ログの削除と再利用についての違いはご理解いただけたかと思います。さらに現在では、Oracle Database 19cからフラッシュバック・ログの自動削除が導入されたことにより、FRA内のフラッシュバック・ログの自動運用が出来るようになりました。フラッシュバック・ログは定義された各ルールごとに運用をされ、各フラッシュバック・ログを削除するか、それとも再利用するかをOracle Databaseが判断します。しかし、不測の事態を避けるために、これらの操作がいつ行われているのかを知ることはOracle Databaseのユーザーにとって非常に重要なことです。さらに、フラッシュバック・ログはDB_FLASHBACK_RETETION_TARGETの設定と保証付きリストアポイントの作成以外にFRAで操作・管理ができないことに注意する必要もあります。全体として、FRAの容量を適切なサイズにサイジングし、合理的な時間枠とストレージを考慮してリストアポイントを構成している限り、Oracle Databaseが残りを処理してくれます。

フラッシュバック・テクノロジーについての詳しい情報はこちらのドキュメントをご確認ください。Oracle Databaseの高可用性について学びたい方はMaximum Availability Architectureをご確認ください。