[質問]
until cancelを利用して不完全リカバリを実行すると下記のように ORA-01194 が発生し
OPENすることができません。
SQL> recover database until cancel
ORA-00279: 変更 42140(10/30/2001 10:36:58で生成)にはスレッド番号 1が必要です。
ORA-00289: 検討すべきログ・ファイル:
/home2/ora816/app/oracle/admin/s816/arch/s816_3.arc
ORA-00280: 変更 42140(スレッド 1)は順序番号 3に存在します。
ログの指定: {<RET>=suggested | filename | AUTO | CANCEL}
ORA-00279: 変更 42150(10/30/2001 10:40:33で生成)にはスレッド番号 1が必要です。
ORA-00289: 検討すべきログ・ファイル:
/home2/ora816/app/oracle/admin/s816/arch/s816_4.arc
ORA-00280: 変更 42150(スレッド 1)は順序番号 4に存在します。
ORA-00278: ログ・ファイル
/home2/ora816/app/oracle/admin/s816/arch/s816_3.arcはこのリカバリでは必要なくな
りました。
ログの指定: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: 警告: RECOVERは成功しましたがOPEN
RESETLOGSが次のエラーを受け取りました。
ORA-01194: ファイル 4は一貫した状態にするためにさらにリカバリが必要です。
ORA-01110: データ・ファイル 4 :
/home2/ora816/app/oracle/oradata/s816/users01.dbf
ORA-01112: メディアのリカバリ処理が開始されていません。
SQL> alter database open resetlogs;
alter database open resetlogs
*
エラー行: 1: エラーが発生しました。
ORA-01194: ファイル 4は一貫した状態にするためにさらにリカバリが必要です。
ORA-01110: データ・ファイル 4 :
/home2/ora816/app/oracle/oradata/s816/users01.dbf
[回答]
v$datafile_headerのfuzzy列を確認してください。
SQL> select file#,status,format,recover,fuzzy,checkpoint_change# from v$datafile_header;
FILE# STATUS FORMAT REC FUZ CHECKPOINT_CHANGE#
---------- ------- ---------- --- --- ------------------
1 ONLINE 8 YES NO 42150
2 ONLINE 8 YES NO 42150
3 ONLINE 8 YES NO 42150
4 ONLINE 8 NO 42220
5 ONLINE 8 YES NO 42150
FUZZY列に値が入っていないファイルが存在していませんでしょうか。
データベースは、FUZZY列がすべてNOとなり、かつ全てのCHECKPOINT_CHANGE#が一致した状態で
OPENが可能となります。
shutdown abort時のデータファイルや、データベースの運用中にbegin backupを実行せずに取得
したバックアップを利用されている場合にはこのようにFUZZY列に値が入っていません。
※ データベースの運用中にbegin backupを実行せずに取得されたバックアップはOracleのリカバリ
にはご利用になれませんのでご注意くださいませ。
通常、不完全回復を行うためには全てのデータファイルを以前のバックアップに戻した状態から
アーカイブREDOログを適用していく必要がございます。
この時、一部のデータファイルをバックアップに戻さず、shutdown abort時のファイルを使用されて
いるような場合に本現象が発生いたします。
[対処]
不完全リカバリを実行される場合には必ず全てのデータファイルをバックアップに戻した状態で
行ってください。また、全てのデータファイルのCHECKPOINT_CHANGE#が一致するまでアーカイブ
REDOログを適用してください。