Email: service@parnassusdata.com 7 x 24 online support!

Oracle UNDO表領域のリカバリ方法

Oracle UNDO表領域のリカバリ方法

ORACLEデータベース によくあるエラ の解決策

プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:service@parnassusdata.com

 
 
[概要]
Oracle9iからの新機能で自動UNDO管理モードとなっています。
UNDO表領域に障害が起きた場合はどうなりますか。
また、リカバリ方法も教えてください。


[対象リリース]
Oracle9i Database Release 1
Oracle9i Database Release 2


[対象プラットフォーム]
すべてのプラットフォーム


[UNDO表領域の障害]
自動UNDO管理モードの場合の UNDO表領域は、SYSTEM表領域と同様、アクセスができない
データファイルが含まれていると、SMONやPMONなどのプロセスがアクセスした時にエラー
となり、インスタンスが停止します。

Alertの出力例:
 Wed Mar 12 21:14:52 2003
 Errors in file /home/app/oracle/admin/ora9014/bdump/ora9014_pmon_20175.trc:
 ORA-00376: file 2 cannot be read at this time
 ORA-01110: data file 2: 
'/home/ora9014/app/oracle/oradata/ora9014/undotbs01.dbf'
 PMON: terminating instance due to error 376
 Instance terminated by PMON, pid = 20175

そのため、通常のユーザ表領域とは違い、SYSTEM表領域と同様のリカバリ方法を行います。
なお、通常のユーザ表領域のリカバリ時に行うような、
> alter tablespace <UNDO表領域> offline immediate; 
や
> alter database datafile '<UNDO表領域のデータファイル>' offline; 
の実行はエラーとなります。


[UNDO表領域のリカバリ]

<リカバリにおける前提条件>
  - アーカイブログモードである
  - 破損しているのは UNDO表領域のデータファイルのみである
  - UNDO表領域のデータファイルのバックアップが取得済みであり、
    バックアップに適用するべきアーカイブログファイル、オンラインREDOログファイルが
    正常な形で存在する。

<リカバリ方法>
1) インスタンスがまだ停止していない場合には、インスタンスを停止
SQL> shutdown abort

2) startup mountの実施
SQL> startup mount

3) UNDO表領域のリストア
- OS コマンドでのバックアップの場合は、cp や dd などのコマンドでリストアします。

- RMAN で CONFIGUREコマンドによるチャネル設定ができている場合
RMAN> restore tablespace undotbs;

- RMAN で CONFIGUREコマンドによるチャネル設定ができていない場合
RMAN> run {
   2> allocate channel ch1 type disk;  <-- 適切なチャネル割り当てをしてください。
   3> restore tablespace undotbs;
   4> }

4) recoverコマンドの実施
--SQL*Plusからの実行
SQL> alter database datafile <UNDO表領域のファイル番号> online;
SQL> recover database;

-- RMANからの実行
RMAN> sql 'alter database datafile <UNDO表領域のファイル番号> online';
RMAN> recover database;

<UNDO表領域のファイル番号>は '<UNDO表領域のファイル名(フルパス)>' での
指定も可能です。 

5) データベースをオープンする
SQL> alter database open;
or
RMAN> alter database open;


[補足]
Real Application Clusters環境の場合、障害が発生したUNDO表領域を使用していないイン
スタンスを停止する必要はありません。
障害が発生したUNDO表領域を使用しているインスタンスのみ停止して、リカバリを行うこ
とが可能です。