一、闪回数据库依赖闪回日志
1、简介
必要条件:在MOUNT阶段
必须是归档模式下
必须设定闪回恢复区(设定db_recovery_file_dest参数),存放闪回日志,闪回日志+归档日志就可以闪回到某个阶段。
Flashback Database功能非常类似与RMAN的不完全恢复,它可以把整个数据库回退到过去的某个时点的状态,这个功能依赖于Flashback log 日志。比RMAN更快速和高效。因此Flashback Database可以看作是不完全恢复的替代技术。但它也有某些限制:
(1)Flashback Database不能解决Media Failure,这种错误RMAN恢复仍是唯一选择。
(2)如果删除了数据文件或者利用Shrink技术缩小数据文件大小,这时不能用Flashback Database技术回退到改变之前的状态,这时候就必须先利用RMAN把删除之前或者缩小之前的文件备份restore出来,然后利用Flashback Database执行剩下的Flashback Datbase。
(3)如果控制文件是从备份中恢复出来的,或者是重建的控制文件,也不能使用Flashback Database。
(4)使用Flashback Database锁能恢复到的最早的SCN,取决与Flashback Log中记录的最早SCN。
Flashback Database 整个架构包括一个进程Recover Writer(RVWR)后台进程,Flashback Database Log日志 和Flash Recovery Area。一旦数据库启用了Flashback Database, 则RVWR进程会启动,该进程会向Flash Recovery Area中写入Flashback Database Log, 这些日志包括的是数据块的 " 前镜像(before image)", 这也是Flashback Database技术不完全恢复块的原因。
启动闪回数据库及操作
select flashback_on from v$database;
FLASHBACK_ON
------------------
NO
select name from v$bgprocess where paddr<>'00'; RVWR这个进程是用户闪回功能的,产生闪回日志。
打开闪回数据库功能:
shutdown immediate
startup mount
alter database flashback on; v$flashback_database_staT
alter database open;
操作实例:
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
696842
drop table scott.emp purge;
使用闪回:
shutdown immediate
startup mount
flashback database to scn 696842; 闪回数据库后,可以用下面两种方式打开:
· 建议先READ ONLY打开确认数据是否正确,(注意有时用READ ONLY打开时候会于审计相冲突,需要关掉审计,审计是静态参数,SPFILE)。这里有一个好处:以read-only模式打开数据库,然后立刻通过逻辑导出的方式将误操作涉及表的数据导出,再执行recover database命令以重新应用数据库产生的redo,将数据库修复到flashback database操作前的状态,然后再通过逻辑导入的方式,将之前误操作的表重新导入,这样的话对现有数据的影响最小,不会有数据丢失。
· alter database open resetlogs;指定scn或者timestamp时间点之后产生的数据统统丢失
·
2、相关的一些视图:
v$flashback_database_logfile 查询闪回日志列表
v$flashback_database_log 查询最晚可以闪回到那个时间
v$flashback_database_stat 查询闪回相关的数据大小
· V$FLASHBACK_DATABASE_LOG
显示闪回数据的信息,用来评估当前负载下需要的闪回空间
desc v$flashback_database_log
Name Description
------------------------------ --------------------------
OLDEST_FLASHBACK_SCN Lowest system change number (SCN) in the flashback data, for any incarnation
闪回数据最小的scn
OLDEST_FLASHBACK_TIME Time of the lowest SCN in the flashback data, for any incarnation
闪回数据最小的时间
RETENTION_TARGET Target retention time (in minutes)
闪回保留时间
FLASHBACK_SIZE Current size (in bytes) of the flashback data
闪回数据大小
ESTIMATED_FLASHBACK_SIZE Estimated size of flashback data needed for the current target retention
评估满足当前闪回保留时间,需要的闪回空间的大小
· V$FLASHBACK_DATABASE_STAT显示数据库收集到的闪回信息
Name Description
------------------------ --------
BEGIN_TIME Beginning of the time interval
一段时间间隔的起始时间
END_TIME End of the time interval
一段时间间隔的结束时间
FLASHBACK_DATA Number of bytes of flashback data written during the interval
一段时间内闪回数据的大小(bytes)
DB_DATA Number of bytes of database data read and written during the interval
一段时间内数据库读写大小(bytes)
REDO_DATA Number of bytes of redo data written during the interval
一段时间内redo数据的大小(bytes)
ESTIMATED_FLASHBACK_SIZE Value of ESTIMATED_FLASHBACK_SIZE in V$FLASHBACK_DATABASE_LOG at the
end of the time interval
一段时间间隔的结束时,评估需要闪回空间的大小