1.说明
Flashback技术是以Undo segment中的内容为基础的,因此受限于UNDO_RETENTION参数。要使用flashback特性,必须启用自动撤销表空间管理。
在oracle 10g中,flash back分为一下成员:Flashback Database、Flashback Drop、Flashback Query(分为Flashback Query、Flashback Version Query、Flashback Transation Query三种)和Flashback Table。
2.Flashback Database
把整个数据库回退到过去的某个时点,依赖于Flashback log日志。速度很快,可以认为是不完全恢复的替代技术。
2.1 受到以下限制
-
- Flashback不能解决Media Failure问题,这种情况RMAN恢复是唯一选择;
- 如果删除了数据文件或者使用shrink技术缩小数据库文件大小,这是不能使用flashback database回退到改变之前的状态,这时候就必须先利用RMAN把删除之前或者缩小之前的文件备份restore出来,然后利用flashback database执行剩下的数据恢复。
- 控制文件如果是从备份汇总恢复的,或者是重建的,不能使用flashback database
- 使用flashback database所能恢复到最早的SCN,取决与flashback log中的最早的SCN
2.2 flashback database架构
flashback database包括一个后台进程RVWR(recover write),flashback database log日志和flashback recovery area。一旦数据库启用了flashback database,该RVWR进程会启动,该进程会向flashback database area写入flashback database log。这些日志包括的是数据块的“前镜像”。
查看后台进程 ps -ef|grep rvw
2.3 启用flashback database
系统默认是关闭flashback database功能的,要启用,需要做以下配置:
2.3.1 配置flashback database area
需要配置的包括大小和位置,如果是RAC,flashback recovery area必须在共享存储中。数据必须处于archivelog模式。
启用:alter system set db_recovery_file_dest_size=20G,scope=both;
alter system set db_recovery_file_dest='/DBA/FB' scope=both;
禁用:alter system set db_recovery_file_dest='';
2.3.2 启用数据库 flashback 功能
-
-
-
- 启动数据库到mount:startup mout;
- 检查flashback暂时是关闭的:select name,current_scn,flashback_on from v$database;
- 启动:alter database flashback on;
- 设置初始化参数db_flashback_retention_target 控制数据保留的时间 默认是1440 单位是分钟,即24小时
- 启动数据库 alter database open;
2.4 语法
首先要将数据库启动到mount状态
flashback database to timestamp to_timestamp('20090101 21:22:22','yyyymmdd hh:24:mi:ss');
flashback database to scn 947921;
执行万flashback database后有两种方式修复数据库,
1)直接以alter database open resetlogs;打开数据库;指定scn或者timestamp后的数据统统丢弃;
2)alter database open read only;打开数据库,通过逻辑导出的方式将误操作的表的数据导出,再执行recover database命令以重新应用数据库产生的redo,将数据库修复到flashback database前的状态。再
通过逻辑导入的方式将之前误操作的表重新导入,这样的化对现有数据的表影响最小,不会有数据丢失。
2.5相关视图
-
-
- v$database:查看是否启用了flashback database功能
- v$flashback_database_log
- flashback database 所能回退到的最早时间
- oldest_flashback_scn/oldest_flashback_time
- flashback size:flash recovery area大小
- retention target:系统定义的策略
- estimated_flashback_size:根据策略对所需的空间大小的估值
- v$flashback_database_stat;对flashback log空间进行更细粒度的记录和估计
2.flashback drop
从10g开始,用于恢复误删除的对象,包括表和索引。依赖与tablespace recycle bin(表空间回收站)。
flashback不支持sys用户,system表空间下的对象,也不能从表空间回收站中拿到。
2.1 Tablespace Recycle Bin
从ORACLE10g开始,表空间会存在叫做回收站的逻辑区域,当用户执行drop时,被删除的表和表的关联对象不会被物理删除。
初始化参数recyclebin用于控制是否启用recyclebin,缺省是on,可以使用off关闭。
show recyclebin
-
- purge tablespace tablespacename:清空表空间的recyclebin
- purge tablespace tablespacename user username:清除表空间的recycle bin中指定用户的对象
- purge recyclebin 删除当前用户的recyclebin对象
- purge dba_recyclebin:删除所有用户的recyclebin对象,该命令要sysdba权限
- drop table tablename purge:永久删除
- purge index recycle_bin_object_name:当想删除recyclebin的空间,又想能恢复表时,可以通过释放该对象的index所占用的空间来环节空间压力。
2.2 实例操作
flashback table tablename to before drop;
flashback table tablename to before drop rename to b;
select original_name,object_name from recyclebin;
flashback table "object_name" to before drop;
2.3 限制
-
- 只能用于非系统表空间和本地管理的表空间
- 对象的约束参考不会被恢复,指向该对象的外键约束需要重建
- 对象能否恢复成功,取决与对象空间是否被覆盖使用
- 当删除表是,依赖于该表的物化视图也会同时删除,物化视图不会被放入recyclebin。flashback table不会恢复物化视图
- 对于recyclebin中的对象,只支持查询
3 flashback query
3.1 flashback query(9ir2)
利用多版本读一致性的特性从undo表空间读取操作前的记录数据。
3.1.1 语法
select * from table as of timestamp sysdate-5/1440;
select * from table as of scn scnnumber;
恢复数据使用insert +select方式
oracle内部使用的是scn,即时用的是timestamp也会转换成scn。系统时间与scn之间的关系存在一张表,即sys下的SMON_SCN_TIME;每隔5分钟产生一次记录,表中记录了1440个时间标记与scn的匹配记录
select scn ,to_char(time_dp,'yyyymmdd hh24:mi:ss') from sys.smon_scn_time;
3.2 flashback version query (10g)
查看过去某个时间段内,数据是如何发生变化的。伪列ORA_ROWSCN(10g新增).
select versions_xid,versions_startscn,versions_endscn,versions_opreration from tablename versions between scn minvalue and maxvalue;
flashback_transation_query表.ORA_ROWSCN数据不修改时不发生变化,是数据块级别。
3.3 flashback transation query
使用undo信息来实现。可以查看某个事务执行的所有变化,他需要访问flashback_transation_query视图。xid列表示事务id。
4 flashback table
sys用户不支持闪回。
flashback talbe也是使用undo tablespace的内容实现数据的回退。
flashback table tablename to scn(to timestamp);
注意:需要表支持row movement。可以在user_tables中查询
select row_movement from user_talbes where table_name='a';
alter table tablename enable row movement;
alter table tablename disable row movement;
5 注意事项
1.基于undo 的表恢复,需要注意DDL 操作的影响
第三个就是修改并提交过数据之后,对表做过DDL 操作,包括:
drop/modify 列, move 表, drop 分区(如果有的话), truncate table/partition,这些操作会另undo 表空间中的撤销数据失效,对于执行过这些操作的表应用flashback query 会触发ORA-01466 错误。另外一些表结构修改语句虽然并不会影响到undo 表空间中的撤销记录,但有可能因表结构修改导致undo 中重做记录无法应用的情况,比如对于增加了约束,而flashback query 查询出的undo 记录已经不符合新建的约束条件,这个时候直接恢复显然不可能成功,你要么暂时disable 约束,要么通过适当逻辑,对要恢复的数据进行处理之后,再执行恢复。
另外,flashback query 对v$tables,x$tables 等动态性能视图无效,不过对于dba_*,all_*,user_*等数据字典是有效的。同时该特性也完全支持访问远端数据库,比如select * from tbl@dblink as of scn 360;的形式。
2. 基于undo 的表恢复,flashback table 实际上做的也是dml 操作(会在被操作的表上加dml 锁),因此还需要注意triggers 对其的影响,默认情况下,flashback table to scn/timestamp 在执行时会自动disable 掉与其操作表相差的triggers,如果你希望在此期间trigger 能够继续发挥做用,可以在flashback table 后附加
ENABLE TRIGGERS 子句。
分享到:
相关推荐
ORACLE flashback database测试,主要进行ORACLE flashbackup 闪回整个数据库的实现。
全面总结和解释了oracle flashback技术的使用,优势以及限制
Oracle Flashback 技术总结
NULL 博文链接:https://shihuan830619.iteye.com/blog/1485908
ORACLE FLASHBACK综述.pdf
主要详细讲解了oracle10g以来对于闪回机制的类型及相关的使用方法和场景的介绍,很有用,尤其对于无意中对表数据删除了的恢复较有价值
Oracle Flashback技术总结.比较先进一些,这些内容很丰富的~
Oracle Flashback在医院数据恢复中的应用.pdf
oracle flashback特性(闪回语句,闪回表,闪回数据库).doc
Oracle 10g High Availability-Flashback技術介紹
FLASHBACK DATABASE flashback data1base闪回到过去的某一时刻 闪回点之后的所有工作都将丢失 必须使用resetlogs创建新的场景并打开数据库(一旦resetlogs之后,将不能再闪回至resetlogs之前的时间点) .......
必须设定undo保留时间足够大以能够重构需要闪回的数据 ALTER SYSTEM SET UNDO_RETENTION=; seconds值是undo数据保持的秒数。 Flashback view是由undo retention interval来限制的。
Oracle_Flashback_技术_总结.pdf
NULL 博文链接:https://bestxiaok.iteye.com/blog/1129883
如何正确删除Oracle归档日志,oralce归档日志清理.
oracle数据库FLASHBACK系列功能介绍
Flashback 技术是以Undo segment中的内容为基础的, 因此受限于UNDO_RETENTON参数。要使用flashback 的特性,必须启用自动撤销管理表空间。
Work from the command line or Oracle Enterprise Manager, automate the backup process, perform Oracle Flashback recoveries, and integrate cloud computing technology. This authoritative resource also ...
基本信息 出版社: 清华大学出版社; 第1版 (2009年1月1日) 平装: 594页 语种: 简体中文 开本: 16 ... 使用最新的Oracle Database 11g工具——Oracle Total Recall和Oracle Flashback Data Archive等。
基本信息 出版社: 清华大学出版社; 第1版 (2009年1月1日) 平装: 594页 语种: 简体中文 开本: 16 ... 使用最新的Oracle Database 11g工具——Oracle Total Recall和Oracle Flashback Data Archive等。