2009年2月6日金曜日

oracleのSPFILEのなぞ

オラクルのSPFILEは、てっきり%oracle_home%/dbs/spfile<SID>.oraかと思っていたが実は厄介なことがあるわけで…

%oracle_home%/dbs/spfile<SID>.oraを削除やリネームしてしまうと、以降は%oracle_home%/database/フォルダの中でspfileやpfileを探すようになる。(10.2.0だけかも)

ためしに以下のようなテストをしてみた。


1.インストール時のspfile位置の確認
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string
D:\ORACLE\PRODUCT\10.2.0\DB_1\DBS\SPFILEORCL.ORA


SQL> create pfile from spfile;
ファイルが作成されました。

SQL> create spfile from pfile;
ファイルが作成されました。

SQL> shutdown immediate;
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。

SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 171969412 bytes
Database Buffers 432013312 bytes
Redo Buffers 7135232 bytes
データベースがマウントされました。
データベースがオープンされました。

SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string
D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\SPFILEORCL.ORA

この後に%oracle_home%/database/のspfileとpfileを削除すると
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: ?p?????[?^?E?t?@?C??'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\INITORCL.
?????B

という具合に起動できなくなる。
create pfileした時点で再起動するとすでに%oracle_home%/database/フォルダしか見なくなった。
なぜこんなややこしいことを。


以前にlifekeeperを使っているせいでPFILEは使えないと思っていたこと、はきっとこのせいだ。
インストール時にSPFILEからPFILEを作成して、編集を行っていたのであろう。
設定担当者に聴いてもいまいち要領を得ない回答ばかりだったがほぼ解決のはず。


今確認したらdatabase/の中にspfileもpfileもある。
こんなときってSPFILEが優先されるんじゃなかった?
なぜだ…

参考にしたのは このページ いつもお世話になっています。

0 件のコメント: