ORACLEMASTER 備忘録9(2/13)
データベースのリカバリとは
データベースの“リカバリ”とは、リストアしたデータファイルに“REDOログファイル”を適用することで、データファイルに反映されていない変更情報を反映していく作業。REDOログファイルには、バックアップ以降、現在までの“トランザクションの変更情報”が記録されている。リカバリを行うことで、データを障害発生直前の状態に復旧できる。
バックアップからデータファイルをリストアすると、そのデータファイルには“バックアップ取得時点のデータ”が格納される。
また、バックアップ以降、現在までのトランザクションのデータは、REDOログファイルに格納されている。
リカバリ処理では、データファイルに反映されていないトランザクションを、“オンラインログファイル”から適用し、またオンラインREDOログファイルに存在しない場合は“アーカイブREDOログファイル”から適用する。
・SCN(システム変更番号)
Oracleデータベースでは、トランザクション内で行われる変更にSCN(システム変更番号)という「内部的なタイムスタンプ」がつけられる。
例えば、あるトランザクションで行を更新すると、データベースにはこの更新イベントのSCNが記録される。また、トランザクションがコミットされると、このコミットのSCNが記録される。
SCNは直線的に増加するように割り振られているので、あるイベントのSCNが別の変更イベントのSCNよりも小さい場合、このへんこうイベントは先に発生したことになる。
データベースは、SCNを利用することで対象のデータファイルに「どこまでの変更が反映されているのか」把握している。
バックアップのタイプ
バックアップのタイプはいくつかの観点から分類できるが、ここではトランザクションの一貫性という観点から見たバックアップのタイプである「一貫性バックアップ」と「非一貫性バックアップ」について解説する。
一貫性バックアップ(オンラインバックアップ)
一貫性バックアップ(オンラインバックアップ)とは、“コミットされたすべての変更内容がデータファイルに書き込まれている状態で取得したバックアップ”。“一貫性”とは「トランザクションの一貫性が保たれた状態」という意味。
一貫性バックアップは、データベースを正常にクローズしてインスタンスを停止してから行う。これは、データベースを正常に停止する際に発生する“チェックポイント”によって、「コミット済みのトランザクションの変更内容」すべて、データファイルに書き込まれるため。このバックアップでは、リストア操作が終了するとすぐにデータベースをオープンすることができる。