Oracle RAC启动时,如何找到参数文件位置的
在单机环境下,Oracle查找启动参数文件的顺序是 spfile<Oracle_SID>.ora ---> spfile>.ora ---->.init<Oracle_SID>.ora
下面我们测试在RAC环境下的参数文件查找顺序
我们将ASM中的参数文件拷贝至$ORACLE_HOME/dbs/目录下 ,并改名为spfileorcl1.ora,在ASM中的文件名为 spfileorcl.ora
[oracle@rac1 dbs]$ echo $ORACLE_SID
orcl1
[oracle@rac1 dbs]$ pwd
/u01/app/oracle/product/11.2.0/dbhome_1/dbs
[oracle@rac1 dbs]$ ll
total 24
-rw-rw---- 1 oracle asmadmin 1544 Jan 10 22:04 hc_orcl1.dat
-rw-r--r-- 1 oracle oinstall 2851 May 15 2009 init.ora
-rw-r----- 1 oracle oinstall 37 Dec 23 18:31 initorcl1.ora
-rw-r----- 1 oracle oinstall 1536 Dec 23 17:55 orapworcl1
-rw-r----- 1 oracle oinstall 4608 Jan 10 22:03 spfileorcl1.ora[oracle@rac1 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Thu Jan 10 22:25:00 2019
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.Total System Global Area 784998400 bytes
Fixed Size 2257352 bytes
Variable Size 616566328 bytes
Database Buffers 163577856 bytes
Redo Buffers 2596864 bytes
Database mounted.
Database opened.
SQL> show parameter spfileNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0 /dbhome_1/dbs/spfileorcl1.ora
- 数据库启动成功。使用/u01/app/oracle/product/11.2.0 /dbhome_1/dbs/spfileorcl1.ora 参数文件
修改sspfileorcl1.ora 文件名为 spfile.ora 重启数据库
[oracle@rac1 dbs]$ mv spfileorcl1.ora spfile.ora
[oracle@rac1 dbs]$ ll
total 24
-rw-rw---- 1 oracle asmadmin 1544 Jan 10 22:25 hc_orcl1.dat
-rw-r--r-- 1 oracle oinstall 2851 May 15 2009 init.ora
-rw-r----- 1 oracle oinstall 37 Dec 23 18:31 initorcl1.ora
-rw-r----- 1 oracle oinstall 1536 Dec 23 17:55 orapworcl1
-rw-r----- 1 oracle oinstall 4608 Jan 10 22:28 spfile.ora
[oracle@rac1 dbs]$SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.Total System Global Area 784998400 bytes
Fixed Size 2257352 bytes
Variable Size 616566328 bytes
Database Buffers 163577856 bytes
Redo Buffers 2596864 bytes
Database mounted.
Database opened.
SQL> show parameter spfileNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfile.ora
- 数据库启动成功,使用 /u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfile.ora文件
修改spfile.ora 文件名为spfile1.ora 重启数据库
[oracle@rac1 dbs]$ mv spfile.ora spfile1.ora
SQL> startup
ORACLE instance started.Total System Global Area 784998400 bytes
Fixed Size 2257352 bytes
Variable Size 616566328 bytes
Database Buffers 163577856 bytes
Redo Buffers 2596864 bytes
Database mounted.
Database opened.
SQL> show parameter spfileNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA01/orcl/spfileorcl.ora
- 也启动成功,使用的是ASM里的参数文件
我们将ORACLE_SID修改成任意值,启动数据库
export ORACLE_SID=orcl11
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl11.ora'
- 提示找不到 initorcl11.ora 文件,其中orcl11是我们刚刚修改的ORACLE_SID值,那么我们看看正确的文件initorcl1.ora的文件是什么呢。
[oracle@rac1 dbs]$ cat initorcl1.ora
SPFILE='+DATA01/orcl/spfileorcl.ora'
原来是指向ASM磁盘中的文件地址。使用这个文件,可以把参数文件指向任意一个地方。
- 总结:
在Oracle RAC环境下,Oracle在启动的过程中查找启动参数文件与单机环境下是一样的:
spfile<Oracle_SID>.ora ---> spfile>.ora ---->init<Oracle_SID>.ora
在使用ASM保存启动参数文件的时候,参数文件的位置被保存在了init<Oracle_SID>.ora文件中