2007/11/12

Control file old ORA-1122,ORA-1110,ORA-1207が発生してDBが起動できない

文書番号 49471 最終更新日 2002-08-09
製品名(バージョン)[コンポーネント] Oracle Server - Enterprise Edition (ALL - ALL) [RDBMS]
プラットフォーム(バージョン) すべてのプラットフォーム ( - )
関連文書  
概要 ORA-1122,ORA-1110,ORA-1207が発生してDBが起動できない
内容:

[質問]
DBのOPEN時に以下のエラーが発生します。

SQL> startup
ORACLE instance started.
Total System Global Area 57483672 bytes
Fixed Size 38980 bytes
Variable Size 42240340 bytes
Database Buffers 13107200 bytes
Redo Buffers 2097152 bytes
Database mounted.
ORA-01122: database file 5 failed verification check
ORA-01110: data file 5: 'D:\ORA817\ORADATA\ORA817\USERS01.DBF'
ORA-01207: file is more recent than control file - old control file

[回答]
原因となるエラーは、ORA-1207 ファイルが制御ファイルより新しくなっています(制御ファイルが古い) です。
このエラーは、制御ファイルとデータファイルヘッダの持つSCNが一致しないために発生します。
制御ファイルだけを過去のbackupから戻した場合や、マシンクラッシュなどの障害によって
データファイルヘッダの情報と制御ファイルの情報に不整合が生じてしまったようなケースもあります。

このような状態は、ログファイルの適用でリカバリすることができます。
但し、以下のものが必要です。
 -最新の状態のオンラインREDOログ
 -アーカイブログモードの場合は、最新までのアーカイブログすべて
  (ノーアーカイブログモードでも起動できる可能性がありますので下記をご確認ください)

-----
mountモードで起動後

recover database using backup controlfile;
 このコマンドを実行すると、以下が表示されます。

ORA-00279: 変更: 363383(08/09/02 10:46:35で生成)にはスレッド番号: 1が必要です。
ORA-00289: 検討すべきログ・ファイル: D:\ORA817\ORADATA\ORA817\archive\arch1_335.dbf
ORA-00280: 変更: 363383(スレッド: 1)は順序番号: 335に存在します。
ログを指定してください: {=suggested | filename | AUTO | CANCEL}

 ここでアーカイブログの指定を行います。 
 検討すべきログファイルで問題なければリターンキーを押します。
 別の場所に該当のアーカイブログがある場合は、フルパスでファイル名を指定してリターンキーを押します。

 ログの適用を続けていくと、最新のアーカイブログを適用したにもかかわらず
 まだリカバリ完了のメッセージが出力されない(次のログを要求される)状態になります。
 これは、using backup controlfile句を使用した場合は
 現在のオンラインREDOログの情報がないためで、アーカイブログのsuggestionのみ行われます。
 (using backup controlfile/until cancelを指定していないリカバリでは自動で
  オンラインREDOを参照し、リカバリが行われます。)
 上記のログ指定プロンプトで、オンラインREDOログ名をフルパスで指定する必要があります。
 
 どのREDOログが必要かをディクショナリ等で確認できませんので
 うまくいかない場合は、別のREDOlogを指定してご確認ください。
 誤ったREDOログの指定をした場合には、以下のエラーが発生しますが
 誤ったREDOログが適用されてしまうようなことはございません。
 
  ORA-310:アーカイブログは順序番号nnnを含んでいますが、順序番号nnnが必要です。

 再度 recover database using backup controlfile; を実行して
 正しいREDOログファイル名を指定すれば問題ありません。

 最新の状態までログの適用が完了すれば、以下のメッセージが表示されます。

 ログが適用されました。
 メディア・リカバリが完了しました。
 
上記の対処は基本的にアーカイブログモードの場合にアーカイブログを適用していく手順ですが、
ノーアーカイブログモードの場合でも、リカバリに必要なオンラインREDOログが
まだ上書きされていなければ、オンラインREDOログの適用だけでリカバリできます。

recover database using backup controlfile;
を実行後、ログの指定でオンラインREDOログをフルパスで指定してください。 



 ログが適用されました。
 メディア・リカバリが完了しました。

このメッセージが表示されたら、以下のコマンドを使用してDBをOPENしてください。
alter database open resetlogs;

上記でうまくリカバリができない場合は、制御ファイルの再作成による復旧をご検討ください。

[参考資料]
DSI Advanced Backup, Restore and Recovery Techniques の資料を一部参照

[Error#]
ORA-1207

No comments: