この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:4
ページ更新者:T
更新日時:2026-06-11 07:07:02

タイトル: 制御ファイル
SEOタイトル: Oracle 制御ファイル(control file)完全ガイド(役割 / 多重化 / バックアップ / 再作成)

この記事の要点
  • 制御ファイル(control file)は Oracle データベースの物理構造を記録したバイナリファイル
  • 格納情報: データベース名 / DBID / データファイル・REDO ログのパスとサイズ / 表領域 / チェックポイント情報 / バックアップ履歴(RMAN)
  • インスタンス起動の MOUNT 段階で読み込まれる — 制御ファイルが破損するとデータベースは起動できない
  • 可用性のため多重化が強く推奨される(最低 2 つ、できれば別ディスクに 3 つ)
  • バックアップ: ALTER DATABASE BACKUP CONTROLFILE TO ... または RMAN の自動バックアップ機能で確保

制御ファイルとは

制御ファイル(control file)は Oracle データベースを構成する物理ファイルの 1 つで、データベース全体の物理構造に関するメタ情報を保持するバイナリファイルです。サイズは数 MB 〜 数十 MB と小さいですが、これがないとデータベースは起動できないという極めて重要な役割を持ちます。

主な格納情報

カテゴリ内容
データベース識別子データベース名、DBID、作成タイムスタンプ
データファイル情報各データファイルのパス、サイズ、ステータス
REDO ログ情報オンライン REDO ログのパス、サイズ、シーケンス番号
表領域情報表領域とデータファイルの対応
チェックポイント情報SCN(System Change Number)、リカバリ用情報
バックアップ履歴RMAN を使った場合のバックアップ・コピー履歴
アーカイブログ情報アーカイブ REDO ログの位置

インスタンス起動時の役割

Oracle インスタンスの起動は 3 段階で進みます。制御ファイルは MOUNT 段階で読み込まれます。

段階処理
NOMOUNTSGA 確保、バックグラウンドプロセス起動(パラメータファイルのみ読み込み)
MOUNT制御ファイルを読み込み、データファイル / REDO ログの場所を確認
OPENデータファイル / REDO ログを開き、利用可能状態に

多重化(多重制御ファイル)

制御ファイルが 1 つだけだと、それが壊れた瞬間に DB が起動不能になります。Oracle では同一内容を複数の物理ディスクに保存する多重化が推奨されます。

-- 現在の制御ファイル一覧
SHOW PARAMETER control_files

-- 複数指定(init.ora / spfile)
*.control_files='/u01/oracle/oradata/orcl/control01.ctl',
               '/u02/oracle/oradata/orcl/control02.ctl',
               '/u03/oracle/oradata/orcl/control03.ctl'

spfile を使っている場合は次の手順で追加します。

-- spfile を変更
ALTER SYSTEM SET control_files=
  '/u01/.../control01.ctl',
  '/u02/.../control02.ctl',
  '/u03/.../control03.ctl'
SCOPE=SPFILE;

-- DB を停止
SHUTDOWN IMMEDIATE;

-- OS コマンドで新しい場所に物理コピー
-- cp /u01/.../control01.ctl /u02/.../control02.ctl

-- 起動
STARTUP;

バックアップ

制御ファイルは定期バックアップ必須です。次の 2 通りの方法があります。

-- バイナリコピー
ALTER DATABASE BACKUP CONTROLFILE TO '/backup/control_backup.ctl';

-- テキストの再作成スクリプトとして出力
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
-- → USER_DUMP_DEST の .trc ファイルに CREATE CONTROLFILE 文が出力される

RMAN を使う場合は、CONFIGURE CONTROLFILE AUTOBACKUP ON;構造変更時に自動バックアップされる設定が可能です。

再作成

すべての制御ファイルが失われた場合は、CREATE CONTROLFILE 文で再作成できます(バックアップしておいた TRACE 出力を利用)。

STARTUP NOMOUNT;

CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 1
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/u01/oradata/orcl/redo01.log' SIZE 50M,
  GROUP 2 '/u01/oradata/orcl/redo02.log' SIZE 50M
DATAFILE
  '/u01/oradata/orcl/system01.dbf',
  '/u01/oradata/orcl/sysaux01.dbf',
  '/u01/oradata/orcl/users01.dbf'
CHARACTER SET AL32UTF8;

ALTER DATABASE OPEN;

確認用ビュー

ビュー用途
V$CONTROLFILE制御ファイルのパス / ステータス
V$CONTROLFILE_RECORD_SECTIONセクションごとのレコード使用状況
V$DATABASEDBID、CONTROLFILE_TYPE

運用ベストプラクティス

  • 最低でも 2 つ以上、別の物理ディスクに配置
  • spfile / pfile への control_files 設定を統一
  • RMAN AUTOBACKUP を有効にして、DB 構造変更のたびに自動バックアップ
  • ALTER DATABASE BACKUP CONTROLFILE TO TRACE を定期取得しておく(緊急再作成用)

関連記事