1.
什么是FRA
FRA
在
10g
中的概念是
Flash Recovery Area
(闪回区),在
11g
及以上中的概念是
Fast Recovery Area
(快速恢复区)。
FRA
为备份和恢复文件提供了一个集中的磁盘位置。
FRA
里面存放着从介质故障中完全恢复数据库所需要的所有文件,同时
Oracle
会在
FRA
里创建归档日志和闪回日志。
FRA
将
Oracle
管理文件的功能扩展到所有与恢复相关的文件(备份集、映像文件和归档日志)。
Oracle
自动管理这些文件,删除不再需要的文件。用户只需要指定
FRA
的位置,以及
FRA
需要的磁盘空间量。
FRA
存储了以下恢复相关文件:
- Current control file
- online redo logs
- archived logs
- flashback logs
- control file autobackups
- datafile and control file copies
- backup pieces
2.
FRA
应该存放在哪里
FRA
应该与数据库文件分开存放在单独的磁盘上,这样避免了
FRA
与数据库文件存在单点故障。
3.
FRA
应该设置多大
FRA
尽量保证越大越好。理想状态下,
FRA
应该足够大,以容纳所需的所有文件。如果不能保证足够大,那么最好创建一个足够大的区域来保存最重要的表空间和归档日志的备份。
一般规划估算FRA
的大小取决于以下内容:
· 数据库有经常变化的少量或大量的数据块
· 在磁盘或存储设备上存储的备份
· 基于冗余的备份保留策略,或者基于恢复窗口的保留策略
· 计划使用闪回数据库或有保证的还原点作为时间点恢复的方案
如果计划使用闪回日志,那么需要注意闪回日志的生成量与重做日志生成量大致相同。例如,如果你打算将DB_FLASHBACK_RETENTION_TARGET
设置为
24
小时,并且如果数据库在一天的
redo log
量为
20G
,那么根据经验为闪回日志留出
20-30G
的磁盘空间。当启用闪回日志记录时,同样的规则也适用于有保证的还原点。例如,如果数据库每天生成
20G
的
redo log
,并且保证还原点将保留一天,那么将为闪回日志分配
20-30G
的磁盘空间。
4.
可以为多个数据库配置同一个FRA
吗
在生产环境中往往存在这种情况,在一台服务器上存在多个数据库。对于DB_RECOVERY_FILE_DEST
,多个数据库可以有同样的值。但是必须满足以下条件之一:
· 两个数据库不能有相同的
DB_UNIQUE_NAME
的值
· 对于没有提供
DB_UNIQUE_NAME
,这种情况两个数据库不能有相同的
DB_NAME
值
当多个数据库拥有一样的DB_RECOVERY_FILE_DEST
值的时候,要确保该位置要保证足够大才行。
5.
FRA
可以是
ASM
磁盘组吗
FRA
可以是
ASM
磁盘组。
RMAN
可以备份和恢复存储在
ASM
磁盘组中的文件。实际上,
RMAN
是备份和恢复
ASM
文件的唯一方法,可以在
ASM
中创建备份集和镜像副本。
6.
FRA
支持
OMF
(
Oracle Managed Files
)吗
使用OMF,RMAN
的备份和恢复将会更加容易。因为
RMAN
在任何命令中都不使用长
OMF
文件名。
RMAN
可用于将现有的文件迁移到
OMF
。
7.
RAC
中的
FRA
对于RAC
数据库,所有实例上的位置和磁盘配额必须相同。为了实现这一点,
Oracle
建议将
FRA
放在共享
ASM
磁盘上。此外必须将所有实例上
DB_RECOVERY_FILE_DEST
和
DB_RECOVERY_FILE_DEST_SIZE
参数设置相同的值。要使用
Flash
恢复特性,必须先将
Oracle RAC
集群中的每个实例配置
FRA
。
8.
FRA
需要配置的初始化参数文件
如果要启用FRA,
必须配置两个参数
- DB_RECOVERY_FILE_DEST_SIZE
它是磁盘空间的限制,即FRA
允许使用的空间量。
FRA
的空间应该保证足够大。
- DB_RECOVERY_FILE_DEST
这个参数是创建FRA
的目标,目标可以是目录、文件系统或
ASM
磁盘组。
注:FRA
不能设置在裸设备文件系统;
DB_RECOVERY_FILE_DEST_SIZE
必须设置
DB_RECOVERY_FILE_DEST
之前
9.
FRA
的初始化参数限制
你不能使用LOG_ARCHIVE_DEST and LOG_ARCHIVE_DUPLEX_DEST
参数来指定归档路径,如果你配置了
FRA,
必须始终使用
LOG_ARCHIVE_DEST_n
参数。
如果已经设置了
DB_RECOVERY_FILE_DEST_SIZE
,想要设置为
0
,则需要通过以下方式进行重置:
SQL>
alter system reset db_recovery_file_dest_size scope=spfile sid='*';
SQL> shutdown immediate
SQL> startup
---- end ----