【Oracleの初期化パラメータ】SPFILEの動的パラメータと静的パラメータを変更する

インスタンスを立ち上げる時に読み込む設定ファイルを初期化パラメータファイルと言います。最大メモリー数とか利用可能なメモリー数とかが書いてあります。

覚えるべきキーワード
・初期化パラメータファイル
・サーバーパラメータファイル(SPFILE)
・テキスト初期化パラメータファイル(PFILE)
・STARTUP PFILE
・動的パラメータ
・静的パラメータ
・SCOPE句
・MEMORY
・SPFILE
・BOTH

インスタンスは初期化パラメータに応じて、データベースをコントロールします。

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

初期化パラメータファイルは、サーバーパラメータファイル(SPFILE)とテキスト初期化パラメータファイル(PFILE)の2種類がありますが、インスタンスが読み込むのはどちらか1つです。Oracleは、SPFILEを読み込むデフォルト設定なので、指定がない場合はSPFILEを読み込みます。インスタンス1つに対して1つの初期化パラメータファイルを読み込みます。
現行のデータベースがSPFILEか、PFILEを使っているかは、SPFILEのパスを調べればわかるはずです。
SQL*Plusで以下のSQLを実行した場合、SPFILEを使っていれば、パスが表示されます。パスが表示されればSPFILE、非表示ならPFILEを使っています。

サーバーパラメータファイル(SPFILE)

SPFILEは自己チューニングでも使われるなど、PFILEよりも重要性の高い初期化パラメータファイルです。
PFILEを使うメリットがあまりないので、原則SPFILEを使います。(ほとんどのDBがSPFILEなのでは?)
パスは$ORACLE_HOME/dbs/spfile.oraです。SPFILEはバイナリファイルのため、パラメータ値を変更する場合はALTER SYSTEMを使います。
テキストエディタの編集はもちろん、できません。
SPFILEを読み込んでインスタンスを起動させたい時は以下のように書きます。

デフォルトはSPFILEなので、SQL*Plusで、ふつうにインスタンスを起動するコマンド:STARTUPを実行するだけです。

テキスト初期化パラメータファイル(PFILE)

PFILEはたいてい使いませんので、さらっと紹介します。パスは$ORACLE_HOME/dbs/init.oraです。PFILEはテキストなので直接テキストエディタで編集が可能です。PFILEを読み込んでインスタンスを起動させたい時はインスタンス起動のタイミングで以下のように書きます。

ただ、ほとんど使う機会はないと思います。

初期化パラメータファイルに記載するパラメータ

ということで、基本はSPFILEに初期化パラメータを記載します。そのため、ここからはSPFIEの使用を前提として、話を進めていきます。SPFILEに記載するパラメータは動的パラメータと静的パラメータの2種類です。「このパラメータは動的パラメータファイル、このパラメータは静的パラメータファイル」と決まっています。

パラメータ設定時にはSCOPE句も設定できます。というか、設定する必要があります。SCOPEは、パラメータの変更範囲を指定する句です。現行インスタンスのみ変更する、SPFILEだけ変更するなど、状況に応じて指定を変えます。

【SCOPE句の説明】

SCOPE句 説明
MEMORY 現行インスタンスに即座に適用されますが、インスタンスが停止すると元の値に戻ります。再起動すると元の値になります。一時的に使うSCOPE句です。
SPFILE SPFILEに対して変更が適用されますが、即座に反映はされません。インスタンスを再起動後に変更値が反映されます。
BOTH MEMORYとSPFILEを合わさった指定がBOTHです。(だから、BOTHなのね。)BOTH指定すると、変更値は即座に現行インスタンスに反映されて、SPFILEにも変更が適用されます

SCOPE句はパラメータ変更時に設定が必要と言いましたが、記載しない場合でもそれぞれデフォルトが設定されます。SPFILEはSCOPE=BOTH、PFILEはSCOPE=MEMORYがデフォルト設定です。
動的パラメータ、静的パラメータによってもSCOPE句はルールがあります。動的パラメータは、MEMORY、SPFILE、BOTHを自由に指定できますが、静的パラメータは、SPFILEのみです。

動的パラメータ

代表的な動的パラメータはMEMORY_TARGET、SGA_TARGET、PGA_AGGREGATE_TARGET、DB_CACHE_SIZE、SHARED_POOL_SIZE、JAVA_POOL_SIZE、STREAMS_CACHE_SIZE、LARGE_POOL_SIZEです。

例えば、SPFILEに記載されているMEMORY_TARGETを変更する場合は以下のように書きます。

SCOPEの設定は上の説明を参考に設定してください。

SCOPE句を記載しない場合、SPFILEならSCOPE=BOTHがデフォルトなので、現行インスタンス、SPFILE共に変更となります。PFILEなら、SCOPE=MEMORYがデフォルトなので、現行インスタンスのみ変更されます。

静的パラメータ

静的パラメータは、インスタンスが稼働中に変更しても、即座に反映されません。インスタンス再起動により、変更値は反映します。
代表的な静的パラメータは、MEMORY_MAX_TARGET、SGA_MAX_SIZE、LOG_BUFFERです。

例えば、SPFILEに記載されているMEMORY_MAX_TARGETを変更する場合は以下のように書きます。

静的パラメータはSCOPE=SPFILEだけです。他のSCOPE句だとエラーになるので、SCOPE=SPFILEの一択です。

【最後に】
初期化パラメータは、SPFILEやPFILE、動的パラメータ、静的パラメータ、SCOPEなどややこしいですが、何度も言うように基本はSPFILEです。
SPFILEを使ったパラメータ値変更の方法を知っておけば、DB管理で役に立つと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です