快速恢复update了的orcale数据表

 

在update的时候 没有写条件 将整个表中的数据全部都更新了,这时候怎么办呢?

orcale提供了以下的方法产看某一个时间戳, 所执行的sql的语句内容, 同时可以利用该这个时间戳查看当时语句执行显示的结果

查出需要撤销SQL 的执行时间:

SELECT last_load_time, sql_text  
FROM v$sql  
WHERE last_load_time IS NOT NULL  
and sql_text like '%你错误执行的sql%'  
ORDER BY last_load_time DESC; 

说明:这个语句中除了like里的字段 其他的都是固定的,like中写的是你要恢复的那条sql中的一段 或者全部

执行结果如下:

执行结果,找到对应的错误sql执行时间

在上图的执行结果里, 找到你错误执行的那条sql的时间,我这里错误执行语句的时间是第二条:2017-08-21/11:07:49
然后通过下面的sql,找回update之前的数据: 

select * from your_table
as of timestamp to_timestamp('2017-08-21/11:07:49','yyyy-mm-dd/hh24:mi:ss');

 

若是全表恢复:

1.将错误更新之前的数据新建一张表tableNameCopy 保存

create table tableNameCopy 

as select * from tableName 

as of timestamp to_timestamp('2017-08-21/11:07:49','yyyy-mm-dd/hh24:mi:ss');

 

2.删除原表 tableName 中的所有被错误更新的数据

delete from tableName ; 

 

3.将tableNameCopy 表中的数据写入原表 tableName

insert into tableName select * from tableNameCopy


------完美啦~

 

转载于:https://www.cnblogs.com/zhanym/p/7403577.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值