|
今回は制御ファイルの追加手順を解説します。
10gのデフォルトの設定では、サーバパラメータファイル(SPFILE)を使用するようになっており、マニュアル等で見かける初期化パラメータファイル(PFILE)の編集による方法では、制御ファイルを追加する事が出来ません。
よって、ここではSPFILEを使用している環境での制御ファイルの追加手順を解説します。
ちなみに、マニュアル等でよく見かける、PFILE環境での制御ファイルの追加手順は以下の通りです。
(今回こちらは解説しません)
1.データベースを停止
2.OSコマンドで制御ファイルをコピー
3.初期化パラメータファイルのCONTROL_FILESパラメータを編集
4.データベースを再起動
SPFILEはバイナリファイル形式なので、手順3のCONTROL_FILESパラメータの編集をファイルから直接行う事は出来ないため、SPFILE環境では、上記の方法では制御ファイルの追加が出来ません。
それでは、これからSPFILEを使用している環境での制御ファイルの追加手順の解説します。
■環境
DB:Release Oracle Database 10g Release 10.2.0.1.0
OS:Microsoft Windows XP Professional SP2
■制御ファイルの追加手順
1.CONTROL_FILESパラメータの確認
V$PARAMETERに問い合わせてCONTROL_FILESパラメータの値を確認します。
SELECT NAME, VALUE FROM V$PARAMETER
WHERE NAME='control_files';
NAME VALUE
−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
control_files C:\ORACLE\PRODUCT\10.2.0\ORADATA\GOLD\CONTROL01.CTL,C:\ORACLE\
PRODUCT\10.2.0\ORADATA\GOLD\CONTROL02.CTL
VALUE列の値が制御ファイルの場所になります。多重化されている場合は、カンマ区切りで設定されています。
私の環境では以下の2つでした。
C:\ORACLE\PRODUCT\10.2.0\ORADATA\GOLD\CONTROL01.CTL
C:\ORACLE\PRODUCT\10.2.0\ORADATA\GOLD\CONTROL02.CTL
後でCONTROL_FILESパラメータの値を上書きする時に既存の値も使うため、ここで確認した値はコピー&ペーストして別のエディタ等にとっておくとよいでしょう。
2.CONTROL_FILESパラメータを編集
ALTER SYSTEM文でCONTROL_FILESパラメータを変更します。
ALTER SYSTEM SET CONTROL_FILES='制御ファイルのパス'[, '制御ファイルのパス', ...]
SCOPE=SPFILE
CONTROL_FILESパラメータは動的に編集が出来ないため、SCOPEにはSPFILEを設定して、SPFILEにのみ値が反映されるようにします。
また、制御ファイルのパスは文字列として扱うため、シングルクォーテーション(')で囲みます。
複数制御ファイルのパスを設定する場合は、1つの制御ファイルのパス毎にシングルクォーテーションで囲むようにします。
例)
'制御ファイル1のパス', '制御ファイル2のパス'
それでは例として「C:\ORACLE\PRODUCT\10.2.0\ORADATA\GOLD\CONTROL03.CTL」というパスで制御ファイルを1つ追加してみます。
ALTER SYSTEM SET CONTROL_FILES=
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\GOLD\CONTROL01.CTL',
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\GOLD\CONTROL02.CTL',
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\GOLD\CONTROL03.CTL'
SCOPE=SPFILE;
3.データベースを停止
編集したSPFILEの値をデータベースインスタンスに反映させる為には再起動が必要です。
また、制御ファイルのコピーもデータベースが停止している状態で行う必要があるため、
一旦データベースを停止します。
shutdown immediate;
4.制御ファイルのコピー
既存の制御ファイルをコピーします。コピー場所にはCONTROL_FILESパラメータの新規に追加した制御ファイルのパスを指定します。
COPY C:\ORACLE\PRODUCT\10.2.0\ORADATA\GOLD\CONTROL01.CTL
C:\ORACLE\PRODUCT\10.2.0\ORADATA\GOLD\CONTROL03.CTL
注:レイアウト上の都合で2行になっていますが、本当は1行のコマンドです。
5.データベースを再起動
SPFILEの値をデータベースインスタンスに反映させるために再起動します。
startup
6.反映の確認
V$CONTROLFILEに問い合わせデータベースインスタンスの制御ファイルを確認します。
SELECT NAME FROM V$CONTROLFILE;
NAME
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
C:\ORACLE\PRODUCT\10.2.0\ORADATA\GOLD\CONTROL01.CTL
C:\ORACLE\PRODUCT\10.2.0\ORADATA\GOLD\CONTROL02.CTL
C:\ORACLE\PRODUCT\10.2.0\ORADATA\GOLD\CONTROL03.CTL
「C:\ORACLE\PRODUCT\10.2.0\ORADATA\GOLD\CONTROL03.CTL」が追加されています。
以上で手順は完了です。
今までの手順をPFILE環境と比較出来るようにまとめてみました。
■SPFILE環境
1.サーバパラメータファイルのCONTROL_FILESパラメータを編集
2.データベースを停止
3.OSコマンドで制御ファイルをコピー
4.データベースを再起動
■PFILE環境
1.データベースを停止
2.OSコマンドで制御ファイルをコピー
3.初期化パラメータファイルのCONTROL_FILESパラメータを編集
4.データベースを再起動
どちらの環境もデータベースの再起動が必要なところは同じです。
SPFILE環境はALTER SYSTEM文でCONTROL_FILESパラメータを編集する都合上、パラメータ編集と、データベースの停止のタイミングがPFILE環境とは異なります。
|