本文主要介绍如何设置及使用Flash Recovery Area。此特性允许数据库使用本地磁盘部分空间来管理备份集。使用Flash Recovery Area可以简化备份集的管理工作,保留尽量长时间的备份集,当备份集不在需要并且新的备份集需要存储空间的时候删除旧的备份集。
一. 选择Flash Recovery Area的位置
在设置Flash Recovery Area之前应当先选择其位置,可以是一个文件夹也可以是ASM磁盘组。Flash Recovery Area不能设置在裸(raw)文件系统上。
在设置Flash Recovery Area的时候还要考虑其配额限制,根据备份策略设置其大小,使得Flash Recovery Area有足够的空间满足备份保持策略的,当空间不足自动删除的备份集不影响备份保持策略。当然从性能,安全性方面考虑,还要将Flash Recovery Area与数据库数据区域分开。对于RAC环境需将Flash Recovery Area设置在集群文件系统上,ASM或者共享的NFS,所有实例的配置必须是相同的。
二. 存储的文件类型
存储在Flash Recovery Area中的文件可以分为永久的(permanent)和临时的(transient)两种。永久文件只包含当前的控制文件和在线日志文件的多路复用拷贝,其他的文件如:归档日志文件、数据文件、控制文件、备份集等备份文件都是临时文件。临时文件在过期以后oracle会根据备份集保持策略自动删除(备注:用于flashback database的flashback logs是无法转存到其他介质中的,只能存储在Flash Recovery Area里面,当新的备份集需要空间时,oracle自动删除这些日志)
三. 确定Flash Recovery Area的大小
理想情况Flash Recovery Area是越大越好,但是实际上是不可能的。Flash Recovery Area最少需要容纳以下文件:
1. 所有数据文件的拷贝
2. 增量备份集,由备份策略决定
3. 在线日志文件
4. 尚未备份到其他介质的归档日志文件
5. 控制文件
6. 控制文件的自动备份(包括控制文件和参数文件)
可以通过查询视图V$RECOVERY_FILE_DEST获得磁盘配额、当前使用及可释放的空间统计信息。Flash Recovery Area大小的估计是根据备份恢复策略来决定的:
1. 数据文件的数量以及经常更新的数据块的数量
2. 备份集存储位置,磁盘或者磁带
3. 是否使用冗余备份集策略,或者recovery window-base策略
4. 是否启用flashback database及基于时间点的恢复策略
Flash Recovery Area的启用由参数db_recovery_file_dest_size及db_recovery_file_dest决定,b_recovery_file_dest_size参数必须先设定,在RAC环境下,所有实例的这两个参数设置必须一样。在设置这两个参数的时候需要注意以下几点:
db_recovery_file_dest_size:
1. 计算实际使用空间的时候要多加10%的额外空间用于block 0和OS数据块头
2. db_recovery_file_dest_size大小不一定等于实际分配的磁盘空间,比如磁盘使用了冗余(2-way mirrored)ASM磁盘组,那么实际占用的磁盘空间时设置的两倍。所以db_recovery_file_dest_size不能超过ASM磁盘空间的1/2。
db_recovery_file_dest:
1. 分布式数据库可以使用同一个db_recovery_file_dest,但是DB_UNIQUE_NAME设置必须不同,如果没有设置DB_UNIQUE_NAME则DB_NAME必须不同。同时要有足够大的空间容纳必须的备份集。
四. 使用Flash Recovery Area的参数限制
使用Flash Recovery Area将影响部分参数的设置:
1. 将不能在使用log_archive_dest及log_archive_duplex_dest参数来指定归档目的地。使用新的log_archive_dest_n参数来代替。
2. 数据库运行在归档模式下,当没有指定归档目的地的时候log_archive_dest_10隐含指定db_recovery_file_dest设置的位置为归档目的地。
3. Oracle建议db_recovery_file_dest的设置要与db_create_file_dest或者db_create_online_log_dest_n参数不同,如果设置相同的路径则alter.log文件中会有警告信息。