7 x 24 在线支持!
Oracle UNDO表領域のリカバリ方法
ORACLEデータベース によくあるエラ の解決策
プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:[email protected]
[概要]
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表領域を使用しているインスタンスのみ停止して、リカバリを行うこ
とが可能です。

沪公网安备 31010802001377号