今天在11grac测试的时候发现rac2节点起不来了。
rac2节点:
SQL> startup
ORA-01078: failure in processing system parameters
ORA-00824: cannot set SGA_TARGET or MEMORY_TARGET due to existing internal settings
ORA-00848: STATISTICS_LEVEL cannot be set to BASIC with SGA_TARGET or MEMORY_TARGET
SQL> show parameter sga
ORA-01034: ORACLE not available
Process ID: 0
Session ID: 0 Serial number: 0
rac1节点:
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u02/app/oracle/product/11.2.0
/db_home/dbs/spfileorcl1.ora
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/orcl/spfileorcl.ora
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/orcl/spfileorcl.ora
我擦,rac指定的spfile文件是在本地的,rac2指定的是共享磁盘,估计是共享磁盘的spfile文件坏了,rac1可以起来rac2起不来了。
原来得spfile文件应该就是指定的+data,只是data盘里的spfile文件坏了。这样的话,如果不指定spfile文件路径的话,他是会自动使用$ORACLE_HOME/dbs/ 下的spfileSID.ora文件的。
create pfile='/home/oracle/pfile.ora' from spfile='/u02/app/oracle/product/11.2.0 /db_home/dbs/spfileorcl1.ora'; 先创建一个pfile存到/oracle下
【如果/dbs下也没有spfiel可以使init文件】
先去查看一下原来的pfile 内指定的spfile文件的路径:
cd /u02/app/oracle/product/11.2.0/db_home/dbs
ls
hc_orcl1.dat init.ora initorcl1.ora orapworcl1 spfileorcl1.ora
【这里的文件中数据库如果想要启动,最先考虑的肯定是spfile文件,其次就是 initorcl1.ora最后才是init.ora文件,若这三个都没有的话,数据库是起不来的。】
cat initorcl1.ora
【init+SID+.ora】
SPFILE='+DATA/orcl/spfileorcl.ora'
【这个就是spile文件的应该存放的位置了】
SQL> alter system set spfile='+DATA/orcl/spfileorcl.ora'; 【只要重建spfile了,那么就会重建在本地,这样的话启动的时候也就会从本地spfile文件启动,所以说这句话可用可不用,将initorcl1.ora文件中的路径指向共享磁盘,并且确保共享磁盘spfile文件的可用性即可】
shutdown imediate
SQL> create SPFILE='+DATA/orcl/spfileorcl.ora' from pfile='/home/oracle/pfileorcl.ora';
【SQL> create spfile from pfile='/home/oracle/pfile.ora';】
startup
成功。