Database OracleDB インフラ

ORA-01157が発生してDBが起動できない時の対処方法

投稿日:

こんにちは!シミダイ(@shimidai2100)です。

データベースを起動しようとしてら「ORA-01157: データファイル5を識別/ロックできません」とエラーになりました。

以下、エラーの全文になります。

行1でエラーが発生しました。:
ORA-01157: データファイル5を識別/ロックできません -
DBWRトレース・ファイルを参照してください ORA-01110:
データファイル5: '/u01/app/oracle/oradata/ORCL18C/test001.dbf'

今回は「ORA-01157」が発生した時の対処方法を紹介したいと思います。


エラー原因:データファイルが参照できない

原因は「制御ファイルに記録されているデータファイルに参照できない」とのことです。

ファイルが参照できない原因の多くは、

  • データファイルをOSコマンドで削除した
  • データファイル格納領域のマウントが外れてしまった

でしょう。

私の環境では誤ってOS上からファイルを消してしまいました。。。

しっかりとデータベースのバックアップを取得していれば格納先にデータファイルをリストアすれば事象は解決します。

以下「ORA-01157」の全文になります。

ちなみにマウント時には制御ファイルの物理情報はローディングされているだけで実際にオープンできるかまでは検証しません。

なのでマウントが完了してオープンのステータスのところでORAエラーが発生するわけです。

エラーの対象方法:データファイルをdrop offlineさせる

データベースのバックアップを取得していない場合は

  1. データベースをマウントモードで起動
  2. alter database datafile ~ drop offline」を実行
    1. データベースをオープン状態に変更
  3. 表領域を削除

することで解消することが出来ます。

以下解消方法です。

まずマウントモードで起動します。

次に対象の表領域を「drop offline」します。

そしてデータベースの状態をオープンに変更します。

最後に対象の表領域を削除します。

これで正常にデータベースを起動できます。

念のため実行ログを残しておきます。

17:47:19 SQL> STARTUP MOUNT;
ORACLEインスタンスが起動しました。

Total System Global Area 1073740616 bytes
Fixed Size 8665928 bytes
Variable Size 373293056 bytes
Database Buffers 683671552 bytes
Redo Buffers 8110080 bytes
データベースがマウントされました。
17:47:35 SQL> ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ORCL18C/test001.dbf' OFFLINE DROP ;

データベースが変更されました。

17:48:27 SQL> ALTER DATABASE OPEN;

データベースが変更されました。

17:49:29 SQL> drop tablespace test001 including contents;

表領域が削除されました。

今回の教訓はしっかりとデータベースのバックアップは取得しておきましょう。

 

スポンサードリンク

関連記事

-Database, OracleDB, インフラ

Translate »

Copyright© shimidai2100 , 2018 All Rights Reserved.