ablog

不器用で落着きのない技術者のメモ

Oracle Database の起動時に使われた SPFILE や PFILE のパスを調べる方法

SQL> show parameter spfile
NAME                                 TYPE                             VALUE
------------------------------------ -------------------------------- ------------------------------
spfile                               string

もしくは、

SQL> select name,value from v$parameter where name='spfile';
NAME                           VALUE
------------------------------ ------------------------------------------------------------
spfile

として、VALUE にパスが表示されれば SPFILE が使われている。そして VALUE に表示された値が SPFILE のパス。表示されていなければ PFILE が使われている。


PFILE が使われている場合、PFILE のパスを調べる方法があるか調べてみたが、ないぽかった。
PMON のファイルディスクリプタを見てみたり、

$ ls -l /proc/`pgrep -f pmon`/fd
total 18
lr-x------  1 oracle oinstall 64 Apr 12 11:54 0 -> /dev/null
lr-x------  1 oracle oinstall 64 Apr 12 11:54 1 -> /dev/null
l-wx------  1 oracle oinstall 64 Apr 12 11:54 10 -> /opt/oracle/admin/orcl/bdump/alert_orcl.log
lr-x------  1 oracle oinstall 64 Apr 12 11:54 11 -> /dev/zero
lr-x------  1 oracle oinstall 64 Apr 12 11:54 12 -> /opt/oracle/10.2.0/rdbms/mesg/oraus.msb
lrwx------  1 oracle oinstall 64 Apr 12 11:54 13 -> /opt/oracle/10.2.0/dbs/hc_orcl.dat
lrwx------  1 oracle oinstall 64 Apr 12 11:54 14 -> socket:[48143]
lrwx------  1 oracle oinstall 64 Apr 12 11:54 15 -> /opt/oracle/10.2.0/dbs/lkorcl
lr-x------  1 oracle oinstall 64 Apr 12 11:54 16 -> /opt/oracle/10.2.0/rdbms/mesg/oraus.msb
lrwx------  1 oracle oinstall 64 Apr 12 11:54 17 -> socket:[48900]
lr-x------  1 oracle oinstall 64 Apr 12 11:54 2 -> /dev/null
lr-x------  1 oracle oinstall 64 Apr 12 11:54 3 -> /dev/null
lr-x------  1 oracle oinstall 64 Apr 12 11:54 4 -> /dev/null
l-wx------  1 oracle oinstall 64 Apr 12 11:54 5 -> /opt/oracle/admin/orcl/udump/orcl_ora_14491.trc
l-wx------  1 oracle oinstall 64 Apr 12 11:54 6 -> /opt/oracle/admin/orcl/bdump/alert_orcl.log
lrwx------  1 oracle oinstall 64 Apr 12 11:54 7 -> /opt/oracle/10.2.0/dbs/hc_orcl.dat
lr-x------  1 oracle oinstall 64 Apr 12 11:54 8 -> /dev/zero
lrwx------  1 oracle oinstall 64 Apr 12 11:54 9 -> /opt/oracle/10.2.0/dbs/lkinstorcl (deleted)

隠しパラメータを見てみたりしたが、

SQL> set pagesize 50000
SQL> set linesize 200
SQL> col ksppinm for a40
SQL> col ksppstvl for a60
SQL> select name.ksppinm, value.ksppstvl
	from x$ksppi name, x$ksppcv value
	where name.ksppinm like '_%'
		and name.indx = value.indx;

それらしきものはなかった。

@yoheia ちょっと調べた感じだと、pfileの時にはどこにも残らない(=確認できない?)説がありますね... ファイルハンドルも残っていない、ということは、起動時に strace で捕捉するくらいしか方法がないのかもしれません^^;;;;;

Tak H on Twitter: "@yoheia ちょっと調べた感じだと、pfileの時にはどこにも残らない(=確認できない?)説がありますね... ファイルハンドルも残っていない、ということは、起動時に strace で捕捉するくらいしか方法がないのかもしれません^^;;;;;"

http://twitter.com/takh777 さんがこう言われているから間違いなさそう。