Oracle

Oracle【pfileからspfile】を作てみよう

2020年11月23日

spfileでOracleを起動する方法ををおしえて下さい。

 

こんにちはユキトモです。

データベースを作成するにはdbcaを使って通常「GUI」で作成しますよね。

その場合、諸設定はだいたい自動に設定されています。

「 CREATE DATABASE 」コマンドを使ってデータベースを作成した場合などはほどんど何も設定されていない状態です。

筆者の環境ではOracle起動時に「pfile」で起動しているので「spfile」で起動するように設定変更しましたのでそのやり方などを説明します。

この記事でわかること

・spfileのメリット・デメリット
・pfile、spfileどちらで起動しているのか?
・pfileからspfileを作成する
・メモリーからpfile、spfileを作成する

spfileのメリット・デメリット

Oracle9i以降に追加されたバイナリー形式のパラメータファイルです。

メリット
・パラメータ変更などを再起動なしで変更できる。

デメリット
・バイナリーファイルなのでテキストエディタでは編集できない。

 

pfile,spfileどちらで起動しているのか?

現在稼働中のインスタンスがpfile、spfileのどちらで起動しているか調べる方法は、

動的パフォーマンスビューのv$spparameterを確認します。

 
desc v$spparameter

valueに値が入っている場合はspfileで起動しています。
nullの場合はpfileで起動しています。

以下のsqlを実行して、

 
--pfile,spfileどちらで起動しているか確認する
select count(*) from v$spparameter where value is not null;

・カウントが0件の場合、pfile
・0件でない場合はspfileで起動している
ということが分かります。

pfileを確認

pfileは通常「$ORACLE_HOME/dbs」直下にあります。

 
--pfileのパスを確認する
SQL> !ls -l $ORACLE_HOME/dbs/

 

pfileからspfileを作成する

構文


CREATE SPFILE='作成するspfileのフルパス' FROM PFILE='作成する元のpfileのフルパス'
 
--pfileからspfileを作成する
CREATE SPFILE='/$ORACLE_HOME/dbs/spfileorcl.ora' FROM PFILE='/$ORACLE_HOME/dbs/initorcl.ora';
--作成結果を確認する
SQL> !ls -l $ORACLE_HOME/dbs/

 

spfileに切り替える

Oralce起動時にパラメーターファイルが複数存在する場合、設定ファイルの優先順位は以下の通り

優先順位


1.起動時に指定したpfile:startup pfile='ファイル'
2.spfile[SID].ora
3.spfile.ora
4.init[SID].ora
5.init.ora

spfileを作成したので、一度Oracleを再起動してspfileで読み込まれるか確認してみます。

 
--Oracleを停止する
shutdown immediate
--Oracleを起動する
startup
--spfileで起動しているか確認する
select count(*) from v$spparameter where value is not null;

メモリーからpfile、spfileを作成する

Oracle11g以降から現在起動しているOracleのメモリから初期かパラメータファイル


・pfile
・spfile

を作成することが可能になりました。

 

pfileをメモリから作成

実際に作成してみます。

 
--initorcl.oraがすでにあるので別名で作成してみます。
create pfile='$ORACLE_HOME/dbs/initorcl_mem.ora' from memory;
--ファイルを確認します。
SQL> !ls -l $ORACLE_HOME/dbs
--内容を確認してみます。
SQL> !more $ORACLE_HOME/dbs/initorcl_mem.ora

spfileをメモリから作成

 
--spfileorcl.oraがすでにあるので別名で作成してみます。
create spfile='$ORACLE_HOME/dbs/spfileorcl_mem.ora' from memory;
--ファイルを確認します。
SQL> !ls -l $ORACLE_HOME/dbs

まとめ

pfileからspfileの作成方法を説明しました。

pfile、spfileを誤って削除してしまっても、Oracleが起動中であれば、作成することも可能であることもわかりました。


以上です。

-Oracle
-, , ,