oracle 資料庫兩種引數檔案

達芬奇的夢發表於2017-03-17

資料庫引數檔案分為二類:

1.初始引數檔案:pfile(initialization parameter file)
2.
伺服器引數檔案:spfile(server-side parameter file)
主要的區別是:
1.pfile
是文字檔案,spfile是二進位制檔案
2.pfile
可以透過文字編輯器修改,spfile主要是透過alter system set parameter=value [scope=memory|spfile|both]修改

oracle啟動時,讀取引數檔案的順序是:
1.spfile$ORACLE_SID.ORA(
建立資料庫時建立的spfile)
2.spfile.ora(oracle
預設spfile檔案)
3.init$ORACLE_SID.ora(
建立資料庫時建立的pfile)
4.init.ora(oracle
預設pfile檔案)
oracle
會按順序讀出這些引數檔案,如果在1沒有找到就去找2,直到找到。

和引數檔案相關常用如下:

1.檢視當前使用的spfilepfile的位置:show parameter spfile/show parameter pfile

2.檢視引數檔案的具體設定:show parameters

3.spfile獲取pfile

create pfile='pfilesid.ora' from spfile

create pfile='pfilesid.ora' from spfile='/$ORACLE_HOME/dbs/spfile.ora'

4.修改引數

alter system set parameter=value [scope=memory|spfile|both]
1.
修改後當前例項起作用,重啟資料庫不起作用:scope=memory
2.
修改後當前例項不起作用,下次重啟資料庫才起作用:scope=spfile
3.
修改後當前例項起作用,下次重啟資料庫也起作用:scope=both
Notice
:命令alter system set parameter=value在沒有加scope選項時,預設值是什麼呢?多數朋友可能不加思索就會回答both這答案,實際的情況是,當oracle在以spfile引數啟動時,預設值是both,而以pfile啟動時,預設值是memory,也就是隻修改當前值。所以如果不能確定啟動的引數檔案,可以用show parameter spfile檢視。

5.指定初始引數檔案啟動資料庫:startup pfile='/$ORACLE_HOME/dbs/init$ORACLE_SID.ora'
不能以指定伺服器引數檔案spfile來啟動資料庫,可以先將spfile轉換成pfile,再用這個命令來達到目的。

6.檢視系統是以pfile還是spfile啟動:show parameter spfile。如果是null值,就是pfile啟動的。

 

2.引數檔案的動作原理
oracle
例項在啟動時,會去讀取引數檔案中的配置,這個過程是這樣的:

資料庫的startup命令中可以指定以哪個pfile來啟動,但是請注意,只能指定pfile,不 能指定spfile

當使用不帶pfile 子句的startup 命令時,Oracle 將從平臺指定的預設位置上的伺服器 引數檔案(spfile) 中讀取初始化引數。Oracle查詢spfile或者init.ora的順序是:在平臺指定的預設位置上,Oracle首先查詢名為spfile$ORACLE_SID.ora的檔案,如果沒有就查詢spfile.ora檔案,還沒有的話,就找init$ORACLE_SID.ora檔案。

$ORACLE_BASE\admin\db_name\spfile下,你可以看到一個類似這樣init.ora.1 92003215317]名字的檔案,這就是初始化引數檔案,只是跟上了時間戳。對於Oracle920 ,預設的就使用spfile啟動,但是這個spfile不是憑空而來,而是根據這個檔案建立而來 ,你可以去掉這個長字尾,就是標準的pfile檔案了。

 

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

相關文章