連載
» 2011年09月22日 00時00分 公開

完全リカバリと不完全リカバリ独学! ORACLE MASTER Gold 11g講座(8)(2/2 ページ)

[武見弘之,システム・テクノロジー・アイ]
前のページへ 1|2       

不完全リカバリの実行例

 では、不完全リカバリの実行例を2つほどお見せしましょう。最初に、時間を指定した不完全リカバリです。

RMAN> RUN
   2> { SET UNTIL TIME "TO_DATE('2011-08-20 19:03:48','YYYY-MM-DD HH24:MI:SS')";
   3>   RESTORE DATABASE;
   4>   RECOVER DATABASE;
   5> }

 時間を指定するときは、TO_DATE関数を使うほか、NLS_LANGやNLS_DATE_FORMATといった環境変数を登録して、Oracle Databaseが日付時刻を正しく認識するよう設定します。SCNが分かるときは、先に紹介したSET UNTIL SCNコマンドを使うことで、より細かく復旧時点を指定できます。

 続いて、REDOログファイルが切り替わった時点を指定した不完全リカバリです。このときは、ログ順序番号を指定します。

RMAN> RUN
   2> { SET UNTIL SEQUENCE 28;
   3>   RESTORE DATABASE;
   4>   RECOVER DATABASE;
   5> }

 上の例では、ログ順序番号「28」を指定しています。こうすると、27番までのログがリカバリ対象になります。完全リカバリを試みたものの、28番のログが壊れていたというときなどに役立ちます。

 リカバリが済んだら、RESETLOGSコマンドを実行します。

SQL> ALTER DATABASE OPEN RESETLOGS;

 不完全リカバリのコマンド操作はそれほど難しくありませんが、試験においては不完全リカバリがなぜ必要になるのかということや、不完全リカバリが必要になる状況も問題文から読み取っていく必要があります。

 また、不完全リカバリを実行するには、データベースを止める必要があり、全データファイルのリストアとなりますので、作業時間は長くなります。コミットしたデータも失うことになります。実際の運用では、可能な限り不完全リカバリを実行しない、あるいは不完全リカバリを部分的に応用した復旧方法を模索すべきでしょう。

 Oracle Databaseは、PITRの機能充実に力を入れています。例えば表領域単位のPITRも可能になっています。そのほかにも、特定のオブジェクトのみ過去の状態にするフラッシュバックテクノロジといった技術もあります。今後の連載で解説していく予定です。

制御ファイルが損失しているときは

 第3回で解説したように、バックアップを実行すると対象となるデータベースの制御ファイルに、バックアップ日時などのデータを記録します。しかし、この制御ファイルが破損することがあります。破損していたとしても、制御ファイルがフラッシュリカバリ領域に自動的にバックアップされていれば、以下のコマンドで復旧できます。

RMAN> STARTUP NOMOUNT --NOMOUNTで起動
RMAN> SET DBID 1387346345 --DBIDを設定する
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP; --制御ファイルバックアップからリストアする
RMAN >ALTER DATABASE MOUNT;
RMAN> RECOVER DATABASE; --リカバリを実行
RMAN> ALTER DATABASE OPEN RESETLOGS; --RESETLOGS オプション付きでデータベースをオープン

 最後にRESETLOGSとしていますが、コミットデータを失うことはありません。制御ファイルリカバリ時はかならずこうするものと考えてください。

 DBIDという見慣れない言葉が出てきますが、現時点ではデータベースの識別子という程度の認識で問題ありません。ただし、Oracle DatabaseはDBIDをさまざまな用途で利用しています。いざという時のために、あらかじめメモなどをしておきましょう。マウントかオープン状態のDBにRMANで接続したときや、V$DATABASEビューで確認できます。

長期保存用のアーカイブバックアップ

 例えば、経営状態の比較などで、毎年ある時点のデータベース状態を再現できる体制が必要になったとします。この場合、データベースをコールドバックアップできれば簡単なのですが、コールドバックアップを取得するには、システムを停止しなければなりません。止められないシステムでは、不完全リカバリを応用することで、同じようなことが可能になります。ただし、例えば2年間のデータを保持しなければならないときは、2年前のバックアップと現時点までのアーカイブログを残す必要があります。

 アーカイブバックアップという形式を選ぶと、RMANリポジトリで「長期記録用」という形になり、保存ポリシーから外れます。また「自己完結型」でバックアップします。自己完結とはこのバックアップのみで、バックアップ取得時点の状態を再現できるというもので、具体的には、データファイルのほか、制御ファイルとアーカイブログがバックアップされます。そして、この時点からのアーカイブを連続的に保存する必要がなくなります。

