本記事では、Oracleデータベースのバックアップ/リストア/リカバリについて、そのアーキテクチャ、代表的なバックアップ手法、論理/物理バックアップ、RMANといった全般的な内容を解説していく。(編集部)
主な内容
--Page 1--
▼RMANによるリストア・リカバリの流れ
--Page 2--
▼完全リカバリ ―― オフラインリカバリ
▼完全リカバリ ―― オンラインリカバリ
--Page 3--
▼不完全リカバリ
前回「OSコマンドを使用したリストア・リカバリの方法」ではOSコマンドによるリストア・リカバリの方法を見ていきましたが、今回はRecovery Manager(以下、RMAN)によるリストア・リカバリの方法について説明していきます。また、RMANにはOSコマンドによるバックアップ/リストア/リカバリ方法と比べて便利な機能もありますので、こちらについても紹介していきたいと思います。以降の実行結果については、これまでと同様にLinux環境のOracle 10g Release 2で実行したものになります。
RMANを使った場合も、リストア・リカバリの基本的な考え方、障害の検出、確認方法についてはOSコマンドの場合と同様に考えることができます。
RMANでは、リストアやリカバリの実行時に、データベースや表領域など、処理対象を指定するだけで、必要なバックアップファイルやアーカイブREDOログファイルをRMANが自動選択し、リカバリ作業を行ってくれます。そのため、OSコマンドのように、リカバリに必要なバックアップファイルをユーザーが探してリストアを行う必要がないので、OSコマンドと比べて障害発生時の作業を簡略化させることができます。
まずは、RMANによるリストア・リカバリの流れを簡単に説明します(図1)。実際に使用するコマンドについては後述する「リカバリ」の「完全リカバリ」「不完全リカバリ」の項目で併せて説明していきます。
データベースの「リストア・リカバリを伴う障害」に限ったことではありませんが、アプリケーションにエラーが返された場合も、データベース管理者はアラートログファイル、ユーザープロセスのトレースファイルを必ず調査します。出力されたエラー内容やアラートログファイル、トレースファイルを調査した結果、データベース構成ファイルに障害が発生したことが確認できたときには、動的パフォーマンス・ビュー(v$recover_file、v$datafile_header)などを使用して、エラーの発生している以外のデータベース構成ファイルにもエラーがないか確認します。
障害が発生したファイルを確認できたらリストア・リカバリを行います。データベース全体でリストア、リカバリを行う際には、ターゲット・データベースをマウントモードにします。一方、表領域やデータファイルを単位にオンラインでリストア・リカバリを実行する際には、復旧対象の表領域をオフラインにする必要があります。
リストア・リカバリ時に使うデータベースの起動/停止や一部のコマンドは、RMANから直接実行できます。表領域やデータファイルのオフラインやオンラインについてはRMANには直接実行するコマンドがありませんが、リスト1のようにSQLコマンドを使用することにより、RMAN上からでもSQLの実行が可能になります。
RMAN> sql 'alter tablespace users offline' |
リスト1 RMANでUSERS表領域をオフラインにする例 |
RMANではRESTOREコマンドを用いてリストア対象を指定すると、必要なデータファイルをバックアップファイルからリストアできます。リストアの指定方法はデータベース、表領域、データファイルなどの単位です(そのほか、制御ファイル、SPFILE単位でのリストアも可能)。データベース単位や表領域単位でRESTOREコマンドを使用すると、RMANが自動的に必要なデータファイルをすべてリストアします。
RMANではRESTOREコマンドが発行されると、初めにコマンドで指定された対象のデータファイルのヘッダにある情報を確認し、制御ファイル内の情報と一致しないものだけをリストアします。これにより、復旧に必要なリストア時間を最小限に抑えることができます。
しかし、データファイルヘッダは正常で実データ部分のみが破損している場合は、逆にRMANではデータファイルヘッダは正常と認識してリストア対象から除外してしまいます。このような場合は、後述するように「force」句を追加してリストアを強制的に行う必要があります。
リストアが終わったら、次はリカバリです。RMANではRECOVERコマンドを使用します。RESTOREコマンドと同様に、対象を指定すると必要なデータファイルに対してリカバリを行っていきます。リカバリが終了したら、最後にターゲット・データベースをオープンまたは対象の表領域をオンラインに戻して、作業完了になります。
RMANでリストアやリカバリを行っているときに、画面上には各チャネルの処理対象とするデータファイルやアーカイブREDOログファイルが表示されますが、実際どこまでリストアされているのか、どのくらいアーカイブREDOログファイルが適用されているかが判断しにくいことがあります。これらの情報についてはターゲット・データベースのアラートファイルに出力されていますので、実際にリストアやリカバリを行っている場合は、「tail -f」コマンドなどで監視する方法が有効です。なお、リストア状況については、第10回「Recovery Managerのチューニング・ポイント集」で紹介したTOPICにあるV$SESSION_LONGOPSでも確認可能です。
[データファイルのリストアが完了したときの出力例] |
次ページからは、OSコマンドと同じ障害ケースを想定して、RMANによるリストア・リカバリの流れを具体的に説明していきます。ただし、障害個所の確認や復旧後の確認方法についてはこれまでと同様の方法になりますので、以降の手順では省略します。
完全リカバリと不完全リカバリの例では、バックアップの運用として第8回「これだけでRecovery Managerは完全マスター」の4ページ「ディスク上にバックアップ・セットでデータベース全体の非一貫性バックアップを取得」で説明した、バックアップ(リスト4)を毎日行っているものとします。
Copyright © ITmedia, Inc. All Rights Reserved.