連載
» 2007年02月08日 00時00分 公開

OSコマンドを使用したリストア・リカバリの方法Oracleバックアップ/リカバリ講座(11)(4/4 ページ)

[森谷聡,株式会社アゲハ]
前のページへ 1|2|3|4       

不完全リカバリ

 不完全リカバリには、取り消しベース(RECOVERコマンド実行時にCANCELを選択)、時間ベース(指定した時間までリカバリを実施)、変更ベース(特定のSCN:システム変更番号までリカバリを実施)があります。障害の発生個所や、システム要件に応じて、不完全リカバリの方式を選択します。例えば、アーカイブREDOログファイルの一部を消失しまった場合に、適用できるアーカイブREDOログファイルをすべて適用するのであれば、取り消しベースのリカバリを実施します。

 不完全リカバリによりデータベース全体を過去に戻す場合、一部のデータファイルのみが古い/新しいなどの状態は認められません。そのため、データベースを過去の状態に戻したい場合には、障害の発生していないデータファイルも含め、全データファイルについて過去のファイルをリストア後、必要な時点までのアーカイブログを適用することになります。

 今回は、アーカイブREDOログファイルの一部が消失してしまった場合を例に挙げて説明していきます。

1.障害個所の確認

 オフラインリカバリの「1.障害個所の確認」と同様に、アラートログ、ユーザープロセスのエラー確認後、データベースが起動している場合にはデータベースを停止させます。

2.データファイルのリストア

 障害の発生していないファイルを含むすべてのデータファイルを、既存のデータファイルと置き換えます。

3.データファイルのリカバリ

 データファイルのリストア後、データベース全体のリカバリを実施するため、データベースをmountモードで起動します。

 動的パフォーマンス・ビュー(v$datafile)のSTATUS列を確認し、すべてのデータファイルがONLINEの状態になっているかを確認します。ONLINEの状態になっていない場合には、「ALTER DATABASE DATAFILE 'データファイル名' ONLINE」文を使用してデータファイルをONLINEに変更します。

 次にデータベース全体を取り消しベースでリカバリを実施します(リスト10)。

SQL> startup mount
ORACLEインスタンスが起動しました。
 
Total System Global Area  109051904 bytes
Fixed Size                  1217980 bytes
Variable Size              83888708 bytes
Database Buffers           20971520 bytes
Redo Buffers                2973696 bytes
データベースがマウントされました。
SQL> select t.name tablespace_name, d.name file_name, r.* from v$recover_file r,v$datafile d,v$tablespace t
  2  where r.file# = d.file#
  3  and d.ts# = t.ts#;
 
TABLESPACE_NAME                FILE_NAME                                     FILE# ONLINE  ONLINE_ ERROR                   CHANGE# TIME
------------------------------ ---------------------------------------- ---------- ------- ------- -------------------- ---------- -------------------
  ……
USERS                          /opt/app/oracle/oradata/users01.dbf               4 OFFLINE OFFLINE                         3832882 2007/01/28 04:03:22
  ……
6行が選択されました。
SQL> alter database datafile '/opt/app/oracle/oradata/users01.dbf' online;
 
データベースが変更されました。
SQL> select t.name tablespace_name, d.name file_name, r.* from v$recover_file r,v$datafile d,v$tablespace t
  2  where r.file# = d.file#
  3  and d.ts# = t.ts#;
 
TABLESPACE_NAME                FILE_NAME                                     FILE# ONLINE  ONLINE_ ERROR                   CHANGE# TIME
------------------------------ ---------------------------------------- ---------- ------- ------- -------------------- ---------- -------------------
  ……
USERS                          /opt/app/oracle/oradata/users01.dbf               4 ONLINE  ONLINE                          3832882 2007/01/28 04:03:22
  ……
6行が選択されました。
SQL> recover database until cancel
ORA-00279: 変更3833045(01/28/2007 04:51:30で生成)にはスレッド1が必要です
ORA-00289: 検討すべきログ・ファイル:/opt/app/oracle/archive/1_26_611947833.dbf 
ORA-00280: 変更3833045(スレッド1)は順序番号26に存在します。
 
 
ログの指定: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
メディア・リカバリが取り消されました。
SQL>
リスト10 データファイルのリカバリ

4.リカバリ完了後の確認

 オフラインリカバリの「4.リカバリ完了後の確認」と同様に動的パフォーマンス・ビューのv$recover_fileにレコードがなく、v$datafile_headerのERROR列がNULLであることを確認し、表領域が正常にリカバリできたことを確認します。

5.データベースのオープン

 データベースをRESETLOGSモードでオープンします。不完全リカバリを実行した場合には、必ずRESETLOGSオプションを指定してデータベースを起動する必要があります。これにより、オンラインREDOログファイルが初期化されます(リスト11)。

SQL> alter database open resetlogs;
 
データベースが変更されました。
リスト11 データベースのオープン

ノーアーカイブログ運用でのリカバリ

 ノーアーカイブログ運用の場合には、一貫性のあるデータベースのバックアップをすべてリストアすることによってのみリカバリが可能です。

 では、実際にノーアーカイブログモードでのリカバリを見ていきましょう。

【TOPIC】

一貫性バックアップの対象

一貫性バックアップ時には、一時ファイルやオンラインREDOログファイルのバックアップは必須ではありません。オンラインREDOログファイルはRESETLOGSオプションでオープンすることで再作成されますし、一時ファイルは再作成が可能です。

しかし、これらのファイルも併せてバックアップしておくことで、再作成によるRESETLOGSを指定したデータベースのOPENにかかる時間の節約や、TEMPORARY TABLESPACE再作成後のディスクソート処理の効率劣化の回避といったメリットを享受できます。これらのメリットが重要なシステムでは、一時ファイル、オンラインREDOログファイルのバックアップも検討するとよいでしょう。


1.バックアップファイルのリストア

 バックアップファイルのリストアを行う前に、データベースが起動している場合には、データベースを停止します。

 取得した一貫性のあるオンラインREDOログファイル、一時ファイルを含むすべてのバックアップを既存ファイルと置き換えます。これによって、リカバリを実施することなくデータベースをオープンすることが可能です。

2.データベースのオープン

 データベースを「STARTUP」でオープンします(リスト12)。

SQL> startup
ORACLEインスタンスが起動しました。
 
Total System Global Area  109051904 bytes
Fixed Size                  1217980 bytes
Variable Size              83888708 bytes
Database Buffers           20971520 bytes
Redo Buffers                2973696 bytes
データベースがマウントされました。
データベースがオープンされました。
リスト12 データベースのオープン

 今回はOracleのリカバリの種類ごとに具体的なリカバリ手順を説明しました。次回は、RMANによるリカバリについて説明していきます。

著者紹介

森谷 聡

株式会社アゲハ



前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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