第2回「アーキテクチャから理解するOracleリカバリ」で説明したように、データファイルに障害が発生した場合はバックアップしたデータファイル、アーカイブREDOログファイル、オンラインREDOログファイル、制御ファイルのすべてがそろっていれば完全復旧は可能です。つまり、ベースとなるデータベース全体のバックアップさえあれば、毎日バックアップを行わずにアーカイブREDOログファイルのみをバックアップした場合でも完全復旧は可能となります。
configure channel device type disk |
リスト8 アーカイブREDOログファイルのみをバックアップする |
この方法の利点としては、平日のバックアップ時間が短いことに加え、データファイルがバックアップ対象となっていないため、システムに与える負荷が小さく、ほかの処理への影響が少ないことです。ただし、いざ障害が発生した場合、復旧時には前回の全体バックアップ以降のすべての更新内容をアーカイブREDOログファイル、オンラインREDOログファイルから適用する必要があるため、全体バックアップ取得の間隔次第では、リカバリに多くの時間がかかることを踏まえて検討してください。
これまで紹介した方法でもバックアップ要件を満たせない場合、以下の方法で特定の表領域をバックアップ対象から除外できないか検討してみましょう。この場合、障害が発生したときには、何らかの手法によってバックアップ対象から除外された表領域のデータを復旧できることが前提となります。
ある表領域に格納されたすべてのデータに更新が発生せず、読み取りしか行わないのであれば、この表領域を読み取り専用に変更後に一度バックアップを行うと、以後バックアップを取得する必要はありません。
読み取り専用表領域をバックアップするには、先に説明した表領域を指定したバックアップコマンドで取得し、そのほかの表領域についてはRMANでデータベース全体のバックアップ実行時に「SKIP READONLY句」を付けることにより、読み取り専用の表領域を除外してバックアップを行うことができます。
backup as backupset database skip readonly; |
リスト9 読み取り専用表領域を除外してフルバックアップを取得する |
読み取り専用の表領域を一度でも読み書き可能に戻した場合は、バックアップを再度取得する必要があることも覚えておきましょう。
RMANではバックアップ対象から表領域単位で除外することが可能です。その代わり、障害が発生した場合は除外した表領域をSQL*LoaderやExp/Imp、Data Pumpなどからのデータの再投入によって復旧可能であることが必要です。また、索引専用の表領域であれば、索引を再作成することで復旧します。なお、リカバリにはこのデータを再投入する時間や索引を再作成する時間が必要になるので、システム要件にある復旧時間内で可能であるかなどの検討が必要となります。
configure exclude for tablespace users; |
リスト10 USERS表領域をデータベース全体のバックアップから除外する |
表領域をバックアップ対象から除外した場合の注意点は、データベース全体をバックアップから復旧するときの手順として、リカバリ前に除外した表領域に属するデータファイルをオフラインにする必要があることです。そして、先に示した除外した表領域の復旧方法だけでなく、復旧に使用するデータがどこにあるか、データ再作成の時間がリカバリ要件に適しているかもきちんと確認しておきましょう。
次回も引き続き、RMANのバックアップ方法について説明します。(次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.