初期パラメータファイル pfileとspfile

通常は、spfile (バイナリ初期化パラメータ)で運用している環境が大半だと思うが、
例えば spfile が壊れてしまった場合に、臨時で pfile から起動することがある。

pfile のまま運用?

障害復旧に安心し、そのまま稼動。後日 alter system set ~ scope = spfile
で動的パラメータの変更を試みた時に失敗し、実は pfile のまま
稼動していたことが判明・・。なんてこともあり得る話。

そんな時に限って、動的パラメータ変更指令がきたり。
「切替えるのを忘れてたからインスタンス再起動させて!」なんて言えないわけです。

v$spparameterを確認する

現在稼働中の DB インスタンスが pfile、spfile のどちらを使用しているのかを
知りたい場合は、動的パフォーマンスビューの v$spparameter を参照すればよい。

SQL> desc v$spparameter

 名前               NULL?    型
 ---------------- -------- ---------------
 SID                       VARCHAR2(80)
 NAME                      VARCHAR2(80)
 TYPE                      VARCHAR2(11)
 VALUE                     VARCHAR2(255)
 DISPLAY_VALUE             VARCHAR2(255)
 ISSPECIFIED               VARCHAR2(6)
 ORDINAL                   NUMBER
 UPDATE_COMMENT            VARCHAR2(255)

spfile で起動されている場合は valueに値が入っているが、
pfile の場合は value が null になっている。

以下の SQL を実行して、カウントが0件なら pfile、
0件でないなら spfile という判別ができる。

select count(*) from v$spparameter where value is not null;

関連記事