Oracle Database を運用していると、ある日突然 ORA-01157 : データファイルを識別できません というエラーに遭遇することがあります。このエラーは、単なる SQL 実行エラーではなく、データベースの物理ファイルに関する重大な問題 を示しています。対応を誤ると、データベースの起動不可やデータ損失につながるため、冷静かつ正確な切り分けが不可欠です。
本記事では、ORA-01157 が発生する仕組みを整理したうえで、実際の運用現場で確認すべきポイントを順序立てて解説します。推測に基づく対処は行わず、Oracle の挙動に基づいた実務向けの内容に絞っています。

ORA-01157 とは何か
ORA-01157 は、Oracle Database が 必要なデータファイルを正しく認識できない状態 で発生するエラーです。多くの場合、以下のようなメッセージとセットで出力されます。
|
1 2 |
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file ORA-01110: data file 5: '/u01/oradata/XXX/users01.dbf' |
ここで重要なのは、Oracle がデータファイルの存在または状態を確認できていない という点です。SQL の文法ミスや権限不足ではなく、OS レベルのファイル問題や制御ファイルとの不整合が原因となります。
発生しやすいタイミング
ORA-01157 は、次のようなタイミングで発生することが多いエラーです。
- データベース起動時(MOUNT → OPEN の遷移時)
- 表領域アクセス時
- バックアップ・リストア後
- ストレージ切り替えやサーバ移行直後
- データファイル手動操作後
特に、DB は起動しているが特定の処理で突然エラーになる ケースは、影響範囲の見極めが重要になります。
主な原因の分類
ORA-01157 の原因は大きく分けて次の4系統です。
1. データファイルが存在しない
最も多い原因です。
制御ファイルには登録されているものの、OS 上に該当ファイルが存在しない状態です。
- 誤って削除された
- マウントポイントが未接続
- パス変更後に反映漏れ
Oracle は制御ファイルの情報を基にデータファイルへアクセスするため、物理ファイルが見つからないと即座にエラーになります。
2. OS 権限・所有者の問題
データファイル自体は存在していても、Oracle プロセスがアクセスできない場合にも発生します。
- ファイル所有者が oracle 以外
- 読み取り・書き込み権限不足
- SELinux やセキュリティポリシーによる遮断
特にバックアップから手動でコピーした直後は、権限不整合が起きやすいため注意が必要です。
3. ストレージ障害・I/O エラー
ディスク障害やネットワークストレージの切断も原因になります。
- NAS / SAN の一時切断
- ディスク故障
- ファイルシステムの不整合
この場合、OS のログや dmesg にもエラーが残っていることが多く、DB 単体での対処は困難です。
4. 制御ファイルとの不整合
制御ファイルに記録されたデータファイル情報と、実体の状態が一致していないケースです。
- 不完全リカバリ後
- 古い制御ファイルを使用して起動
- データファイルのコピー漏れ
この場合、単純にファイルを戻すだけでは解決しないことがあります。
発生時の確認ポイント(重要)
ORA-01157 が出たら、以下の順で確認することが重要です。
1. ORA-01110 のパスを必ず確認する
エラーメッセージに表示される ORA-01110 は非常に重要です。
ここに、問題となっているデータファイルのフルパスが表示されます。
- ファイル番号
- ファイルパス
- 表領域の特定
まずはこの情報を正確に把握します。
2. OS 上でファイルの存在確認
次に、OS 上で実際にファイルが存在するかを確認します。
- パスは正しいか
- マウントされているか
- サイズが異常でないか
存在しない場合、バックアップの有無を即座に確認します。
3. ファイル権限・所有者の確認
存在していても、以下を必ず確認します。
- oracle ユーザーが所有しているか
- 読み書き権限があるか
- ディレクトリ権限は問題ないか
権限不備は修正後に即解消するケースも多いポイントです。
4. alert.log・トレースの確認
ORA-01157 では alert.log や DBWR のトレース に詳細が出力されます。
- I/O エラーの有無
- OS エラーコード
- アクセス失敗理由
表面的なエラーだけで判断せず、必ずログを確認します。
5. 表領域の重要度を確認する
影響範囲の判断も重要です。
- SYSTEM / SYSAUX
- UNDO
- 一般ユーザー表領域
SYSTEM 表領域関連であれば、即時復旧が必須になります。
無理にやってはいけない対応
ORA-01157 発生時に、次のような対応は避けるべきです。
- 原因不明のままデータファイルを削除
- 制御ファイルを安易に再作成
- 表領域を即 DROP
- 推測による RECOVER 実行
誤った操作は、復旧可能だったデータを完全に失う 可能性があります。
よくある対処の方向性
原因が特定できた後、対処は次のいずれかになります。
- 正しいデータファイルを戻す
- 権限を修正する
- 表領域を OFFLINE にして復旧
- バックアップからのリストア+リカバリ
重要なのは、「何が原因か」を先に確定させることです。
QA形式(まとめ直前)
Q1. ORA-01157 は放置しても問題ありませんか?
A. 放置は推奨されません。対象の表領域が使用されるタイミングで処理停止や障害が発生します。
Q2. データファイルが1つだけなら削除しても良いですか?
A. 推奨されません。表領域や依存オブジェクトへの影響を確認せずに削除するとデータ損失につながります。
Q3. DB が OPEN できない場合の原因として多いですか?
A. 多いです。特に SYSTEM や UNDO のデータファイルが対象の場合、OPEN に進めません。
Q4. バックアップが無い場合は復旧不可能ですか?
A. ケースによります。表領域の種類や状態によっては部分的な復旧や切り離しが可能な場合もあります。
まとめ
ORA-01157 は、Oracle Database が 物理データファイルを正しく扱えない状態 を示す重要なエラーです。
SQL レベルではなく、OS・ストレージ・制御ファイルまで含めた広い視点での確認が求められます。
慌てて操作を行うのではなく、
- 対象ファイルの特定
- OS レベルの確認
- ログの確認
この順序を守ることで、被害を最小限に抑えることができます。


