SPFILE 運用 Tips

SPFILE の再作成と修復 (マウントできない状態の場合)

サーバー・パラメータ・ファイル (SPFILE) は ALTER SYSTEM SET 〜 コマンド で初期化パラメータを編集する。しかし、ALTER SYSTEM コマンドのデフォルト(scope=both) 実行にはデータベースのマウントが必要。
例えばメモリやプロセス関連の初期化パラメータに誤った設定を行なうとマウントができないことがあり、初期化パラメータを元に戻せないことがある。

以下の手順でサーバー・パラメータ・ファイルを一旦テキスト化して編集する。

-- PFILE 作成 (※ [] 内は省略してもよい )
CREATE PFILE [='initXXX.ora'] FROM SPFILE [='spfileXXX.ora'];
-- PFILE 編集
-- ...
-- SPFILE 作成
CREATE SPFILE [='spfileXXX.ora'] FROM PFILE [='initXXX.ora'];

により SPFILE(バイナリ) ⇒ CREATE PFILE ⇒ PFILE(テキスト) ⇒ テキストファイル編集 ⇒ CREATE SPFILE ⇒ SPFILE ⇒ インスタンス停止 ⇒ SPFILE 置き換えといった手続きの復旧を行う。

(※ 上書き注意) ファイルを指定しない場合
サーバー・パラメータ・ファイル名には $ORACLE_HOME/dbs/spfile<SID>.ora
初期化パラメータファイル名には $ORACLE_HOME/init<SID>.ora が使用される。
10g R2 であれば現行使用中の SPFILE を上書きできない。(shutdown 後に行なう)

初期化パラメータ・ファイルとの併用(起動時に使用する SPFILE を指定する)

サーバー・パラメータファイルの位置を指定することでデータベースの起動時に使用する初期化パラメータを SPFILE(共用設定) と PFILE(サーバー個別のテスト設定) に分割して管理することが可能。 テスト環境で複数のインスタンスの場合には PFILE ファイルの運用が便利な場合(※)もある。

(※) SPFILE を手軽に変更できない状況でサーバー固有のパラメータを使用せずにインスタンス個別で初期化パラメータの値を変更してテストが可能。

STARTUP PFILE=initXXX.ora で 起動 pfile 内で

-- initXXX.ora
SPFILE=/共有ディスク/・・・/test_spfile.ora
-- ↓↓↓↓ ここの記述で ↑↑↑ の SPFILE のパラメータを上書きすることができる。
param_name1=overwrite_value
param_name2=overwrite_value
param_name3=overwrite_value

どれが正しい? spfileDBNAME.ora ? spfile$ORACLE_SID.ora ? spfileSID.ora ?

マニュアル中に サーバー・パラメータ・ファイル= spfileDBNAME.ora という記述がされている所が数ヵ所ある。
しかし、ORACLE_SID を変更する方法 の結果(Linux)から、ファイル名は spfile$ORACLE_SID.ora が正しいのではないかと思い、マニュアルでの記載を探してみると、 その記述を管理者マニュアルで見つけた。
プラットフォームによって変化し、spfileDBNAME か、spfileSID になると記載されている。

管理者マニュアル上のサーバー・パラメータ・ファイルの作成での説明では

UNIXWindowsLinux
spfileDBNAME.oraspfileSID.oraspfile$ORACLE_SID.ora = spfileSID.ora
(記載みつからず)

とある。 Linux が Unix と異なり Windows と同じ設定なのは少々違和感がある。…個別マニュアルでの記載を探したが見つけることはできなかった。
(もしかするとマニュアルでも、混同して書かれているのかもしれない。調査してもあまり価値もなさそうなので、塩漬けにしておく事にした。 (^^;)



 
 | サーバー・パラメータ・ファイル | サーバー・パラメータ・ファイル (Tips) |

サーバー・パラメータ・ファイル (Tips)の関連トピックス

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle のライセンスがわからない…
Oracle Direct (ネットで聞いても最後はここで要確認)