【转】Oracle Flashback Database 闪回恢复

一、Flashback Database介绍如果说flashback query可用来恢复指定时间点的记录,flashback table可用来恢复被删除或指定时间点的表,而flashback database,则直接提供一个数据库级别的恢复,可将数据库恢复到指定的时间点,相对于前两者,其粒度是最大的。
数据库级别的恢复,大家可能会想到我们通常所用的方式:借助备份。那借助flashback database来做恢复相比通过备份恢复,有哪些优势呢?主要有两点:速度和恢复方式。

1、必备条件:

A. 数据库启用了flashback database。

B. 数据库必须打开了flash recovery area,如果数据库是RAC,flash recovery area必须位于共享存储中。

C. 数据库必须处于archivelog模式

2、限制条件:

A. Flashback database是用来将数据库中的数年恢复至之前的某个时间点,而非介质恢复,你不可能使用flashback database恢复之前被删除的某个数据文件。

B. 如果控制文件被重建,则在此之前所产生的所有flashback 日志统统失效,不能将数据库flashback到控制文件被重建之前。

C. 对于nologging模式下插入的数据,flashback database也恢复不了,因此建议数据库处于force logging模式。

3、操作实例:

A. 验证是否启用了flashback database。select flask_hbacon,force_logging from v$database;如果显示没有开启闪回功能,同时force_logging也没有开启。

B. 开启闪回功能和force logging。

1)关闭数据库,启动到mount状态shutdown immediate;startup mount;

2)设置db_recovery_file_dest和db_recovery_file_dest_size参数alter system set db_recovery_file_dest='/oracle/ora11gR2/flash_recovery_area';alter system set db_recovery_file_dest_size=4g scope=spfile;show parameter db_recovery_file_dest;

3)开启闪回功能alter database flashback on;

4)开启force logging功能alter database force logging;

5)OPEN数据库,alter database open;

前面基本都是做Flashback database的前提条件。当我们确认要闪回到database的某一个SCN点时:

C. 使用Flash Database功能

1) 关闭数据库shutdown immediate;

2)开启数据库到mount状态startup mount;

3)恢复database到以前的时间点,注意这里时间格式的写法Flashback Database to scn 4231423413;或者Flashback Database to timestamp(to_date('2012-02-6 19:47:14','yyyy-mm-dd hh24:mi:ss'));

4)打开数据库到read only状态alter database open read only;

5)到用户中确认,数据是否被恢复select * from XXX;此时也可以以“resetlogs”的方式开启数据库(alter database open resetlogs;),不推荐这样使用,因为这样打开数据库后,恢复到的时间点之后的数据将会丢失。

PS .小结我们真实完整的操练了一遍Flashback Database功能,它可以完美、便捷和快速的恢复database到我们需要的时间点,甚至被误TRUNCATE的表都会被恢复回来。在“特定场合”下可以考虑使用这个优秀的功能。 “特定场合”:数据库的数据量不大,确认数据库确实可以恢复到指定的时间点。   到这里Flashback 就全部完了,我个人觉得Flashback Database功能在我们实战中肯定很少用,也不建议使用,除非万不得已,或者truncate的数据非常重要,但操作是OPEN数据库我建议使用:alter database open read only;找回我们需要的数据备份后,还是还原闪回前的SCN时间点。毕竟粒度太多,不容易掌控,未知的数据操作太多。

Flashback 基本都是总结学习‘君三思’前辈的博客精华,在此感谢。
 

posted @ 2014-01-05 20:55  Dev 林  阅读(203)  评论(0编辑  收藏  举报