Oracle

Oracle 【コントロールファイル】 初心者でもわかるように解説

 

Oracleの制御ファイルの事をおしえて下さい。

 
こんにちはユキトモです。

 
今回は、Oracleの制御ファイル(コントロールファイル)を解説していきます。

 

制御ファイル

制御ファイルはOracleデータベースの物理構造を記録したバイナリファイルです。

記録されている内容は

内容

・データベース名

・対応するデータファイルとREDOログファイルの名前と位置

・データベース作成のタイムスタンプ

・現行のログ順序番号

・チェックとポイント情報

・制御ファイルは最低1つ必要です。

・推奨としては複数のコピーを作成して多重化することが望ましい。

 

制御ファイル名および配置場所を取得

 配置場所
SELECT name FROM v$controlfile;

制御ファイルのフルパスとファイル名は上記のSQL文で取得できます。

制御ファイルはデータベース作成時に作られます。

デフォルトで作成される制御ファイルの数はOSによって異なります。

 

SPFILEから情報を取得

 SPFILEから情報を取得
col name for a13
col value for a50
SELECT name ,value
FROM v$spparameter
WHERE name = 'control_files';

SPFILE(サーバ・パラメータ・ファイル)から制御ファイルの情報を取得するには上記のSELECT文で取得できます。

 
関連項目>> 現在有効なSPFILEの内容を動的パフォーマンスビューから表示するには

 

初期化パラメータに制御ファイルを指定する

 初期化パラメータに制御ファイルを指定
ALTER SYSTEM SET control_files =
'/opt/oracle/oradata/ORCLCDB/control01.ctl',
'/opt/oracle/oradata/ORCLCDB/control02.ctl'
SCOPE = SPFILE;

control_filesは静的パラメータですので、必ずSCOPE = SPFILEを指定します。

すでに稼働中のデータベースで制御ファイルの初期化パラメータ値を変更・追加する場合はOSのコピーコマンドを使って制御ファイルをコピーします。

 

 実行例
--変更前の状態を確認
SELECT name ,value
FROM v$spparameter
WHERE name = 'control_files';
NAME          VALUE
------------- --------------------------------------------------
control_files /opt/oracle/oradata/ORCLCDB/control01.ctl
control_files /opt/oracle/oradata/ORCLCDB/control02.ctl
 
--ファイルをコピー
SQL> !ls -l /opt/oracle/oradata/ORCLCDB/control*
SQL> !cp    /opt/oracle/oradata/ORCLCDB/control01.ctl /opt/oracle/oradata/ORCLCDB/control03.ctl
SQL> !ls -l /opt/oracle/oradata/ORCLCDB/control*
 
--変更されていないことを確認
SELECT name ,value
FROM v$spparameter
WHERE name = 'control_files';
 
--追加する
ALTER SYSTEM SET control_files =
'/opt/oracle/oradata/ORCLCDB/control01.ctl',
'/opt/oracle/oradata/ORCLCDB/control02.ctl',
'/opt/oracle/oradata/ORCLCDB/control03.ctl'
SCOPE = SPFILE;
 
--確認
SELECT name ,value
FROM v$spparameter
WHERE name = 'control_files';
NAME          VALUE
------------- --------------------------------------------------
control_files /opt/oracle/oradata/ORCLCDB/control01.ctl
control_files /opt/oracle/oradata/ORCLCDB/control02.ctl
control_files /opt/oracle/oradata/ORCLCDB/control03.ctl

関連項目>> SPFILE使用時に静的パラメータ値を変更するには

 

既存の制御ファイルの複製を作成

 既存の制御ファイルの複製を作成
--例
ALTER DATABASE BACKUP CONTROLEFILE TO
'/opt/oracle/oradata/ORCLCDB/<バックアップファイル名>';

 

 実行例
 
--複製前の確認
SELECT name ,value
FROM v$spparameter
WHERE name = 'control_files';
NAME          VALUE
------------- --------------------------------------------------
control_files /opt/oracle/oradata/ORCLCDB/control01.ctl
control_files /opt/oracle/oradata/ORCLCDB/control02.ctl
control_files /opt/oracle/oradata/ORCLCDB/control03.ctl
 
--複製する
ALTER DATABASE BACKUP CONTROLFILE TO
'/opt/oracle/oradata/ORCLCDB/control.bkp';
 
--確認
SQL> !ls -l /opt/oracle/oradata/ORCLCDB/control*

 
 

制御ファイルをリストアできるSQL文を生成

 制御ファイルをリストアできるSQL文を生成
 
--出力先を指定するにはAS <フルパス+ファイル名>を指定する
--例
ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/opt/oracle/oradata/ORCLCDB/control01.sql';
 
--ファイルを確認
SQL> !ls -l /opt/oracle/oradata/ORCLCDB/*.sql
 
--内容を確認
SQL> !cat /opt/oracle/oradata/ORCLCDB/control01.sql

 

以上です。

-Oracle
-,