Oracle中的spfile和 pfile

DB_SUN發表於2014-01-20

                                        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.oraspfile.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.oraspfile.ora都沒有的時候,oracle就會執行initENMOEDU.ora檔案。

總結:在oracle啟動資料庫的時候,預設優先讀spfileENMOEDU.ora,其次是spfile.ora,最後是initENMOEDU.ora



2014.1.20

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29435844/viewspace-1073226/,如需轉載,請註明出處,否則將追究法律責任。

相關文章