日期:2014-05-16  浏览次数:20365 次

Flashback Database(闪回数据库)

Flashback Database闪回数据库

 

使用闪回数据库可以将数据库快速的闪回到过去某个时间点。在启用闪回数据时,会将修改过的块的前映像作为闪回数据库日志保存在闪回恢复区中,如出现逻辑坏块或用户错误操作需要恢复到过去的时间点,闪回数据库将还原数据库的前映像,然后使用归档日志和redo前滚到期望恢复的时间点,因为无需还原数据库的数据文件,所有此过程速度比较传统的还原恢复通常快很多。

启动闪回数据库时,会将前映像数据保存在“闪回缓冲区”中,然后由恢复写入器(Recovery Writer,RVWR)后台进程,将闪回缓冲区的前映像数据保存在闪回恢复区的闪回数据库日志中。

 

配置闪回数据库相关参数:

db_recovery_file_dest  决定闪回恢复区路径

db_recovery_file_dest_size  决定闪回恢复区大小

db_flashback_retention_target  保留恢复最近多长时间的数据,单位为分钟。

 

闪回数据库必须在归档模式下

 

开启归档

1、SQL> alter system set  log_archive_dest_1='location=+oradg/b1/recovery/' scope=both;

2、SQL> shutdown immediate
3、SQL>  startup mount
4、SQL> alter database archivelog;

5、SQL> alter database open;

6、SQL> archive log list

设置闪回区大小,路径,闪回保留时间

SQL> alter system set db_recovery_file_dest_size=5G;

System altered.

 

SQL> alter system set db_recovery_file_dest='+ORADG';

System altered.

 

SQL> alter system set db_flashback_retention_target=2880;

System altered.

 

开启闪回功能

SQL> startup mount exclusive

SQL> alter database flashback on;

Database altered.

SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
YES

关闭闪回功能

SQL> startup mount exclusive
ORACLE instance started.

Total System Global Area  839282688 bytes
Fixed Size                  2217992 bytes
Variable Size             557844472 bytes
Database Buffers          276824064 bytes
Redo Buffers                2396160 bytes
Database mounted.
SQL> ?alter database flashback off;

Database altered.

SQL> alter database open ;

Database altered.

SQL> alter system set db_recovery_file_dest='';

System altered.

 

闪回数据库的步骤

1、关闭数据库

2、启动数据库到mount状态[exclusive模式]

3、闪回至某个时间点,SCN或还原点

4、使用resetlogs打开数据库

 

闪回数据库的方法


1、sqlplus下基于SCN闪回

 FLASHBACK  DATABASE [<database_name>]  TO  SCN <system_change_number>

 

2、sqlplus下基于时间戳闪回

 FLASHBACK  DATABASE [<database_name>]  TO  TIMESTMP <system_timestamp_value>

 

3、sqlplus下基于还原点闪回

 FLASHBACK  DATABASE [<database_name>]  TO  RESTORE POINT <restore_point_name>

 

4、RMAN下基于时间戳闪回

 RMAN> FLASHBACK DATABASE TO TIME = "TO_DATE('2013-10-10 19:25:21','YYYY-MM-DD HH24:MI:SS')";

 

5、RMAN下基于SCN闪回

 RMAN> FLASHBACK DATABASE TO SCN=1121679;


6、RMAN下基于:归档序号

 RMAN> FLASHBACK DATABASE TO SEQUENCE=56 THREAD=1;

 

运用闪回功能示例: