論理バックアップと物理バックアップ
本題に入る前に、論理バックアップと物理バックアップについて少しだけ話をします。
論理バックアップとはある時点のデータベースの中身全体あるいは一部をExpdp/Impdpユーティリティなどを使って抽出したものです。中身だけを抜き出していますので、ファイル構成が異なっている環境にもリストアすることができます。データベースのバージョンアップや、サーバーの更改などシステムを別サーバー環境に移行するときに利用できます。
それに対して物理バックアップは、RMANやOSコマンドなどでファイル単位に取得するものです。そのため、同一構成でないとリストアできません。その一方でファイルそのものをバックアップ・リストアするだけですので論理バックアップと比較して高速であるという特徴があります。主な特徴を図1にまとめました。
論理バックアップはデータロスを前提としたバックアップ
それでは、取得された論理バックアップからデータベースを復旧するケースについて考えてみましょう。図2のようにエクスポートしたデータをインポートすることによって復旧されたデータベース内のデータは、エクスポートを実施した過去のある一時点のデータセットになっています。つまり、エクスポートによる論理バックアップ取得後に行われた重要な更新データ(図2で言うとSMITHさんのSAL列値の更新)はすべて失われてしまいます。いわば、データをロスすることを前提としたバックアップなのです。論理バックアップ取得後の変更を復旧時に反映させるためにはアプリケーションとして対策を取る必要があります。
障害時の対応としてデータをロスしても良いという割り切りができる場合は良いのですが、認識がないまま論理バックアップのみの運用を行うにはリスクを伴います。そのためにも、目標復旧時点=Recovery Point Objective (RPO)を事前に定義しておくことが重要です。RPOというのは「最低でもこの時点まで直近のデータに戻す必要がある」という定義です。例えば、RPOが24時間と定義されていれば、最悪のケースだと直近の24時間分のデータを失っても仕方がないということを意味します。この場合であれば、RPOの観点だけで考えれば1日に1回論理バックアップを取得する運用でも良いでしょう。
しかし、RPO以外にも考慮しておくポイントがあります。