Flashback技术是基于undo segment 中的内容为基础的,因此受限于undo_retenton参数。要使用flash的特性,必须启用自动撤销管理表空间。
在Oracle 11g里面又出现了一个新特性:Oracle Flashback Data Archive。FDA通过将变化数据另外存储到创建的闪回归档区(Flashback Archive)中,以和undo区别开来,这样就可以为闪回归档区单独这支存储策略,使之可以闪回到指定时间之前的旧数据而不影响undo策略。
在Oracle 10g中,FlashBack家族可以分为以下成员:Flashback Database、Flashback Drop、Flashback Query(分Flashback Query,Flashback Version Query,Flashback Transactong Query三种)和Flashback Table。
一、闪回恢复区(Flashback Recovery Area)
1、设置闪回恢复区
闪回恢复区主要通过3个初始化参数来设置和管理:
db_recovery_file_dest:指定闪回恢复区的位置
db_recovery_file_dest_size:指定闪回恢复区的可用空间大小
db_flashback_retention_target:指定数据库可以回退的时间,单位是分钟,默认1440分钟,也就是一天。当然,实际上可回退的时间还决定于闪回恢复区的大小,因为里面保存了回退所需要的flash log。所以这个参数要和db_recovery_file_dest_size配合修改。
2、取消闪回恢复区
将db_recovery_file_dest参数设置为空,可以停用闪回恢复区。如果已经启用Flashback database,则不能取消闪回恢复区。
SQL>alter system set db_recovery_file_dest='';
注意:
(1)db_recovery_file_dest_size只有在db_recovery_file_dest清空之后才可以清空。
3、闪回恢复区的内容
所有和恢复相关的文件都可以存放到闪回恢复区
SQL> select * from v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
-------------------- ------------------ ------------------------- ---------------
CONTROL FILE 0 0 0
REDO LOG 0 0 0
ARCHIVED LOG 0 0 0
BACKUP PIECE 0 0 0
IMAGE COPY 0 0 0
FLASHBACK LOG 24.41 0 5
FOREIGN ARCHIVED LOG 0 0 0
7 rows selected
上面视图中查询的结果列出来的所有类型的文件,都可以通过闪回恢复区来存放、管理
4、闪回恢复区的一些限制
设置闪回恢复区后,如果没有设置过log_archive_dest_n参数,则归档日志默认保存到该区域内。实际上,oracle是通过隐式的设置log_archive_dest_10='location=USE_DB_RECOVERY_FILE_DEST'来实现的。所以,如果修改过log_archive_dest_n将归档日志保存到其他位置,也可以修改该参数继续使用闪回恢复区。
多个数据库的闪回恢复区可以指定到同一个位置,但是db_name不能一样,或者db_unique_name不能一样。RAC的闪回恢复区必须位于共享磁盘上,能被所有实例访问。
5、闪回恢复区的空间管理
闪回恢复区中添加或者删除文件等变化都将记录在数据库的alert日志中。在闪回恢复区中的空间超过85%的时候,数据库将会向alert文件中写入告警信息。而当超过97%的时候将会雪茹严重告警信息。当闪回恢复区空间不够是将会发生错误。
SQL> select * from V$recovery_File_Dest;
NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
-------------------------------------------------------------------------------- ----------- ---------- ----------------- ---------------
/u02/flashback
SQL> select * from v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
-------------------- ------------------ ------------------------- ---------------
CONTROL FILE 0 0 0
REDO LOG 0 0 0
ARCHIVED LOG 0 0 0
BACKUP PIECE 0 0 0
IMAGE COPY 0 0 0
FLASHBACK LOG 14.65 0 3
FOREIGN ARCHIVED LOG 0 0 0
7 rows selected
通过查询视图v$flash_recovery_area_usage,可以获得当前闪回恢复区的空间使用情况,并且知道哪些文件占用了空间。
如果闪回恢复区空间耗尽,且归档路径设置到了闪回恢复区,则有日志无法归档,数据库会hang住。
6、flash recovery area空间不足导致DB不能打开或者hang住的处理方法
增加即可
7flash recovery area的备份
rman的备份同时支持对flash recovery ara的备份
在10g中oracle又引入了新的Flashback功能,使用了flash recovery area来存储flashback log等等。这个区域默认创建在oracle_base目录下,在其中可以存放备份集,镜像拷贝,归档日志、自动备份的控制文件以及spfile和flashback logs。存放位置和大小由参数db_recovery_file_dest和db_recovery_file_dest_size决定。
默认情况下数据库的flashback database是关闭的,可以再mount exclusive状态下打开。
(1)BACKUP RECOVERY AREA 命令只能备份到磁带上。在磁盘上备份会报错。
(2)Flash recovery area包含内容:控制文件、归档文件、flashback logs,控制文件,自动备份的控制文件,数据文件,数据文件拷贝,rman文件(包括备份集,镜像文件)
(3)backup recovery area将备份所有flash recoveryarea中的内容。