暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle故障处理之RAC环境下SPFILE文件修改

数据与人 2020-12-15
1720

Oracle故障处理之RAC环境下SPFILE文件修改


关于RAC下spfile和pfile文件启动浅谈

在RAC下spfile位置的修改与单节点环境不完全一致,有些地方需要特别注意,否则可能修改会失败。
SPFILE放在ASM中一个不正确的目录(+ARCH)中,现在想把它放在另外一个目录(+DATA)下。


以下是具体步骤:

1.> 原spfile位置

    SQL> show parameter spfile
    spfile string +ARCH/spfiledorcl.ora

    2.> 拷贝spfile到其他目录

      cp spfiledorcl.ora +DATA
      copying +data/spfileorcl.ora -> +data/spfileorcl.ora

      3> 修改所有节点$ORACLE_HOME/dbs/initorcl.ora下的参数文件

        [oracle@dwdb04 dbs]$ vi initdorcl2.ora


        SPFILE='+ARCH/spfiledorcl.ora'
        替换为
        SPFILE='+DATA/spfiledorcl.ora'


        4.> 通过sqlplus方式重启实例

          SQL> shutdown immediate
          SQL> startup
          ORACLE instance started.
          Total System Global Area 5.2429E+10 bytes
          Fixed Size 2193872 bytes
          Variable Size 3707766320 bytes
          Database Buffers 4.8671E+10 bytes
          Redo Buffers 48136192 bytes
          Database mounted.
          Database opened.


          SQL > show parameter spfile


          NAME TYPE VALUE
          spfile string +DATA/spfiledorcl.ora

          spfile已经修改成功。


          5.> 但是如果用过srvctl重启数据库,发现spfile又变回来了:

          oracle用户下执行

            srvctl config database -d orcl -a
            srvctl modify database -d orcl -p '+DATA/spfileorcl.ora'
            srvctl config database -d orcl -a

            重启数据库

              su - grid
              srvctl stop database -d orcl
              srvctl start database -d orcl


              6.> 原因及解决

              这是为什么呢?实际上在RAC环境中,我们更多时候是用srvctl来管理RAC资源,而srvctl的信息来自ocr,
              包括spfile的位置信息。我们刚才那样做虽然修改了参数文件的位置,但是ocr并不知道,它还用原来的文件启动数据库。

              我们可以用srvctl查看数据库的配置信息来确认:

                [oracle@nhi-oa01 dbs]$ srvctl config database -d orcl -a
                Database unique name: orcl
                Database name: orcl
                Oracle home: u01/app/oracle/product/11.2.0/db_1
                Oracle user: oracle
                Spfile: +ARCH/spfileorcl.ora
                Domain:
                Start options: open
                Stop options: immediate
                Database role: PRIMARY
                Management policy: AUTOMATIC
                Server pools: orcl
                Database instances: orcl1,orcl2
                Disk Groups: DATA,ARC
                Mount point paths:
                Services:
                Type: RAC
                Database is enabled
                Database is administrator managed


                可以看到,SPFILE的位置指向是+ARCH。解决方法是通过srvctl修改SPFILE的位置。

                  srvctl modify database -d orcl -p '+DATA/spfileorcl.ora'


                  [oracle@nhi-oa01 dbs]$ srvctl config database -d orcl -a
                  Database unique name: orcl
                  Database name: orcl
                  Oracle home: u01/app/oracle/product/11.2.0/db_1
                  Oracle user: oracle
                  Spfile: +ARCH/spfileorcl.ora
                  Domain:
                  Start options: open
                  Stop options: immediate
                  Database role: PRIMARY
                  Management policy: AUTOMATIC
                  Server pools: orcl
                  Database instances: orcl1,orcl2
                  Disk Groups: DATA,ARC
                  Mount point paths:
                  Services:
                  Type: RAC
                  Database is enabled
                  Database is administrator managed


                  7> 总结

                  在RAC环境下修改spfile:
                  需要修改$ORACLE_HOME/dbs下的相关文件,指向新文件
                  需要用srvctl修改config信息,指向新文件




                  往期回顾


                  Oracle故障处理之ORA-00600:  error, arguments: [kcbo_unlink_q_3]
                  Oracle故障处理之impdp导入报错:ORA-39126
                  Oracle故障处理之ORA-27102: out of memory


                  客官长按关注

                  吾辈自强不息


                  文章转载自数据与人,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论