導入(要約)
Oracle Managed Files (OMF) は、データファイルや一時ファイル、REDOログ、制御ファイルを自動命名・自動配置する仕組みです。DB_CREATE_FILE_DESTを設定すると、以後はDATAFILE指定なしでも表領域を作れます。はじめてでも迷わないよう、最短手順→仕組み→実機SQLの順で整理しました。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
結論・最短手順(スニペット狙い)
- 保存先ディレクトリを作成(OS側、権限付与)
- 初期化パラメータを設定
DB_CREATE_FILE_DEST(データ/一時/一部の管理対象の既定先)- 必要に応じて
DB_CREATE_ONLINE_LOG_DEST_n(REDO・制御ファイルの多重化先)
- 設定確認:
SHOW PARAMETER DB_CREATE% - OMFで表領域作成:
CREATE TABLESPACE omf_ts;(DATAFILE省略OK) - REDOログの自動多重化(任意):
DB_CREATE_ONLINE_LOG_DEST_1..nを2つ以上設定してからALTER DATABASE ADD LOGFILE ...を実施(各先に1メンバずつ作成) - 運用:表領域の削除は
INCLUDING CONTENTS AND DATAFILESで紐づくOMFファイルも自動削除。 - 禁止事項:OMFファイル名を手動リネームしない(OMFとして認識されなくなります)。
背景と基礎
OMF とは?
Oracle がファイル名と配置を管理する機能。DBAは場所(ディレクトリ or ASMディスクグループ)だけ決め、ファイル名は o1_mf_... 形式で自動生成されます。DB_CREATE_FILE_DEST を設定すると、以後の作成操作(例:表領域や一時表領域)はファイル名省略でOKになります。
なぜ便利?
- 命名ルールから解放:重複や入力ミスの防止
- 削除も自動連動:表領域DROP時に管理下ファイルも片付く
- 多重化の自動化:
DB_CREATE_ONLINE_LOG_DEST_nを複数指定すると、REDO/制御ファイルは各先に自動配置されます(多重化)。
一口メモ:
OMFは「今後作るファイル」に効きます。既存ファイルをOMFに「変換」するわけではありません。
仕組み(動作フロー・テキスト図)
+──────────────+
| SQL発行 | 例)CREATE TABLESPACE omf_ts;
+──────────────+
│
▼
+──────────────+
| OMFが自動命名 | 例)o1_mf_omf_ts_xxxxx.dbf
+──────────────+
│
▼
+─────────────────────+
| 既定先に自動配置 | DB_CREATE_FILE_DEST など
+─────────────────────+
- 既定先(データ/一時/一部の管理対象):
DB_CREATE_FILE_DEST - REDO/制御ファイルの既定先(推奨):
DB_CREATE_ONLINE_LOG_DEST_n(n=1..5、複数で多重化)
Alt: OMF 動作フロー図(SQL→自動命名→既定先に配置)
パラメータ早見表
| 種別 | パラメータ | 役割/挙動(要点) |
|---|---|---|
| 既定先 | DB_CREATE_FILE_DEST | データ/一時などの既定作成先。DB_CREATE_ONLINE_LOG_DEST_n 未設定時は REDO/制御にも流用されます。ディレクトリ/ASMは事前作成必須。動的変更可。 |
| 多重化 | DB_CREATE_ONLINE_LOG_DEST_n | REDO/制御の既定作成先。複数設定で自動多重化(各先に1メンバ)。推奨2か所以上。動的変更可。 |
| 参考 | DB_RECOVERY_FILE_DEST | FRA の場所。DB_CREATE_ONLINE_LOG_DEST_nを使わない構成では、REDO/制御の作成先として既定に使われうる記述もあります(バージョン/章により注記)。19c運用では原則 DB_CREATE_ONLINE_LOG_DEST_n の明示を推奨。 |
手順・実装(19c / 非CDB / Linux)
前提
- OS: Oracleユーザーが
/u01/app/oracle/...に書込可 - DB: 19c 非CDB、
SYSDBA権限 - 既存ファイルをOMFに変える作業は行わない(今後の作成に適用)
1) ディレクトリ準備(OS)
# 例)ファイル保存先とREDO多重化先
sudo mkdir -p /u01/app/oracle/oradata/V19
sudo mkdir -p /u01/app/oracle/redo1 /u01/app/oracle/redo2
sudo chown -R oracle:oinstall /u01/app/oracle
- 意図:OMFは既存の場所にしか作りません(Oracleは新規ディレクトリを作らない)。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
2) 初期化パラメータ設定
-- データ/一時ファイルの既定作成先
ALTER SYSTEM SET DB_CREATE_FILE_DEST = '/u01/app/oracle/oradata/V19' SCOPE=BOTH;
-- REDO/制御ファイルの多重化(推奨:2か所以上)
ALTER SYSTEM SET DB_CREATE_ONLINE_LOG_DEST_1 = '/u01/app/oracle/redo1' SCOPE=BOTH;
ALTER SYSTEM SET DB_CREATE_ONLINE_LOG_DEST_2 = '/u01/app/oracle/redo2' SCOPE=BOTH;
-- 確認
SHOW PARAMETER DB_CREATE;
- 意図:以後の作成操作がファイル名省略で成立。REDO/制御は各先に1メンバずつ自動作成されます。
3) 表領域(OMF)作成
CREATE TABLESPACE omf_ts;
- 意図:
DATAFILEを省略してもOMFがo1_mf_...dbfを自動作成。DB_CREATE_FILE_DESTに配置。
4) 一時表領域(OMF)作成
CREATE TEMPORARY TABLESPACE omf_temp;
- 意図:
TEMPFILE省略でOMFが自動作成。
5) REDOログを追加(OMF・多重化)
ALTER DATABASE ADD LOGFILE SIZE 200M;
- 意図:
DB_CREATE_ONLINE_LOG_DEST_1..nを複数設定済みなら、各先に1メンバずつ自動配置。
6) 管理しやすいユーザーとテーブル(動作確認用)
-- 例:OMF表領域を既定表領域にしたアプリ用ユーザー
CREATE USER app_user IDENTIFIED BY "Password1"
DEFAULT TABLESPACE omf_ts
TEMPORARY TABLESPACE omf_temp
QUOTA UNLIMITED ON omf_ts;
GRANT CREATE SESSION, CREATE TABLE TO app_user;
-- テーブル作成(割り当て発生を確認)
CONN app_user/Password1
CREATE TABLE t_omf(id NUMBER PRIMARY KEY, pad CHAR(1000));
-- 少量データ投入でエクステント割当を発生
INSERT INTO t_omf SELECT LEVEL, RPAD('x',1000,'x') FROM dual CONNECT BY LEVEL<=1000;
COMMIT;
- 意図:エクステント割り当てにより OMFデータファイルが成長し、
DBA_DATA_FILESなどでo1_mf_...を確認できます。 - 結果:
SELECT file_name FROM dba_data_files WHERE tablespace_name='OMF_TS';で自動命名のファイルを確認。
7) 片付け(例)
-- テーブル/ユーザー削除
DROP USER app_user CASCADE;
-- 表領域をファイルごと削除(OMFの紐づけ削除)
DROP TABLESPACE omf_ts INCLUDING CONTENTS AND DATAFILES;
DROP TABLESPACE omf_temp INCLUDING CONTENTS AND DATAFILES;
- 意図:
INCLUDING ... DATAFILESで、OMF管理下の物理ファイルも連動削除。
トラブルシューティング(原因→確認→対処)
| 症状/エラー | 主な原因 | 確認コマンド | 参照 & 対処 |
|---|---|---|---|
ORA-02199: missing DATAFILE/TEMPFILE clause | DB_CREATE_FILE_DEST 未設定で DATAFILE/TEMPFILE を省略 | SHOW PARAMETER DB_CREATE_FILE_DEST | 既定先を設定してから再実行。 |
ORA-15045(ASM名が不正/参照形式でない) | +DATA などのASM参照形式や権限の誤り | SHOW PARAMETER DB_CREATE%、asmcmd ls +DATA | 正しいASM参照形式を指定。権限/存在を確認。 |
| REDOが多重化されない | DB_CREATE_ONLINE_LOG_DEST_n を1か所のみ設定 | SHOW PARAMETER DB_CREATE_ONLINE_LOG_DEST | 2か所以上を設定してからログを追加(各先に1メンバ作成)。 |
| 既存ファイルをOMF化したい | OMFは新規作成にのみ適用 | SELECT file_name FROM dba_* | 既存はそのまま。以後の追加作成からOMFを活用。必要に応じて移行計画を別途。 |
運用・監視・セキュリティの注意
- ディレクトリ/ASMの健全性:残容量・I/O・権限を定期確認(OMFは自動命名するだけで容量管理はしない)。
- REDO/制御ファイルの多重化:2か所以上を推奨(障害耐性の基本)。
- FRAとの役割分担:バックアップ/アーカイブ/フラッシュバックはFRAに、オンラインREDO/制御の多重化は
DB_CREATE_ONLINE_LOG_DEST_nを明示がわかりやすい。 - 禁止:OMFファイルの手動リネームや移動は不可(OMFとして認識されなくなる)。戻すには元名に復すか、正規の手順で再作成。
- 戻し方:OMFをやめたい場合は、パラメータを空に戻す。既存OMFファイルはそのまま稼働(手動での改名/移動は不可)。新規作成のみ非OMF化。
「OMFのやり方」は?(よくある質問形式の小見出し)
- Q. 何を設定すればOMFになりますか?
A. 最低限DB_CREATE_FILE_DESTを設定。REDO/制御の既定先/多重化はDB_CREATE_ONLINE_LOG_DEST_nを2か所以上。
FAQ
Q1. OMFの有効/無効は動的に切り替えられますか?
A1. はい。パラメータは ALTER SYSTEM で動的変更可能です(既存ファイルはそのまま)。
Q2. CREATE TABLESPACE で DATAFILE を省略できる条件は?
A2. DB_CREATE_FILE_DEST が設定されていること。未設定だと ORA-02199 になります。
Q3. REDOログの多重化はOMFで自動になりますか?
A3. DB_CREATE_ONLINE_LOG_DEST_n を2つ以上設定すると、自動的に各場所へ1メンバずつ作成されます。
Q4. FRA(DB_RECOVERY_FILE_DEST)だけでREDO/制御も任せてよいですか?
A4. 可能な挙動がドキュメントにありますが、19cでは役割明確化のため DB_CREATE_ONLINE_LOG_DEST_n を明示する構成を推奨します。
Q5. OMFファイル名を変えたらどうなりますか?
A5. データベースはOMFとして認識できなくなります(管理対象外)。リネームは避けてください。
まとめ(要点)
- OMF=自動命名/自動配置。新規作成から効果を発揮。
- 必須:
DB_CREATE_FILE_DEST、推奨:DB_CREATE_ONLINE_LOG_DEST_n×2以上。 - DROP時は連動削除、リネームは非推奨。
- FRAはバックアップ/アーカイブ向け、REDO/制御は
...ONLINE_LOG_DEST_nを明示。 - すべて動的変更でき、既存ファイルはそのまま。
本記事は Oracle Database 19c を対象に解説します(他バージョンは画面や既定値が異なる場合があります)。
[参考]
Oracle Databaseデータベース管理者ガイド 19c
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?




コメント