恢复db_recovery_file_dest_size参数为默认值0得方法是怎样的
创始人
2024-12-25 22:41:48
0次

oracle默認安裝之後,如果沒有手動設置歸檔路徑(alter
system set log_archive_dest_1="LOCATION=/oracle/oracle/archive" scope =spfile;)的話,默認是在db_revovery路徑之下。 如果db_recovery_file_dest空间不足,将导致归档失败,若果重启db,将启动失败。
db_recovery_file_dest_size参数的作用是限制闪回恢复区可存放文件总大小。一旦将参数db_recovery_file_dest_size设置为非零值后“很难”恢复为默认值“0”。这里我给出两种可以将此参数恢复为默认值“0”的方法,一种是“迂回策略”,一种是reset方法。


1.查看默认情况下db_recovery_file_dest_size参数值
db_recovery_file_dest_size参数的默认值是“0”。
SYS@PROD> show parameter db_recovery_file_dest_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------
db_recovery_file_dest_size           big integer 0

SYS@PROD> col name for a20
SYS@PROD> select * from v$recovery_file_dest;

NAME  SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
----- ----------- ---------- ----------------- ---------------
                0          0                 0               0


2.将db_recovery_file_dest_size参数调整为非零值

SYS@PROD> alter system set db_recovery_file_dest_size=4g;

System altered.

SYS@PROD> show parameter db_recovery_file_dest_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------
db_recovery_file_dest_size           big integer 4G
SYS@PROD> select * from v$recovery_file_dest;

NAME  SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
----- ----------- ---------- ----------------- ---------------
       4294967296          0                 0               0

3.尝试将db_recovery_file_dest_size参数修改为“0”
SYS@PROD> alter system set db_recovery_file_dest_size=0;
alter system set db_recovery_file_dest_size=0
*
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参数大小必须介于1~18446744073709551614之间,也就是说不可以调整为其默认值“0”。

  有朋友说,是不是可以尝试使用scope=spfile方式调整此参数。注意,也是不可以的。验证如下。
SYS@PROD> alter system set db_recovery_file_dest_size=0 scope=spfile;

System altered.

  此处貌似修改成功,但是这样调整后数据库将无法重新启动,报错信息如下。
SYS@PROD> startup;
ORA-19803: Parameter DB_RECOVERY_FILE_DEST_SIZE is out of range (1 - 18446744073709551614)

  一样的报错原因,db_recovery_file_dest_size参数大小必须介于1~18446744073709551614之间。

4.迂回处理方法
  既然使用常规方法无法达到我们将db_recovery_file_dest_size参数调整为“0”的目的,那我们应该如何应对这个需求呢。
  经过尝试,可以通过pfile迂回的达到恢复的目的。
1)使用当前的spfile生成pfile
SYS@PROD> create pfile from spfile;

File created.

2)使用vi命令将pfile中的db_recovery_file_dest_size参数信息删除掉
[oracle@secdb1 ~]$ vi $ORACLE_HOME/dbs/initPROD.ora
……
*.db_recovery_file_dest_size=4294967296
……

  注:如果经过上面scope=spfile方法调整过的话,pfile中的信息如下:
*.db_recovery_file_dest_size=0
  方法是一样的,将整行信息删除掉。

3)停止数据库并生成spfile,并用spfile启动数据库
SYS@PROD> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance
shut down.
SYS@PROD> create spfile from pfile;

File created.

SYS@PROD> startup;
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size             109053328 bytes
Database Buffers          201326592 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.

4)查看修改成果
SYS@PROD> show parameter db_recovery_file_dest_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- -----------
db_recovery_file_dest_size           big integer 0

SYS@PROD> col name for a20
SYS@PROD> select * from v$recovery_file_dest;

NAME   SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
------ ----------- ---------- ----------------- ---------------
                 0          0                 0               0
目的达到。

5.使用直截了当的reset方法
恢复参数为默认值的另外一种便捷方法是使用reset方法,可以避免上面的“迂回策略”,调整过程展示如下,供各位朋友参考。
SYS@PROD> show parameter db_recovery_file_dest_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- --------
db_recovery_file_dest_size           big integer 4G

SYS@PROD> alter system reset db_recovery_file_dest_size scope=spfile sid='*';

System altered.

SYS@PROD> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@PROD> startup;
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size             109053328 bytes
Database Buffers          201326592 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.
SYS@PROD> show parameter db_recovery_file_dest_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------
db_recovery_file_dest_size           big integer 0

通过实验的方式探索出了一种恢复数据库参数为默认值的方法。请朋友们从原理上去理解这个过程,参数文件的根本作用就是“覆盖参数的默认值”,以便刻画出一个最适合自己应用场景的环境。因此参数文件中记录的都是与默认参数值不一样的内容。因此通过删除pfile参数文件中的的参数,便可达到恢复参数为其默认值的目的。BTW,使用reset方法更加快速便捷。

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...