rac环境在启动时,首先尝试寻找cluster里面database资源的spfile配置选项,如果找不到对应的文件,则按照单实例的寻找顺序在默认位置查找。
建议在rac环境下使用共享的spfile,并在默认位置保留一个一个pfile,里面通过spfile参数指向共享的spfile。默认在rac安装配置完成后就生成了一个pfile文件。
[oracle@prod1 dbs]$ cat initprod1.ora
SPFILE='+DATA/PROD/parameterfile/spfileprod.ora'
rac或者asm环境中,需要谨慎使用create spfile frpm pfile的命令, 因为通常的pfile文件中只有指向spfile的一行,如果此时执行create spfile from pfile,则新创建的spfile文件也将只有这一行信息,数据库会无法启动。
将参数文件转移到ASM存储
1. 检查参数文件的位置,并通过spfile创建一个pfile文件,进而在ASM磁盘上创建spfile文件
SQL> create spfile='+data/prod/parameterfile/spfileprod.ora' from pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initprod1.ora';
File created.
2. 同步rac各个节点上的参数文件,更改其内容,设置spfile参数指向asm中的参数文件。
[oracle@prod1 dbs]$ echo "SPFILE='+DATA/PROD/parameterfile/spfileprod.ora'">initprod1.ora
[oracle@prod1 dbs]$ cat initprod1.ora
SPFILE='+DATA/PROD/parameterfile/spfileprod.ora'
[oracle@prod2 dbs]$ echo "SPFILE='+DATA/PROD/parameterfile/spfileprod.ora'">initprod2.ora
3. 通过srvctl修改OCR中关于参数文件的配置
[oracle@prod2 dbs]$ srvctl modify database -d prod -p +DATA/PROD/parameterfile/spfileprod.ora
dbs目录下的参数文件可以移除或更名。
4. 重启数据库,新的配置将会生效
[oracle@prod2 dbs]$ srvctl status database -d prod
Instance prod1 is not running on node prod1
Instance prod2 is not running on node prod2
[oracle@prod2 dbs]$ srvctl start database -d prod