DB/Oracle/コマンド/制御ファイル管理
目次†
制御ファイルをうまいこと管理する。ひとまず多重化とバックアップ。
制御ファイルの多重化†
制御ファイルを多重化する。デフォルトでは三つに多重化されている。
方法†
- データベースをオープンする
startup
- 初期化パラメータを変更する
alter system set control_files = '/path/to/controlfile01.ctl','/path/to/controlfile02.ctl' scope = spfile;
- データベースをシャットダウンする
shutdown immediate
- 制御ファイルをコピーする
cp /path/to/controlfile01.ctl /path/to/controlfile04.ctl
- データベースをオープンする
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