DB/Oracle/コマンド/制御ファイル管理

Top / DB / Oracle / コマンド / 制御ファイル管理

目次

制御ファイルをうまいこと管理する。ひとまず多重化とバックアップ。


制御ファイルの多重化

制御ファイルを多重化する。デフォルトでは三つに多重化されている。

方法

  1. データベースをオープンする
    startup
    
  2. 初期化パラメータを変更する
    alter system
      set control_files = '/path/to/controlfile01.ctl','/path/to/controlfile02.ctl'
      scope = spfile;
    
  3. データベースをシャットダウンする
    shutdown immediate
    
  4. 制御ファイルをコピーする
    cp /path/to/controlfile01.ctl /path/to/controlfile04.ctl
    
  5. データベースをオープンする
    startup
    

確認

  • 初期化パラメータ control_files の値を確認する
    show parameter control_files
    

補足

  • デフォルトの保存パスは $ORACLE_BASE/oradata/<sid>/control01.ctl

制御ファイルのバックアップ

制御ファイルをバックアップする。オープン状態で行ってもいいし、シャットダウン状態で行ってもいい。

制御ファイルをバックアップしなければいけないケースは以下。これらの操作では制御ファイルが変更される。

  • データベースのモード変更(NOARCHIVELOG モードから ARCHIVELOG モードにした場合)
  • 表領域の作成、変更、削除
  • REDO ロググループおよびメンバの追加、変更、削

方法

制御ファイルをシャットダウン状態時にバックアップする

OS のファイルシステムレベルでのバックアップ。要するに cp でコピーしておくだけ。

cp $ORACLE_BASE/oradata/<sid>/*.ctl /path/to/backup/directory

制御ファイルをオープン状態時にバックアップする

方法はふたつ。制御ファイルをそのままコピーするか、トレースファイルに出力するか。

-- そのまま別ファイルにコピーする
alter database backup controlfile to '/path/to/backup/directory/hoge.ctl';

-- トレースファイルに出力する
alter database backup controlfile to trace;

補足

オープン状態でのバックアップ

  • 別ファイルにコピーするとき、ファイル名のみを指定した場合は $ORACLE_HOME/dbs/ 下に作成される
  • トレースファイルは $ORACLE_BASE/diag/rdbms/<sid>/<sid>/trace/<sid>_ora_*.trc に出力される。出力ファイル名は同じディレクトリの alert_<sid>.log で確認できる
    • 出力先のディレクトリは以下のコマンドで確認可能
      show parameter user_dump_dest
      
    • トレースファイルの中身は CREATE CONTROLEFILE 文。必要になったら、中身の必要な部分をコピーして制御ファイルを生成させる。NOMOUNT 状態で実行可能
      -- シャットダウンする
      shutdown immediate
      
      -- NOMOUNT 状態で起動する
      startup nomount
      
      -- 制御ファイルを作成する。成功すると MOUNT 状態に移行する
      create controlfile ...;
      
      -- データベースをオープンする
      alter database open;
      
      -- 一時表領域にデータファイルを割り当てる
      alter tablespace temp add tempfile '/path/to/tempfile.dbf' size n ...;
      

CREATE CONTROLFILE 文の中身

  • NORESETLOGS
    • REDO ログファイルを保持する
  • MAXLOGFILES n
    • ログファイルグループの最大値
  • MAXLOGMEMBERS n
    • ひとつのロググループの最大メンバ数
  • MAXDATAFILES n
    • データファイルの最大数
  • MAXLOGHISTORY
    • 保持するログ順序番号の最大数

データベースの状態と制御ファイルの変更

  • ALTER DATABASE 文はデータベース構造の変更、つまるところ制御ファイルの書き換えが多い
  • NOMOUNT 状態では制御ファイルの名前を知っているだけ(初期化パラメータから)で中身は読んでいない。制御ファイルを書き換える場合は制御ファイルが開かれた状態、つまり MOUNT 状態である必要がある

制御ファイルに関する情報の取得

制御ファイルに関する情報は以下のビューから取得できる。

  • v$database
  • v$controlefile_record_section
  • v$parameter

Last-modified: 2011-11-02 (水) 14:23:03 (2454d)