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

Oracle RAC 重置db_recovery_file_dest_size

IT小Chen 2021-04-13
1734

说明:

db_recovery_file_dest_size参数值默认大小为0,某些场景下我们需要临时设置一个大于0的值,之后可能需要再将值改回默认值0;

将db_recovery_file_dest_size由0改到5G;

查看当期参数文件

    SQL> show parameter spfile
    NAME TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    spfile string +DATA/cjcdb/spfile/spfilecjcdb.ora

    查看db_recovery_file_dest_size值

      SQL> show parameter recover
      NAME TYPE VALUE
      ------------------------------------ ----------- ------------------------------
      db_recovery_file_dest string
      db_recovery_file_dest_size big integer 0
      db_unrecoverable_scn_tracking boolean TRUE
      recovery_parallelism integer 0

      设置db_recovery_file_dest_size值为5g

        SQL> alter system set db_recovery_file_dest_size=5G sid='*'; 
        System altered.

        再将db_recovery_file_dest_size参数改为0,出现报错ORA-19803

          SQL> alter system set db_recovery_file_dest_size=0 sid='*';
          alter system set db_recovery_file_dest_size=0 sid='*'
          *
          ERROR at line 1:
          ORA-02097: parameter cannot be modified because specified value is invalid
          ORA-19803: Parameter DB_RECOVERY_FILE_DEST_SIZE is out of range (1 - 18446744073709551614)

          通常有两种方式可以将db_recovery_file_dest_size重置为0;

          方法一:reset

          方法二: 生成pfile,手动将db_recovery_file_dest_size参数值去掉

          方法一:reset

          reset说明:

            Clearing Initialization Parameter Values
            You can use the ALTER SYSTEM RESET command to clear (remove) the setting of any initialization parameter in the SPFILE that was used to start the instance.
            Neither SCOPE=MEMORY nor SCOPE=BOTH are allowed. The SCOPE = SPFILE clause is not required, but can be included.
            You may want to clear a parameter in the SPFILE so that upon the next database startup a default value is used.

            重置db_recovery_file_dest_size值

            reset默认采用scope=spfile方式

              SQL> alter system reset db_recovery_file_dest_size scope=spfile sid='*';
              SQL> show parameter recover
              NAME TYPE VALUE
              ------------------------------------ ----------- ------------------------------
              db_recovery_file_dest string
              db_recovery_file_dest_size big integer 5G
              db_unrecoverable_scn_tracking boolean TRUE
              recovery_parallelism integer 0

              重启其中一个节点

                SQL> shutdown immediate
                SQL> startup
                ORACLE instance started.
                Total System Global Area 1023004672 bytes
                Fixed Size 2259640 bytes
                Variable Size 704644424 bytes
                Database Buffers 310378496 bytes
                Redo Buffers 5722112 bytes
                ORA-01105: mount is incompatible with mounts by other instances
                ORA-19808: recovery destination parameter mismatch

                报错ORA-01105,说明修改db_recovery_file_dest_size后,必须同时重启RAC所有节点实例才可以。

                  SQL> show parameter recover
                  NAME TYPE VALUE
                  ------------------------------------ ----------- ------------------------------
                  db_recovery_file_dest string
                  db_recovery_file_dest_size big integer 0
                  db_unrecoverable_scn_tracking boolean TRUE
                  recovery_parallelism integer 0

                  此时重启另一个节点实例后,在重启这个节点实例,参数即可修改成功。

                  注意:如果执行了db_recovery_file_dest_size参数reset操作后,还没有时间窗口重启实例,当某一个节点宕机后,首次启动是法打开实例的,因为两个节点db_recovery_file_dest_size值不一致,为了减少数据库停机时间,可以先在另一个节点上,手动设置所有节点db_recovery_file_dest_size为当期值,然后在启动宕机的实例。

                  方法二:生成pfile,手动将db_recovery_file_dest_size参数值去掉

                  1 生成pfile到临时目录,注意不要覆盖默认的pfile

                    SQL> create pfile='/tmp/pfile0726.ora' from spfile;

                    2 注释掉或删除db_recovery_file_dest_size

                      [oracle@rac01 dbs]$ cat tmp/pfile0726.ora |grep recover
                      ###*.db_recovery_file_dest_size=5368709120

                      3 重新生成spfile(spfile可以提前备份)

                        SQL> create spfile='+DATA/cjcdb/spfile/spfilecjcdb.ora' from pfile='/tmp/pfile0726.ora';

                        4 需要同时重启所有实例

                          SQL> show parameter recover
                          NAME TYPE VALUE
                          ------------------------------------ ----------- ------------------------------
                          db_recovery_file_dest string
                          db_recovery_file_dest_size big integer 0
                          db_unrecoverable_scn_tracking boolean TRUE
                          recovery_parallelism integer 0

                          更多数据库相关学习资料,可以查看我的ITPUB博客,网名chenoracle

                          http://blog.itpub.net/29785807/

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

                          评论