現象
アラートログに以下のメッセージが出力されてインスタンスが停止する。
ORA-01242: data file suffered media failure: database in NOARCHIVELOG mode ORA-01122: database file 1 failed verification check ORA-01110: data file 1: '/opt/app/oracle/oradata/user01.dbf' ORA-01251: Unknown File Header Version read for file number 1 CKPT: terminating instance due to error 1242
原因
- チェックポイントが発生すると CKPT プロセスは、
- DBWn プロセスにシグナルを送って、データベース・バッファキャッシュをデータファイルに書き出すよう指示し、
- CKPT プロセス自身は制御ファイルとデータファイルのヘッダのシステム変更番号(SCN)を更新する。
- ハードウェア障害やOSの問題などでデータファイルのヘッダの SCN の更新に失敗すると、上記のエラーが発生し、インスタンスが異常終了する。
対処
以下の対処を上から順番に試していく。上の2つでダメな場合はデータロストが発生する。
- インスタンスを起動してみる。
SQL> startup
- recover database してみる。
SQL> startup mount
SQL> recover database;
SQL> alter database open;
- データファイルを drop する。
SQL> startup mount SQL> alter database datafile '/opt/app/oracle/oradata/user01.dbf' offline drop; SQL> alter database open;
参考
- プロセス・アーキテクチャ
- 詳解 Oracleアーキテクチャ P.162-163
- Silver Oracle Database 10g DBA 10g (オラクルマスター教科書) P.296-298