Welcome 微信登录

首页 / 数据库 / MySQL / Oracle Flashback闪回机制

Flashback的目的

在有Flashback之前,如果你对数据误操作,并已提交,这时想回退该误操作,将会是很件麻烦的事情。有人可能会说可以用备份恢复到误操作之前,但正确的操作数据也一起没了。唯一可能的办法就是日志挖掘,但日志挖掘非常繁琐,很难定位。因此,Oracle推出了Flashback技术,主要目的就是为了恢复误操作。

Flashback家族介绍

数据库级别:Flashback Database
表级别:Flashback Drop和Flashback Table,Flashback Data Archive
记录级别:Flashback Version Query和Flashback Transaction Query

Flashback家族Flashback Log
Tablespace Recycle Bin
UNDO作用
Flashback Database
Yes   回滚数据库
Flashback Drop
  Yes  恢复误删除的表
Flashback Version Query
   Yes 恢复误操作的数据
Flashback Transaction Query
   Yes 同上
Flashback Table
   Yes 同上

Flashback 技术发展历程

Flashback Version/Transaction Query 和 Flashback Table

Flashback Query和Flashback Table都是利用undo实现回退功能,当需要闪回到过去某一时刻时,先利用Flashback Query查询,确认闪回的SCN或Timestamp,然后再利用Flashback Table真正实现闪回。
1. 9i 的 Flashback Query
9i的Flashback Query可以查询过去某个时间点对象的状态,测试如下:
系统当前时间为:
A105024@O02DMS1>alter session set nls_date_format="yyyy-mm-dd:hh24:mi:ss";
A105024@O02DMS1>select sysdate from dual;

SYSDATE
-------------------
2011-12-16:02:51:16
test表里有一条数据:
A105024@O02DMS1>select * from test;

ID
----------
1
现把该数据删除:
A105024@O02DMS1>delete from test;
A105024@O02DMS1>commit;
此时test表中无数据:
A105024@O02DMS1>select * from test;

no rows selected

但是可以通过Flashback Query查询删除之前的数据:
A105024@O02DMS1>select * from test as of timestamp to_timestamp("2011-12-16:02:51:16","yyyy-mm-dd:hh24:mi:ss");

ID
----------
1

必要时还可以恢复数据:
A105024@O02DMS1>insert into test select * from test as of timestamp to_timestamp("2011-12-16:02:51:16","yyyy-mm-dd:hh24:mi:ss");
A105024@O02DMS1>commit;
  • 1
  • 2
  • 3
  • 4
  • 下一页
Oracle ORA-01555 错误解决Oracle 常用函数:nvl/nullif/case when/wm_concat/replace相关资讯      Oracle闪回  Flashback  Oracle flashback 
  • Oracle闪回技术之闪回数据库  (今 08:36)
  • 闪回事务查询Flashback Transactio  (08/22/2015 09:42:46)
  • 使用Flashback Database进行数据表  (08/22/2015 09:38:06)
  • Oracle闪回技术详解  (09月16日)
  • 闪回版本查询Flashback Version   (08/22/2015 09:41:05)
  • 使用Flashback Transaction方法来  (08/22/2015 09:19:56)
本文评论 查看全部评论 (0)
表情: 姓名: 字数