ITPub博客

首页 > 数据库 > Oracle > oracle rac 中 镜像 控制文件 更新双节点spfile for ASM 2013修改

oracle rac 中 镜像 控制文件 更新双节点spfile for ASM 2013修改

原创 Oracle 作者:spectre2 时间:2012-01-09 11:34:50 0 删除 编辑

2013最新修改,原文于2012年1月9日发表,有一些关于rac使用spfile启动的部分解释的过于武断(下文红底小字部分),回头整理的时候发现,对新人有误导的地方,特此改正(下文红底小字部分作废),如朋友们发现其它问题,请留言不吝赐教,谢谢。


      oracle rac 如果以srvctl start database -d orcl 的方式启动的话,默认是以共享存储(ASM、裸设备等)中的spfile启动,而如果在各节点以sqlplus / as sysdba 登录进去启动的话,spfile是以各节点本地的spfile启动的,) 数据库的各节点启动时是先在当前节点的$ORACLE_HOME/dbs下查找spfile.ora,如不存在spfile.ora,就使用init.ora作为参数文件启动当前节点数据库,而oracle RAC中,init.ora里默认配置的是spfile在共享存储(ASM、裸设备等)中的路径。如果当前节点$ORACLE_HOME/dbs下创建了一个spfile.ora,oracle在启动的时候是不会去读init.ora下的配置的,这样oracle实例就会以节点本地的spfile.ora启动了,所以最终可能造成了rac两实例spfile不一致。而如果两个spfile中设定的控制文件位置(或其它参数)不一致的话,极有可能导致故障。因此,在镜像控制文件的时候一定要注意这个问题,要将各节点本地和共享存储(磁盘阵列)中的spfile都统一,下面是同步spfile的方法:


注意:如果我们直接使用: create pfile from spfile 命令创建pfile,那么生成的pfile 文件将覆盖原有$ORACLE_HOME/dbs 目录下的pfile 文件。 而在之前的pfile文件里面值保留了一条指向spfile存放位置的记录。 这样修改之后,就会造成数据库启动时会因为找不到spfile文件而读取本地的pfile文件,而不是共享设备上的spfile文件。这样对参数管理上就会带来麻烦,也带来其他的隐患。

所以对于RAC,要慎用 create pfile from spfile 来创建pfile 文件, 在创建的时候,尽量指定pfile的生成位置,同时,在保证节点本地spfile和共享库里的spfile一致性之后,尽量把$ORACLE_HOME/dbs 目录下的spfile文件移动到其它地方(或改后缀名备份,不建议直接删除,可以在共享库spfile意外损坏时做备份使用),使数据库只能使用共享库里的spfile启动,避免管理上的混乱。


1.       关闭所有节点.

2.       srvctl start database –d orcl –o nomount 将数据库打开到nomount状态

3.       查看asm中控制文件所在位置,

#export ORACLE_SID=+ASM1

#asmcmd

>cd DATAGROUP1/ORCL/CONTROLFILE/

>ls

Current.269.723401780

>exit


#export ORACLE_SID=orcl1

#sqlplus / as sysdba

SQL>show parameter spfile

SQL>+DG1/orcl/spfileorcl.ora

此时spfileasm
#sqlplus / as sysdba

SQL>Show parameter contr


4 .复制控制文件

Export ORACLE_SID=orcl1

Rman target /

RMAN>restore controlfile to '+DG1/ORCL/CONTROLFILE/Current.269.723401781'from '+DG1/ORCL/CONTROLFILE/Current.269.723401780';

RMAN>restore controlfile to '+DG1/ORCL/CONTROLFILE/Current.269.723401782'from '+DG1/ORCL/CONTROLFILE/Current.269.723401780';

新建的控制文件名字可以按格式随便取等会复制完后ASM会自动重新命名

5.使用asmcmd 检查新生成的controlfile的名字.

#asmcmd

>cd DATAGROUP1/ORCL/CONTROLFILE/

>ls

Current.269.723401780
Current.270.723605223
Current.261.723502743

>exit


6.重新登录到实例中修改asm 中的spfile
#sqlplus / as sysdba

SQL> alter system set control_files='+DG1/ORCL/CONTROLFILE/Current.269.723401780','+DG1/ORCL/CONTROLFILE/Current.270.723605223','+DG1/ORCL/CONTROLFILE/Current.261.723502743' scope=spfile;

7. 关闭数据库重新启动数据库必须以srvctl启动

   #srvctl stop database –d orcl

   #srvctl start database –d orcl

8. 登录到数据库中创建pfile 
#sqlplus / as sysdba

SQL>create pfile=’/u01/app/init_orcl.ora’ from spfile;
本步骤两个节点都要进行

9 .关闭数据库sqplus / as sysdba方式:
#sqlplus / as sysdba

SQL>Shutdown immediate ;

SQL>Startup pfile=’/u01/app/init_orcl.ora’

SQL>Create spfile from pfile= ’/u01/app/init_orcl.ora’

SQL>Shutdown immediate;

SQL>Startup

本步骤两个节点都要进行

至此,spfile 已更新完毕
之后可以shutdown immediate,然后
以srvctl start database -d orcl 的方式启动。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14184018/viewspace-714595/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-02-27

  • 博文量
    197
  • 访问量
    1808558