ORA-00444: background process “QMN0” failed while starting
ORA-00604: error occurred at recursive SQL level
バックグラウンドプロセスが何らかの理由でエラーとなっている。トレースファイルを参照してみる。ファイルは Errors in file xxxxxxxxxxxxxxxxx
特定のデータベースファイルのブロックが破損しているという記録であるなら,
ファイルNO とブロックNO を控え,以下のSQLを実行する
select segment_type,owner||'.'||segment_name from dba_extents where file_id=ファイルNO and ブロック番号 between block_id and block_id+blocks-1;
実行すると,破損の影響を受けているテーブル名が出力される
復旧方法
ひとまず Oracleサービスを再起動させてみる。これでなおる場合もある。
それでも (SELECT * FROM xxxxx でチェックしてみて)ブロック破損のエラーがでるのなら , もうそのテーブルを諦めてバックアップからテーブルとデータの復旧を試みる
該当テーブルを削除しインポートするなど。 DDLで作成してデータだけコピーするか。。
バックアップがなければ・・・・どうしようもないのあかなぁ。。 日頃からバックアップが必要なんでしょうね・・・・
取り出せるデータだけなんとか復旧してみる方法 (以下はネット上からかき集た情報)
SQLPlus xxxxxx / xxxxxxx as sysdba SQL> ALTER SESSION SET events '10231 trace name context forever,level 10' SQL> CREATE TABLE テーブル名_TMP AS SELECT * FROM テーブル名; SQL> select * from テーブル名_TMP ; 取り出せたデータが表示されるはず。(表示されないデーターは残念ながら破損している) SQL> drop table テーブル名; SQL> CREATE TABLE テーブル名 AS SELECT * FROM テーブル名_TMP ;
後は,索引やら制約やら定義してあげればよいかと。
コメント