oracle启动中使用参数文件一般有如下几种情况
1 单实例
1.1 默认启动:
在非rac环境下,oracle数据库的参数文件默认放在$ORACLE_HOME/dbs目录下,oracle自动寻找参数文件的顺序是
spfile$ORACLE_SID.ora -> spfile.ora -> init$ORACLE_SID.ora
1.2 手工指定参数文件
也可以手工启动非默认的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
1.3 ASM和裸设备下使用参数文件
如果使用裸设备或者ASM存储spfile文件,一般的做法是
修改默认的pfile文件
vi $ORACLE_HOME/dbs/init$ORACLE_SID.ora
spfile=‘+Data/TYOLAP/spfile/spfile$ORACLE_SID.ora‘
2 RAC环境
在oracle rac环境下,情况稍微有些复杂,pfile启动和单实例类似,每个实例均设置自己的pfile文件。而spfile启动,一般建议spfile文件放在共享存储上
2.1 Sqlplus启动
2.1.1 共享存储是裸设备或者ASM
如果共享存储是裸设备,官方文档建议采用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‘
2.2 Srvctl启动
2.2.1 OCR中未配置参数文件,
则同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
2.2.2 配置了参数文件的位置
如果存在改参数文件,则使用参数文件,也就是说优先使用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
2.2.3 OCR中配置的参数文件不存在
则启动报错, 且不会去$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参数改回空值的方法)