pfile, spfile,参数文件,服务器参数文件
1、 PFILE和SPFILE定义
PFILE:文本参数文件(TEXT PARAMETER FILE)又叫静态参数文件,ASCII文本文件(可以直接编辑)
SPFILE:服务器参数文件(SERVER PARAMETER FILE)。二进制文件(不可以直接编辑,db启动后通过sql命令在线修改。)
Oracle启动过程中选择参数文件的顺序:
从Oracle9i开始,spfile被引入Oracle数据库,Oracle首选spfile<ORACLE_SID>.ora文件作为启动参数文件;如果该文件不存在,Oracle选择spfile.ora文件;如果前两者都不存在,Oracle将会选择init<ORACLE_SID>.ora文件;如果以上三个文件都不存在,Oracle将无法创建和启动instance。
Oracle在启动过程中,会在特定的路径中寻找参数文件,在Unix/Linux下的路径为$ORACLE_HOME/dbs目录,在WINDOWS上的路径为$ORACLE_HOME/database目录。
关于参数文件的详细说明:
新建一个数据库以后,默认启动文件是/dbs目录下的spfile,,执行create pfile from spfile以后,重启数据库,执行show parameter spfile会显示value为空,说明这时不是以spfile启动的,这时执行create pfile from spfile,会出现错误,因为现在没有使用spfile,这里用命令create spfile frompfile ,再重启数据库,发现启动参数为spfile。在刚安装完oracle以后,spfile和pfile会出 现在/dbs目录下,这时启动参数为spfile,执行create pfiel from spfile 以后,会在/database目录下产生一个pfile,这时重启数据库,会以/database目录下的pfile启动,重启后,执行create spfile from pfile,会在/database下产生一个spfile文件,这时重启数据库会以/database目录下的spfile启动。也就是说oracle会先找/database目录下的spfile和pfile,再找/dbs目录下的spfile和pfile。
2、 存放位置,查询v$parameter视图,方式有两种。
1)SQL> select vp.VALUE from v$parameter vp where vp.NAME = 'spfile';
VALUE
--------------------------------------------------------------------------------
F:/ORACLE/PRODUCT/10.2.0/DB_3/DBS/SPFILEFFTEST.ORA
2)SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string F:/ORACLE/PRODUCT/10.2.0/DB_3/DBS/SPFILEFFTEST.ORA
实际上,以上两种方式是一样的。方式2)是方式1)的封装语句,从告警文件中可以发现,show parameter其实是执行了方式1)的语句。
一般保存位置:
Spfile位置:$/oracle/product/10.2.0/db_1/dbs/spfile<sid>.ora
对于Windows其位置是:$ORACLE_HOME/database/spfile<SID>.ora
pfile位置:$oracle/oracle/product/10.2.0/admin/<sid>/init.ora.xxxxx
在$ORACLE_BASE/admin/<sid>/pfile下,你很可能可以看到一个类似这样init.ora.1 92003215317]名字的文件,这就是初始化参数文件,只是跟上了时间戳。对于Oracle920 ,缺省的就使用spfile启动,但是这个spfile不是凭空而来,而是根据这个文件创建而来 ,你可以去掉这个长后缀,就是标准的pfile文件了。
3、 判断db系统以pfile还是spfile启动?
1) 用show parameter spfile命令,如果Value为空,则表示使用以pfile启动db,未创建spfile。
SQL> show parameter spfile;
SQL> select name, value from v$parameter where name = 'spfile';
--以下是变种方式:
SQL> SELECT DECODE(value, NULL, 'PFILE', 'SPFILE') "Init File Type"
FROM sys.v_$parameter WHERE name = 'spfile';
2) 查询v$spparameter视图。如果isspecified