pic3

 では、アーカイブバックアップを取得するコマンド例を紹介します。まずは、保存期限を指定して、その期限まではリポジトリに保存させるようにするコマンドです。

RMAN> BACKUP KEEP UNTIL TIME '保存期限';

 保存期限を指定しながら、リストアポイントを作成するには以下のコマンドを実行します。

RMAN> BACKUP KEEP UNTIL TIME '保存期限'  RESTORE POINT リストアポイント名;

 コマンド実行時点から100日間保存させたい時は以下のようにします。

RMAN> BACKUP KEEP UNTIL TIME 'SYSDATE+100' DATABASE FORMAT '/home/oracle/%U';

 バックアップを永久に保存させるにはこのようにします。

RMAN> BACKUP KEEP UNTIL FOREVER DATABASE FORMAT '/home/oracle/%U';

 アーカイブバックアップは、フラッシュリカバリ領域に保存できません。また、FOREVER句を使う場合は、リカバリカタログが必要です。

 では、問題で確認しましょう。

 次回はRMANを使わないものも含めて、バックアップやリカバリについて解説します。

問題1

 表を誤って削除したため、RMANで不完全リカバリを実行します。不完全リカバリについて正しく説明しているものをすべて選びなさい

a. データファイルをリストアするために、ターゲットデータベースがMOUNTモードである必要がある

b. データベースはRESETLOGSオプションを使用してオープンする必要がある

c. 制御ファイルを再作成する必要がある

d. 削除された表がどのデータファイルにあるか関係なく、すべてのデータファイルをリストアする必要がある

正解:a、b、d

●解説

表の誤削除が原因で不完全リカバリを実行する場合、制御ファイルの再作成は必要ありません。MOUNTモードでリストアし、RESETLOGSオプションでオープンする必要があります。

不完全リカバリでは、すべてのデータファイルをリストアする必要があります。特定のファイルのみ過去の状態に戻すことはできません。


問題2

 下記のRMANコマンドについて正しく説明しているものを選びなさい

RUN

{

SET UNTIL SEQUENCE 1076;

RESTORE DATABASE;

RECOVER DATABASE;

}

a. SCN 1076以前にバックアップしたデータファイルをリストアして、SCN 1076までのログを適用する

b. ログ順序番号1075番までのログを使って回復する

c. ログ順序番号1076番をリストアし、リカバリする

d. 復旧にあたり、読み取り専用表領域に変更する以前に取得したバックアップを使うことも可能である

正解:b

●解説

UNTIL SEQUENCE句は、不完全リカバリにおいてログ順序番号を指定する方法です。指定した番号の1つ前までのログを適用します。

RMANコマンドで、回復したいポイントを決定するのは、SET UNTILコマンドです。RECOVERコマンドではありません。なお、RECOVERコマンドでのUNTIL句はユーザー管理と呼ばれるリカバリ方法の際に用いられます。


問題3

 下記のRMANコマンドについて正しく説明しているものを選びなさい

BACKUP DATABASE TAG year2011

KEEP UNTIL TIME 'SYSDATE+365' RESTORE POINT year2011;

a. バックアップは、構成済みの保存方針にかかわらず最低365日間保存される

b. 365日後にバックアップは自動的に削除となる

c. リストアポイントyear2011が作成された時点のバックアップを取得する

d. リカバリカタログ未使用の場合このコマンドは失敗する

正解:a

●解説

KEEP UNTIL句により、RMANリポジトリの保存方針に関係なく、指定した期間、保存されます。SYSDATE+365とありますので、リポジトリに365日間保存されますが、期間を過ぎたとしても、バックアップが自動的に削除されるわけではありません。削除対象とマークが変わるだけです。

リストアポイントを同時に作成することも可能ですが、リカバリポイント時点のバックアップは作成できません。

リカバリカタログはKEEP FOREVER句を指定するときに必要になります。



前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。