1. 首先oracle RAC spfile文件位置与单机环境下不同
单实例默认是在$ORACLE_HOME/dbs/这个目录下。
RAC默认在你的共享存储路径下(ASM或RAW)。
例如我测试机搭建的RAC采用ASM自动存储管理。数据库建在+DATA下,数据库取名orcl,集群SPFILE位置
+DATA/orcl/spfileorcl.ora。
2. 具体查看该文件位置按如下方法:
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA1/orcl/spfileorcl.ora
3. 如何创建pfile文件
在为了优化Oracle而修改spfile参数前,首先确定spfile位置。然后创建pfile,手动更改初始化参数。
如果你尝试这个命令,结果会失败。
SQL> create pfile='/tmp/pfile.ora' from spfile;
ERROR at line 1:
ORA-01565: error in identifying file '?/dbs/spfile@.ora'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
这个错误原因说明在$ORACLE_HOME/dbs/这个目录下没有spfile文件。
RAC默认是通过$ORACLE_HOME/dbs/init[实例名].ora在这个文件来指定读取spfile文件的。
查看一下init[实例名].ora这个文件的内容。
[oracle@orcl1 ~]# cat $ORACLE_HOME/dbs/initorcl1.ora
spfile='+DATA1/orcl/spfileorcl.ora' --此乃所有节点读取的位置。
那么创建PFILE文件,使用的SPFILE就写绝对路径.
SQL> create pfile='/rac/spfile/orcl.ora' from spfile='+DATA1/orcl/spfileorcl.ora';
然后手动修改后在更新spfile文件
SQL> create spfile='+DATA1/orcl/spfileorcl.ora' from pfile='/rac/spfile/orcl.ora';
注:$ORACLE_HOME/dbs/init[实例名].ora会被节点启动时读取。假如你执行了命令create pfile from spfile;会覆盖这个文件。那只能手动修改内容了.
另外 create spfile from pfile;是没用的,创建的文件内容是init[实例名].ora这个文件里的内容,创建在该节点实例的$ORACLE_HOME/dbs/下。但是集群spfile文件是在共享存储里的。
本文结束,如有错误欢迎指正。谢谢。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28546804/viewspace-1245551/,如需转载,请注明出处,否则将追究法律责任。