Oracle中的spfile和 pfile
在数据库启动时,要读参数文件,可以看到有spfile.ora ,initENMOEDU.ora,spfileENMOEDU.ora三个参数文件,那么数据库在启动的时候到底是读的哪一个参数文件呢?
(一)当三个文件都存在时
[oracle@ENMOEDU dbs]$ ls
hc_ENMOEDU.dat init.ora orapwENMOEDU spfile.ora initENMOEDU.ora lkENMOEDU spfileENMOEDU.ora
[oracle@ENMOEDU ~]$ sqlplus / as sysdba
SYS@ENMOEDU > startup
SYS@ENMOEDU > show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/spfileENMOEDU.ora
可以看到数据库将会优先读取spfileENMOEDU.ora文件。
(二)那么在数据库启动的时候就找不到文件spfileENMOEDU.ora。那么数据库将会怎么样呢?
[oracle@ENMOEDU dbs]$ mv spfileENMOEDU.ora spfileENMOEDU.ora.bak
[oracle@ENMOEDU dbs]$ ls
hc_ENMOEDU.dat init.ora orapwENMOEDU spfile.ora
initENMOEDU.ora lkENMOEDU spfileENMOEDU.ora.bak
[oracle@ENMOEDU ~]$ sqlplus / as sysdba
SYS@ENMOEDU > startup
SYS@ENMOEDU > show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/spfile.ora
我们可以看到数据库是通过spfile.ora开启的;
(三)当没有spfileENMOEDU.ora,spfile.ora文件的时候数据库是怎么启动的呢?
[oracle@ENMOEDU dbs]$ mv spfile.ora spfile.ora.bak
[oracle@ENMOEDU dbs]$ ls
hc_ENMOEDU.dat init.ora orapwENMOEDU spfile.ora.bak
initENMOEDU.ora lkENMOEDU spfileENMOEDU.ora.bak
[oracle@ENMOEDU ~]$ sqlplus / as sysdba
SYS@ENMOEDU > startup
SYS@ENMOEDU > show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string
SYS@ENMOEDU > select decode(count(*),1,'spfile','pfile') from v$spparameter where rownum=1 and isspecified = 'TRUE';
DECODE
------
Pfile
当spfileENMOEDU.ora,spfile.ora都没有的时候,oracle就会执行initENMOEDU.ora文件。
总结:在oracle启动数据库的时候,默认优先读spfileENMOEDU.ora,其次是spfile.ora,最后是initENMOEDU.ora;
2014.1.20
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29435844/viewspace-1073226/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29435844/viewspace-1073226/