Oracle学习(9)--Flashback

本文介绍了Oracle的Flashback功能,包括它能恢复的错误类型、不同级别的闪回操作,如事务、行、表和数据库级别。此外,还详细讲解了如何给用户授权、使用flashback_transaction_query视图进行查询,以及如何恢复误删除的数据和表。Flashback依赖于undo segment,其恢复能力受限于undo_retention参数。最后,展示了如何从回收站恢复删除的表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值