oracle啟動中使用參數文件一般有如下幾種情況
在非rac環境下,oracle數據庫的參數文件默認放在$ORACLE_HOME/dbs目錄下,oracle自動尋找參數文件的順序是
spfile$ORACLE_SID.ora -> spfile.ora -> init$ORACLE_SID.ora
也可以手工啟動非默認的pfile和spfile文件
STARTUP PFILE = /u01/oracle/dbs/myinit.ora
如果想啟動非默認的spfile文件,建議采用如下方法:
pfile文件啟動
STARTUP PFILE = /u01/oracle/dbs/spf_init.ora
pfile文件中通過SPFILE參數指定spfile文件的位置
cat /u01/oracle/dbs/spf_init.ora
SPFILE = /u01/oracle/dbs/test_spfile.ora
如果使用裸設備或者ASM存儲spfile文件,一般的做法是
修改默認的pfile文件
vi $ORACLE_HOME/dbs/init$ORACLE_SID.ora
spfile='+Data/TYOLAP/spfile/spfile$ORACLE_SID.ora'
在oracle rac環境下,情況稍微有些復雜,pfile啟動和單實例類似,每個實例均設置自己的pfile文件。而spfile啟動,一般建議spfile文件放在共享存儲上
如果共享存儲是裸設備,官方文檔建議采用pfile連接的方式,裸設備在oracle 10g rac版本中比較常見,方法如下
1,使用每個實例的默認pfile文件啟動
$ORACLE_HOME/dbs/init$ORACLE_SID.ora
2,pfile文件指向共享的SPFILE
SPFILE='/dev/vx/rdsk/vg_zw_data1/lv_zw_spfile'
如果使用ASM放置spfile文件,SPFILE參數指向ASM中的路徑即可
SPFILE='+disk_group_name/dbunique_name/spfiledbname.ora'
則同sqlplus啟動,在默認目錄查找
[oracle@dtydb5 ~]$ srvctl config database -d ms4adb -a Database unique name: ms4adb Database name: ms4adb Oracle home: /oracle/app/oracle/product/11.2.0/db_1 Oracle user: oracle Spfile: +DATA/ms4adb/spfiletest.ora Domain: Start options: open Stop options: immediate Database role: PRIMARY Management policy: AUTOMATIC Server pools: ms4adb Database instances: ms4adb1,ms4adb2,ms4adb3 Disk Groups: DATA Mount point paths: Services: Type: RAC Database is enabled Database is administrator managed
2,參數文件使用默認路徑下的配置
sys@TYOLAP3(dtydb5)> show parameterpfile NAME TYPE VALUE spfile string +DATA/tyolap/spfile/spfilety.ora
如果存在改參數文件,則使用參數文件,也就是說優先使用OCR中配置的參數文件。
首先修改OCR中的spfile文件
srvctl modify database -d ms4adb -p'+DATA/ms4adb/spfiletest.ora' [oracle@dtydb5 ~]$ srvctl start database -dMS4ADB sys@MS4ADB3(dtydb5)> show parameterspfile NAME TYPE VALUE ---------------------------------------------------------- ------------------------------ spfile string +DATA/ms4adb/spfiletest.ora
則啟動報錯, 且不會去$ORACLE_HOME/dbs目錄下去找
[oracle@dtydb5 ~]$ srvctl modify database -d ms4adb -p'+DATA/ms4adb/spfilems4adb_bak.ora' [oracle@dtydb5 ~]$ srvctl stop database -dms4adb [oracle@dtydb5 ~]$ srvctl start database -dms4adb PRCR-1079 : Failed to start resourceora.ms4adb.db CRS-5017: The resource action"ora.ms4adb.db start" encountered the following error: ORA-01078: failure in processing systemparameters ORA-01565: error in identifying file'+DATA/ms4adb/spfilems4adb_bak.ora'總之:如果使用srvctl啟動,優先使用的是srvctl查詢出的配置文件,如果配置文件錯,這不能正常啟動,如果配置文件為null,則從默認路徑下查找(目前我還沒有找到把pfile參數改回空值的方法)