Email: service@parnassusdata.com 7 x 24 online support!
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表領域を使用しているインスタンスのみ停止して、リカバリを行うこ とが可能です。