●ASMディスク上に設置されたspfileをリストアする際の注意点
OCR情報確認
srvctl config database -d [DB_NAME] -a
OCR内spfile情報変更
srvctl modify database -d [DB_NAME] -p '[spfileパス]'
- 基本的にASMCMDでのコピーはASMディスク内であってもエラーとなる為出来ない(?)
※ローカルにコピーは可能だが、ASMディスク上へのコピー時にエラーとなる。
- インスタンスが起動していない、またはNOMOUNT状態でバックアップpfileからspfileを作成した場合、ASMディスク上に「DB_UNKNOWN」ディレクトリが作成され、実ファイルは+DG_SPF/DB_UNKNOWN/PARAMETERFILE/配下に設置される。
※create spfile時に指定したパスにはエイリアスが作成される。
- 一旦バックアップpfileを使用して「MOUNT」にて起動した後でcreate spfile文を実行する事で上記現象を回避できる。
上記例の場合 +DG_SPF/[DB_NAME]/PARAMETERFILE/ 配下に実ファイルが設置される
- 作業手順まとめ
1.現在のOCR情報確認
2.DB停止
3.Sql/Plusからmountでインスタンス起動
※起動できない場合はpfile=〜を使用して仮pfileから起動
※パラメータ修正も行う場合は用意した修正用pfileから起動
4.create spfile 〜 from pfile 〜文でspfile更新
この時変更後のフルパスを指定する
復旧作業の場合はOCR情報で表示されたエイリアスを指定する
※作成後、念の為create pfile from spfile;文にてファイルを出力して確認すると吉
※作成時点でASMCMDにて実ファイルが想定パスに作成されたことを確認
5.一旦インスタンス停止
6.srvctlコマンドにてOCR内spfileパスの変更
★ファイルパスを''(シングルクォート)で囲むと正常に登録できないので注意
7.改めてsrvctlコマンドにてDB起動
8.旧spfileの削除
9.★$ORACLE_HOME/dbs/spfile[DB_NAME].ora をリネームして退避
※障害時等でSQL/Plusから起動する場合に上記ファイルを読み込んで起動されることを防ぐために事前にリネームしておくと吉。