我们知道,oracle的参数文件分为pfile、spfile,默认位于$ORACLE_HOME/dbs目录下。
我们可以使用show parameter spfile或pfile 查看oaracle是使用pfile还是spfile启动的!!
oracle 9i以后,oracle启动时默认是以spfile启动的,如果不存在spfile,将使用$ORACLE_HOME/dbs目录下的pfile文件。
但是,rac环境下系统安装后在$ORACLE_HOME/dbs目录下是不存在spfile文件的,只有一个initsid.ora文件,这个文件只有一行内容:
[@more@]spfile='/dev/vg01/rlvol24'(笔者使用的是裸设备)。使用crsctl启动rac后,show parameter spfile显示是以spfile启动的。有人可能会以为rac启动时是使用pfile,然后从pfile里的指针找到spfile的。其实不然,经过测试发现:即使把$ORACLE_HOME/dbs目录下的pfile、spfile都改名(或删除)掉,使用crsctl命令,rac仍然以spfile正常启动。使用ocrdump或dd将ocr的内容dump出来后就会发现秘密了,原来ocr里有一个spfile的位置指针。我们使用crsctl命令或者srvctl启动rac时,crsctl、srvctl是以root身份执行的,它是不会访问$ORACLE_HOME/dbs目录的(root的配置文件里根本就没有相关的环境变量),是从ocr中获取spfile的位置。
如果我们在rac正常启动后,使用sqlplus shutdown数据库,不关闭集群,然后再使用startup启动数据库,这个时候oracle会使用$ORACLE_HOME/dbs目录下的pfile或spfile文件!因为sqlplus命令是以oracle用户执行的,oracle用户有$ORACLE_HOME的环境变量。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/670493/viewspace-1024889/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/670493/viewspace-1024889/