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

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

[森谷聡,株式会社アゲハ]

完全リカバリ ―― オンラインリカバリ

 ユーザー表領域やSYSAUX表領域に障害が発生した場合には、データベースを停止せずに障害の発生した表領域単位、もしくはデータファイル単位のリカバリを実施することが可能です。表領域が1つのデータファイルで構成されている場合には、表領域単位、データファイル単体のリカバリに違いはありません。

 表領域が複数のデータファイルで構成されており、そのうち一部のデータファイルにのみ障害が発生した場合には、データファイル単位のリカバリを実施することで、表領域はオンラインのまま、障害の発生したデータファイルのみをリカバリすることが可能です。

 ここでは、1つのデータファイルで構成されているUSERS表領域で障害が発生した場合を例に挙げ、表領域単位のリカバリ手順を説明します。

1.障害個所の確認

 オフラインリカバリの「1.障害個所の確認」と同様にアラートログ、ユーザープロセスのエラー、動的パフォーマンス・ビュー(v$recover_file、v$datafile_header)からどのデータファイルに障害が発生したのかを確認します。

2.表領域のオフライン

 リストアを実施するため障害の発生した表領域をオフラインに変更します(リスト6)。

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 WRONG FILE TYPE               0
 
SQL> alter tablespace users offline immediate;
 
表領域が変更されました。
リスト6 表領域のオフライン

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

 「1.障害個所の確認」にて確認したデータファイルをバックアップからリストアします(リスト7)。

oracle@single> cp -p /work/ONLINE_BACKUP/users01.dbf /opt/app/oracle/
oradata/
リスト7 データファイルのリストア

4.表領域のリカバリ

 「RECOVR TABLESPACE」または「RECOVER DATAFILE」を使用し、リストアしたデータファイルに対してアーカイブREDOログファイル、オンラインREDOログファイルを適用しリカバリを実施します。ここでは、表領域単位のリカバリを行いますので、「RECOVER TABLESPACE」を使用しています(リスト8)。

SQL> set autorecovery on
SQL> recover tablespace users
  ……
ORA-00279: 変更3831712(01/28/2007 03:39:41で生成)にはスレッド1が必要です
ORA-00289: 検討すべきログ・ファイル:
/opt/app/oracle/archive/1_22_611947833.dbf
ORA-00280: 変更3831712(スレッド1)は順序番号22に存在します。
ORA-00278: ログ・ファイル'/opt/app/oracle/archive/1_21_611947833.dbf'はこのリカバリでは必要なくなりました
 
ログが適用されました。
メディア・リカバリが完了しました。
リスト8 表領域のリカバリ

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

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

6.表領域のオンライン化

 リカバリが完了したオフラインの状態の表領域をオンラインに変更します(リスト9)。これでオンラインリカバリの手順は終了です。

SQL> alter tablespace users online;
 
表領域が変更されました。
 
SQL> select tablespace_name,status from user_tablespaces;
 
TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
UNDOTBS1                       ONLINE
SYSAUX                         ONLINE
TEMP                           ONLINE
USERS                          ONLINE
USERS02                        ONLINE
USERS03                        ONLINE
 
7行が選択されました。
リスト9 表領域のオンライン化

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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