说明:
db_recovery_file_dest_size参数值默认大小为0,某些场景下我们需要临时设置一个大于0的值,之后可能需要再将值改回默认值0;
将db_recovery_file_dest_size由0改到5G;
查看当期参数文件
SQL> show parameter spfileNAME TYPE VALUE------------------------------------ ----------- ------------------------------spfile string +DATA/cjcdb/spfile/spfilecjcdb.ora
查看db_recovery_file_dest_size值
SQL> show parameter recoverNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_recovery_file_dest stringdb_recovery_file_dest_size big integer 0db_unrecoverable_scn_tracking boolean TRUErecovery_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 invalidORA-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 ValuesYou 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 recoverNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_recovery_file_dest stringdb_recovery_file_dest_size big integer 5Gdb_unrecoverable_scn_tracking boolean TRUErecovery_parallelism integer 0
重启其中一个节点
SQL> shutdown immediateSQL> startupORACLE instance started.Total System Global Area 1023004672 bytesFixed Size 2259640 bytesVariable Size 704644424 bytesDatabase Buffers 310378496 bytesRedo Buffers 5722112 bytesORA-01105: mount is incompatible with mounts by other instancesORA-19808: recovery destination parameter mismatch
报错ORA-01105,说明修改db_recovery_file_dest_size后,必须同时重启RAC所有节点实例才可以。
SQL> show parameter recoverNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_recovery_file_dest stringdb_recovery_file_dest_size big integer 0db_unrecoverable_scn_tracking boolean TRUErecovery_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 recoverNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_recovery_file_dest stringdb_recovery_file_dest_size big integer 0db_unrecoverable_scn_tracking boolean TRUErecovery_parallelism integer 0
更多数据库相关学习资料,可以查看我的ITPUB博客,网名chenoracle:
http://blog.itpub.net/29785807/