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;
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)