oracle使用update后闪回恢复数据

使用update后忘记加条件导致全表更新可以使用,闪回技术恢复数据。

闪回技术:Oracle提供了四种可供使用的闪回技术(闪回查询,闪回删除,闪回归档,闪回数据库)

一、闪回查询
1.查询某个操作是几时执行的时间点

--例查询2020-11-11执行的update语句
select t.SQL_TEXT, t.FIRST_LOAD_TIME
from v$sqlarea t
 where t.SQL_TEXT like 'update%'  and t.FIRST_LOAD_TIME like '2020-11-11%'
 order by t.FIRST_LOAD_TIME desc

2.闪回查询:可以查询到某个时间点的数据库状态:

select * from  tablename as of timestamp to_timestamp('2020-11-11 22:00:00','yyyy-mm-dd hh24:mi:ss');

3.数据恢复

--1.开启表的 row movement
alter table tablename enable row movement

--2.闪回到指定时间的数据状态
flashback table tablename to timestamp to_timestamp('2020-11-11 16:06:00','yyyy-mm-dd hh24:mi:ss');

--3.关闭表的 row movement
alter table tablename disable row movement

撤销段:Oracle中一个逻辑结构,因为大部分闪回技术都需要依赖撤销段中的撤销数据。撤销数据是反转DML语句结果所需的信息,只要某个事务修改了数据,那么更新前的原有数据就会被写入一个撤销段。(事务回滚也会用到撤销段中的数据)。事务启动时,Oracle 会为其分配一个撤销段

闪回表可能会失败,有可能有以下几种情况:

  1. 违反了数据库约束,比如用户不小心删除了子表中的数据,现在想利用闪回表技术进行回退,恰好在这中间,父表中与该数据对应的那条记录也被删除了,在这种情况下,由于违反了外键约束,导致闪回表操作失败了;
  2. 撤销数据失效,比如用于支撑闪回操作的撤销数据被覆盖了,这种情况闪回表操作自然会失败;
  3. 闪回不能跨越DDL,即在闪回点和当前点之间,表结构有过变更,这种情况闪回操作也会失败

所以,在需要使用闪回功能去恢复数据的时候,最短时间发现错误,第一时间执行闪回操作,才能最大程度地保证闪回功能的成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值