一、快速恢复区概念

快速恢复区是一个默认放置所有备份恢复操作有关文件的地方,包括:控制文件在线镜像、在线重做日志、归档日志、外来归档日志、控制文件镜像复制、数据文件镜像复制、RMAN备份片和闪回日志。放置在此位置的文件由Oracle数据库维护,生成的文件名以Oracle托管文件(OMF)格式维护。
如果启用快速恢复区,它就成了RMAN备份默认的去处,无论是RMAN备份片、镜像复制、还是控制文件自动备份,只要没有在RMAN配置或在backup命令中指明路径就全部进入快速恢复区。

二、快速恢复区相关参数

使用快速恢复区需要设置两个初始化参数,DB_RECOVERY_FILE_DEST和DB_RECOVERY_FILE_DEST_SIZE。

db_recovery_file_dest:用于设置快速恢复区的路径(可以指向磁盘,也可以指向ASM磁盘组)。

db_recovery_file_dest_size:用于设置快速恢复区的大小。

注:设置快速恢复区要先设置大小,后设置路径。

在RAC环境下配置快速恢复区时,要保证每个节点的配置值都相同。

SQL> show parameter db_recovery_file_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /oracle/app/fast_recovery_area
db_recovery_file_dest_size           big integer 4560M

上述查询结果表明:
快速恢复区的位置:/oracle/app/fast_recovery_area
快速恢复区的大小:4560M

这两个参数可以再数据库运行过程中在线修改,修改后立即就能生效,举例如下:

SQL> alter system set db_recovery_file_dest_size=8G scope=both;

System altered.

SQL> alter system set db_recovery_file_dest='/oradata/fast_recovery_area' scope=both;

System altered.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup

SQL> show parameter db_recovery;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /oradata/fast_recovery_area
db_recovery_file_dest_size           big integer 8G

三、Reset 快速恢复区

方法一:修改pfile参数文件
SQL> shutdown immediate

SQL> create pfile from spfile;

SQL> !vi $ORACLE_HOME/dbs/initdrz.ora

删除如下内容

*.db_recovery_file_dest_size=8589934592
*.db_recovery_file_dest='/oradata/fast_recovery_area'

SQL> create spfile from pfile;

SQL> startup

SQL> show parameter db_recovery

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string
db_recovery_file_dest_size           big integer 0
方法二:reset命令
SQL> alter system reset db_recovery_file_dest_size scope=spfile;

SQL> alter system reset db_recovery_file_dest scope=spfile;

SQL> shutdown immediate

SQL> startup

SQL> show parameter db_recovery

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

四、快速恢复区的监控

DB_RECOVERY_FILE_DEST_SIZE参数值确定了快速恢复区能使用的存储空间上限。
如果定义了备份保留策略,oracle会根据策略判断哪些文件过期(obsolete)进而删除,但只有在定义了备份保留策略时,oracle才会自动判断和删除。当快速恢复区空间使用率达到90%时,会触发自动删除。删除过程会在alert文件中记录日志,但是如果没有空间可以释放,并且使用空间超过85%,就会记录一个warning日志;如果超过了97%,会记录一条critical warning日志,这些日志内容可以从dba_outstanding_alerts视图中看到。

日常工作中需要监控快速恢复区的使用情况,在需要时及时进行调整。
可以通过视图V$RECOVERY_FILE_DEST和V$RECOVERY_AREA_USAGE来监控快速恢复区的使用情况。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