初めましての方もそうでない方も宜しくお願い致します。
レック・テクノロジー・コンサルティングのエンジニア「佐々木」にございます。
今回の内容
今回は、Oracleの起動時(startup)の際に読み込まれる、
「パラメータファイル」について説明させて頂きます。
以下、今回の内容となります。
・パラメータファイルとは?
・パラメータファイルについて
・パラメータファイルの作成について
パラメータファイルとは?
Oracleに対して「startup」コマンドが実行され、
停止状態からnomountへ移行するタイミングで、
インスタンスやデータベースの構成情報が読み込まれます。
この構成情報をパラメータで指定したファイルがパラメータファイルです。
ここまでについては、過去ブログ(Oracleのファイルと起動)でも
『謎の偉い人がインスタンス君を叩き起こした直後に読み込まれる』と説明がありますね。
今回はもう少し掘り下げていきます。
パラメータファイルについて
■パラメータファイルの配置
パラメータファイルは、OSにより以下のパスに配置されます。・Windows系
%ORACLE_HOME%\database
・UNIX系
$ORACLE_HOME/dbs
※ORACLE_HOMEとは、Oracleソフトウェアのインストール先(フォルダ、ディレクトリ)です。
■パラメータの種類
・動的パラメータOracle起動中にALTER SYSTEM文で変更可能なパラメータを動的パラメータといいます。
動的パラメータは、変更した値が即反映されます。
・静的パラメータ
動的パラメータに対して、Oracle起動中に変更できないパラメータを静的パラメータといいます。
以降で説明するパラメータファイルを変更しておくことで、次回起動時に変更内容が反映されます。
なお、動的か静的かについては、リファレンス・マニュアルに記載されています。
■パラメータファイルの種類
パラメータファイルは、以下の2種類が存在します。・PFILE(初期化パラメータファイル)
9i以前から使用されている、テキスト形式のパラメータファイルです。
テキストエディタで(動的/静的)パラメータの変更が可能ですが、
変更した内容は次回起動時まで有効になりません。
動的パラメータで、かつ、変更を即座に反映したい場合は、ALTER SYSTEM文を実行します。
<実行例>
SQL>alter system set PGA_AGGREGATE_TARGET = 838861
※PGA_AGGREGATE_TARGETの部分に、変更したいパラメータ名を指定します。
※838861の部分に、変更後の値を指定します。
ただし、PFILE使用時のALTER SYSTEM文は、
起動中のOracleに対する一時的な変更であり、停止するとその値は消失します。
次回以降も変更後の値を適用したい場合は、前述の通り、pfileを編集しておく必要があります。
・SPFILE(サーバーパラメータファイル)
9i以降に追加されたバイナリ形式のパラメータファイルです。
バイナリファイルのため、PFILEのようにテキストエディタで変更することはできません。
SPFILE使用時は、動的パラメータも静的パラメータもALTER SYSTEM文で変更を行います。
<実行例>
SQL> alter system set PGA_AGGREGATE_TARGET = 838861
SPFILE使用時は、ALTER SYSTEM文を実行する際に変更を適用する範囲を指定できます。
<実行例>
SQL> alter system set PGA_AGGREGATE_TARGET = 838861 scope = memory(他、spfileかboth)
・memory = 現在起動中のインスタンスにのみ適用され、再起動後は以前の値が使用される。
・spfile = 変更をspfileに書き込み、次回再起動時に適用させる。
・both = 上記二つを併せた指定でデフォルト値。現在のインスタンス及び次回再起動時の両方に適用させる。
■デフォルトのパラメータファイル名
・PFILE(初期化パラメータファイル)init<SID>.ora
・SPFILE(サーバーパラメータファイル)
SPFILE<SID>.ora
■優先順位
前述の配置パスに複数のパラメータファイルが混在していた場合、startup時に以下の優先順位で読み込んでいきます。
1:startupコマンド実行時に指定したファイル(startup pfile='<ファイル名>')
2:SPFILE<SID>.oraファイル
3:SPFILE.oraファイル
4:init<SID>.oraファイル
パラメータファイルの作成について
createコマンドを実行することにより、
・PFILEの内容をコピーしてSPFILEを作成する
SQL> create spfile from pfile;
・SPFILEの内容をコピーしてPFILEを作成する
SQL> create pfile from spfile;
ことが可能です。
※どちらの文も、PFILE/SPFILEそれぞれに指定のファイル名を追記できます。
何も指定しなかった場合は、元ファイルとして前述の配置パスのものが使用され、
デフォルトの名前で同じパスに作成、上書きされます。
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
注)実行前には、パラメータファイルのコピーを実行しておきましょう。
SPFILEが存在し、PFILEが存在しない状態で
create 「spfile」 from 「pfile」;
を実行してしまうと、SPFILEが削除されます。
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
まとめ
・パラメータファイルは2種類(PFILEとSPFILE)存在し、パラメータ管理の特徴が異なる
・startup時に読み込まれるインスタンスやデータベースの構成情報を指定する
・環境に存在するパラメータファイルの内容を流用し、新たなパラメータファイルを作成できる
最後に
startup時に読み込みされるパラメータファイルの概要につきまして説明させて頂きました。
拙い内容ではありますが、皆様のOracle生活の一助になれば幸いです。
以上、宜しくお願い致します。