Oracle Database エラー「ORA-01157: データファイルxxを識別/ロックできません」が発生した場合の対処法

Oracle Database エラー「ORA-01157: データファイルxxを識別/ロックできません」が発生した場合の対処法

Oracle Databaseで、エラー「ORA-01157: データファイルxxを識別/ロックできません」が発生した場合の対処法を記述してます。データファイルだけを間違いで削除してしまった場合などに発生します。

環境

  • OS windows11 home
  • Oracle Database 21c Express Edition

エラー全文

「startup」実行時に発生。

ORACLEインスタンスが起動しました。

Total System Global Area 1610608792 bytes
Fixed Size                  9855128 bytes
Variable Size             922746880 bytes
Database Buffers          671088640 bytes
Redo Buffers                6918144 bytes
データベースがマウントされました。
ORA-01157: データファイル32を識別/ロックできません -
DBWRトレース・ファイルを参照してください
ORA-01110: データファイル32: 'C:\ORACLE\DATA\DBF1.DBF'

原因

データファイルだけを誤って削除してしまっていることが原因

対処法

まずは「mount」モードで起動します。

SQL> startup mount;
ORACLEインスタンスが起動しました。

Total System Global Area 1610608792 bytes
Fixed Size                  9855128 bytes
Variable Size             922746880 bytes
Database Buffers          671088640 bytes
Redo Buffers                6918144 bytes
データベースがマウントされました。

次に対象のデータファイルを「offline drop」します。

SQL> alter database datafile 'C:\ORACLE\DATA\DBF1.DBF' offline drop;

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

openします。

SQL> alter database open;

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

あとは「対象」の「表領域」を削除します。

SQL> drop tablespace 対象の表領域 including contents;