Oracle Managed Files (OMF) の使い方:設定・手順・運用の完全ガイド

OMF

導入(要約)
Oracle Managed Files (OMF) は、データファイルや一時ファイル、REDOログ、制御ファイルを自動命名・自動配置する仕組みです。DB_CREATE_FILE_DEST を設定すると、以後は DATAFILE 指定なしでも表領域を作れます。はじめてでも迷わないよう、最短手順→仕組み→実機SQLの順で整理しました。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


結論・最短手順(スニペット狙い)

  1. 保存先ディレクトリを作成(OS側、権限付与)
  2. 初期化パラメータを設定
    • DB_CREATE_FILE_DEST(データ/一時/一部の管理対象の既定先)
    • 必要に応じて DB_CREATE_ONLINE_LOG_DEST_n(REDO・制御ファイルの多重化先)
  3. 設定確認SHOW PARAMETER DB_CREATE%
  4. OMFで表領域作成CREATE TABLESPACE omf_ts;DATAFILE省略OK)
  5. REDOログの自動多重化(任意)DB_CREATE_ONLINE_LOG_DEST_1..n を2つ以上設定してから ALTER DATABASE ADD LOGFILE ... を実施(各先に1メンバずつ作成)
  6. 運用:表領域の削除は INCLUDING CONTENTS AND DATAFILES紐づくOMFファイルも自動削除
  7. 禁止事項: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_nREDO/制御の既定作成先。複数設定で自動多重化(各先に1メンバ)。推奨2か所以上。動的変更可。
参考DB_RECOVERY_FILE_DESTFRA の場所。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 clauseDB_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_DEST2か所以上を設定してからログを追加(各先に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 TABLESPACEDATAFILE を省略できる条件は?
A2. DB_CREATE_FILE_DEST が設定されていること。未設定だと ORA-02199 になります。

Q3. REDOログの多重化はOMFで自動になりますか?
A3. DB_CREATE_ONLINE_LOG_DEST_n2つ以上設定すると、自動的に各場所へ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専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました