※こちらのコーナーは、日々Oracle DBAとして修行中の新人スタッフの日記です。
(メールマガジンVOL.86にて掲載してました。)

==========================================================================
Oracle DBAの毎日 No.2 ~ PFILEとSPFILE 2 ~
==========================================================================
検証機でテスト中...
WIndows
Oracle 10g

新人
この間、SPFILEが$ORACLE_HOME/dbs配下、PFILEが$ORACLE_HOME/database配下にあって
PFILEにはSPFILEのパスが記述されてるのを確認しましたよね。
Windows版のOracle10gだとデフォルトがこんな構成になっている…と。UNIXとか他のOS
だとどうなんですかね。

先輩
通常は$ORACLE_HOME/dbs配下ね。Windowsの場合は、database配下にPFILE、dbs配下に
SPFILEがあるのがデフォルトだけど、SPFILEをdatabase配下に置いておけば、PFILEで
SPFILEのパスを記述しなくてもSPFILEで起動できるのよ。



そうですか。実は、まだ疑問が…。

 SPFILEとPFILEが両方存在した場合、SPFILEが優先して使用されるのかを確認しました
けど、今あるPFILE(init<ORACLE_SID>.ora)の中身をみたら、SPFILEのパスが記述さ
れてましたよね。

 PFILEって色んなパラメータが記述されているはずでは?
PFILEで起動する場合、どうするのでしょうか。



PFILEで起動したいならinit.oraを編集してパラメータを記述しておけばいいのよ。

 例えばデフォルトで用意されているinit.oraをテキストで編集して、init.oraに
リネームし、$ORACLE_HOME/dbs配下(Windowsの場合は$ORACLE_HOME/database配下)に
置けばPFILEで起動できるのよ。


なるほど。でもPFILEを一から編集って手間ですね。



だったら今使ってるSPFILEからPFILEを作れば?

今SPFILEを使っているなら
create pfile='パス(pfileを作る場所) init.ora' from spfile
で作れるわよ。
 逆にPFILEからSPFILEを作るなら
 create spfile='パス(spfileを作る場所)spfile.ora'
   from pfile='パス(pfileがある場所)
 で出来るのよ。



やってみます。

 SQL> create pfile='D:\oracle\product\10.2.0\db_1
         \database\inittest.ora' from spfile;

 ファイルが作成されました。 


できました。このPFILEで起動したければinit.oraにリネームして
$ORACLE_HOME/dbs配下(Windowsの場合は$ORACLE_HOME/database配下)に置けばいいんで
すね。



そう。でもSPFILEが存在していた場合はSPFILEで起動してしまうので、起動時にPFILE
を指定して起動するか、SPFILEを別の場所に移すかリネームしておけばPFILEで起動で
きるわよ。
 ちなみに起動時にPFILEを指定するには
 startup pfile='D:\oracle\product\10.2.0\db_1\database\inittest.ora'
 で明示的に指定すること。


わかりました!グッド!

いつになったら一人前になるんだか・・・しょぼん


<<日記No.3に続く>>
※こちらのコーナーは、日々Oracle DBAとして修行中の新人スタッフの日記です。
(メールマガジンVOL.85にて掲載してました。)

==========================================================================
Oracle DBAの毎日 No.1 ~ PFILEとSPFILE ~
==========================================================================
検証機でテスト中の時のこと...
WIndows
Oracle 10g

新人
うーんガーン


先輩
どうしたの?

ORACLE 9iからPFILE(初期化パラメータファイル)とSPFILE(サーバーパラメータファ
イル)の2つがありますよね。
ファイルが両方存在する場合、SPFILEの方が優先されるって書いてありました。でも
今使っているファイルって実際、本当にSPFILEなのかなと思って。


じゃ、確認してみよう。コマンドからshow parameter spfileで確認できるよ。べーっだ!

SQL> show parameter spfile

NAME TYPE VALUE
------------- ---------------- ------------------------------
spfile string C:\ORACLE\10.2.0\DBS\
                SPFILE<ORACLE_SID>.ORA

VALUEの所にファイル名が書いてあれば、SPFILE使用。何もなければPFILE使用してる
ということだよね。

わかりました。じゃ、この場合、実際SPFILEを使用している事になるんですね。
 このファイル、C:\ORACLE\10.2.0\DB_1\DBS配下にあるって事ですね。見てみよう。
DBS配下には、SPFILE<ORACLE_SID>.ORAとinitdw.oraがあるけど、initdw.oraって
データウェアハウスなんかのサンプルじゃなかったですか?
本来のPFILEってどこにあるんだろう。通常は、$ORACLE_HOME/dbs配下にあるはずだ
けど…


実は、Windows版のOracle10gでは$ORACLE_HOME/database配下にPFILEがあるんだよ。
Windows版のOracle10gでは$ORACLE_HOME/databaseにinit<ORACLE_SID>.oraが配置
され、このファイルには$ORACLE_HOME/dbs配下にあるSPFILE<ORACLE_SID>.ORAの
場所を示していて、$ORACLE_HOME/dbs配下にSPFILE<ORACLE_SID>.ORAが配置されて
いることがあるよ。

$ORACLE_HOME/database配下にありました。init<ORACLE_SID>.oraの中を見てみる
と確かにSPFILEのパスが記述されていますね。なるほどー、勉強になりましたニコニコ


・・・早くOracleの基本くらい覚えてくださいむかっ

<<日記No.2に続く>>