2.2.2 监视和管理快速恢复区
初始化参数DB_RECOVERY_FILE_DEST_SIZE也有助于管理快速恢复区的大小。它的主要作用是限制指定磁盘组或文件系统目录中的快速恢复区使用的磁盘空间量。但是,如果收到警报,要求给予DBA更多时间为磁盘组分配更多空间或重新定位快速恢复区,则可以临时增加它的大小。
除了利用接收到的警告或重要警报外,还可以采用更加主动的做法,使用动态性能视图V$RECOVERY_FILE_DEST监视快速恢复区的大小,从中可以看到目标文件系统中的已用空间总量以及可回收空间。另外,可以使用动态性能视图V$FLASH_RECOVERY_ AREA_USAGE按文件类型查看使用明细。
练习2-2
查询快速恢复区的位置、内容和大小
在本练习中将使用动态性能视图V$RECOVERY_FILE_DEST和V$FLASH_RECOVERY_AREA来确定快速恢复区的当前大小。此后,会将快速恢复区的大小压缩为4GB。
(1)在SQL*Plus中查询V$RECOVERY_FILE_DEST视图来了解其位置和最大的大小:
SQL> select * from v$recovery_file_dest; NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES ----------- ----------- ---------- ----------------- --------------- +RECOV 8589934592 1595932672 71303168 13
快速恢复区的使用率低于20%。
(2)使用V$FLASH_RECOVERY_AREA_USAGE确定快速恢复区中的文件使用明细:
SQL> select * from v$flash_recovery_area_usage; FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES -------------- ------------------ ------------------------- --------------- CONTROL FILE .12 0 1 REDO LOG 1.87 0 3 ARCHIVED LOG .83 1 7 BACKUP PIECE 15.75 0 2 IMAGE COPY 0 0 0 FLASHBACK LOG 0 0 0 FOREIGN ARCHIVE 0 0 0 D LOG AUXILIARY DATAF 0 0 0 ILE COPY 7 rows selected. SQL>
(3)将快速恢复区的大小改变为4GB:
SQL> alter system set db_recovery_file_dest_size = 4g scope=both; System altered. SQL>
注意,DB_RECOVERY_FILE_DEST_SIZE是一个动态参数,因此无须重新启动数据库即可立即生效。
Oracle也在快速恢复区中执行一些自动空间管理操作,通过跟踪哪些文件既不用于恢复也不用于其他闪回功能做到这一点。如果没有足够的空闲空间来保存新文件,Oracle会删除最早的过时文件,并将相应的消息写入到警报日志中。如果快速恢复区中的磁盘空间不足,也没有为新文件释放足够空间,会将相应的消息写入警报日志中,并将警报发布到Enterprise Manager Cloud Control 12c主页,还会在数据字典视图DBA_OUTSTANDING_ALERTS中添加一行内容。如果可用空间等于或小于15%(即使用了85%或更多空间),将会发出警告消息。如果可用磁盘空间等于或小于3%(即使用了97%或更多空间),会发出严重警告。
数据字典视图DBA_OUTSTANDING_ALERTS中的SUGGESTED_ACTION列显示了磁盘空间问题的潜在纠正措施;如果快速恢复区中的空间紧张,可能的纠正措施可能是以下类型之一:
●增加快速恢复区的磁盘空间并调整DB_RECOVERY_FILE_DEST_SIZE。
●将文件备份到第三级磁带或磁盘设备中,然后从快速恢复区删除文件。
●使用RMAN命令REPORT OBSOLETE和DELETE OBSOLETE,查看并删除快速恢复区中的文件。
●修改RMAN保留策略。
第4章和第5章将更详细地介绍如何结合使用RMAN和快速恢复区。