ablog

不器用で落着きのない技術者のメモ

ORA-01242: data file suffered media failure: database in NOARCHIVELOG mode

現象

アラートログに以下のメッセージが出力されてインスタンスが停止する。

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;