Oracle学习(9)--Flashback

来源:互联网 发布:淘宝怎么批量上传图片 编辑:程序博客网 时间:2024/06/08 19:41

1 oracle从9i开始,引入Flashback功能,Flashback能够恢复所有的数据库错误(除了文件损坏、介质错误等);

 

2 flashback支持的恢复级别

事务闪回、行级闪回、表级闪回、数据库级闪回

 

3 给bankuser用户授予flashback权限

sql>grant flashback any table to bankuser;

 

4 flashback_transaction_query视图介绍 

START_TIMESTAMP  执行某条语句的时间

COMMIT_TIMESTAMP 提交某条语句的时间

LOGON_USER            登录数据库的用户

OPERATION                 操作类型(增删改)

TABLE_NAME              操作的表名

TABLE_OWNER         表的拥有者
UNDO_SQL                恢复的sql语句

5 如何恢复刚才删除的一条sql语句

方法:

在flashback_transaction_query中查询出对应的undo_sql语句,执行即可。

 

6 如何恢复刚才删除100w条数据

①通过查看flashback_transaction_query试图,获取表更改之前的一个时间点;

②使用如下语句查询获取的时间点的数据是否正确

select * from emp as of timestamp to_timestamp('2013-06-28 21:10:00','yyyy-mm-dd hh24:mi:ss');

③如果数据正确,则使用如下语句将表中数据恢复到某一时间点时的数据

flashback table emp to timestamp to_timestamp('2013-06-28 21:10:00','yyyy-mm-dd hh24:mi:ss');

 

flashback 之前需要先使用如下语句

alter table emp enable row movement;

 

7 flashback 原理

flashback是以undo segment中的内容为基础的,因此受限于undo_retention参数。

 

还原表空间足够大的话,则可以恢复很长时间的数据,如果更改数据频繁,还原表空间中旧数据会按先进先出原则覆盖。

 

8 恢复删除的表

①首先查看删除的表是否可以恢复

select * from user_recyclebin;

如果删除的表可以查询到,则可以恢复

② 使用如下语句恢复

flashback table emp to before drop;