Oracleの初期化パラメータファイルとは

初期化パラメータファイルとは

Oracleは起動時にファイルを読みこんでDBに必要な初期設定をします。このファイルのことを初期化パラメータファイルといいます。

Oracleはこの初期化パラメータファイルに様々な設定値をもたせています。例えば、メモリのサイズ(SGA・PGAサイズ)、バックアップ出力先(アーカイブログ)などなど。

参照:初期化パラメータの表示と変更

Oracleの初期化パラメータファイルは2種類

Oracleの初期化パラメータファイルは2種類あります。

  1. PFILE・・・テキストファイル形式。手動で書き換える初期化パラメータファイル
  2. SPFILE・・・バイナリ形式。手動で書き換えできない。SQLコマンドで設定するサーバー・パラメータファイル

「PFILE」と「SPFILE」ですね。PFILEはテキストファイル、SPFILEはバイナリファイルです。

初期化パラメータファイルの設定方法

PFILEはテキストエディタで設定値を書き換え、Oracleを再起動をして反映させます。PFILEは旧式の方法であり、再起動が必要なので面倒です。

一方、SPFILEはALTER SYSTEMコマンドで設定値を変更でき、オプションコマンドのSCOPEをBOTHにすれば即反映されます。再起動も必要ないので簡単です。

初期化パラメータファイルのファイル名とファイルパス

PFILE・SPFILEのファイル名です。

  • PFILE・・・initXXX.ora
  • SPFILE・・・spfileXXX.ora(XXX:SID)

PFILEのファイルパスは自力で探すしかありません。Windowsのファイル検索をしてください。(例えば「init」で検索する)

SPFILEは%ORACLE_HOME%\databaseにあります。

PFILEとSPFILEの切り替え

PFILE,SPFILEのどちらを適用するか?その設定はどうやるのでしょうか?ちょっと変な仕様ですが、spfileXXX.oraがあればSPFILEが有効になり、なければPFILEが有効となります。

具体的にいうと、このようになります。(SPFILEがデフォルトの場所にある場合)

  • %ORACLE_HOME%\database\spfileXXX.oraがあればSPFILEが有効でPFILEは無効
  • %ORACLE_HOME%\database\spfileXXX.oraがなければPFILEが有効

PFILEとSPFILEのどちらで運用されている?

それでは今PFILE,SPFILEのどちらで起動しているのか?それはコマンドで確認できます。

SPFILEで起動しているかを確認するSQL

この結果がなければPFILEで起動しています。結果のパスが返ってこればSPFILEで起動しています。現状がPFILEであればSPFILEにした方が何かと便利です。

SPFILEを作成するSQL

SPFILEは実はゼロから作ることはできないのです。PFILEを元にSPFILEを作成します。それが上記のSQLです。SPFILEが作成できたらOracleを再起動します。再起動後にSPFILEが読み込まれてインスタンスが起動します。以上でSPFILEの設定は完了です。

初期化パラメータファイルのまとめ

初期化パラメータというのはOracleの各種設定値のことです。PFILEを使うか?SPFILEを使うか?その設定が少しややこしいですね。

ここまで面倒な仕様にしなくても・・と考えますが、Oracleはこのように変わった仕様がチラホラあるため、めげずに付き合っていくしかありません。

  • PFILEとSPFILEはOracleを初期化設定値を管理するファイル
  • PFILEとSPFILEのどちらかを選択する
  • PFILEは設定値を変更したら再起動が必要
  • SPFILEは設定値をコマンドで変更でき、再起動不要

以上、初期化パラメータファイル(PFILE、SPFILE)の説明でした。