加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Oracle恢复Update操作前的数据详解

(2015-11-08 17:20:37)
标签:

恢复更新操作数据

oracle恢复更新数据

恢复update操作数据

update操作数据恢复

更新数据恢复

分类: Oracle数据库
       在Oracle日常数据处理的过程中,偶尔会遇到误操作更新了表中数据的情况,那这时候该怎么办呢?能不能恢复更新操作前的数据呢?带着这些问题,下面我们将恢复update操作前数据表的数据的方法整理如下,以供大家参考使用:

一、对测试表数据进行更新操作并提交处理
--执行更新操作并提交了数据
update t_test01
set user_name='jiajia001'
where tid=1;
commit;

select * from t_test01

二、恢复数据操作处理
1、开启表行迁移功能
alter table t_test01 enable row movement;

注意:alter table XXX enable row movement 语句会造成引用表XXX的对象(如存储过程、包、视图等)变为无效,执行完成后,需要重新对引用该表的对应进行重新编译;另外,shrink操作也必须开启行迁移功能。

2、查看操作时间点
select t.first_load_time,t.* from v$sqlarea t where rownum<10 order by t.first_load_time desc ;

3、查看更新前时间点的数据情况
select * from t_test01  --你操作的那张表 
as of timestamp to_timestamp('2015-11-08 16:35:00','yyyy-mm-dd hh24:mi:ss');

4、创建临时表暂存更新前时间点的数据
create table t_test01_tmp
as
select * from t_test01  --你操作的那张表 
as of timestamp to_timestamp('2015-11-08 16:35:00','yyyy-mm-dd hh24:mi:ss');

--查看更新前数据情况是否准确
select * from t_test01_tmp

三、恢复更新前表数据处理
1、采用更新方式恢复表更新操作前数据
merge into t_test01 a
using t_test01_tmp b
on (a.tid=b.tid) 
when matched then 
  update set a.user_name=b.user_name;
  commit;

--查看数据恢复情况 
select * from t_test01;

2、删除原表,重命名方式恢复表更新操作前数据
drop table t_test01;
rename t_test01_tmp to t_test01;

--查看数据恢复情况
select * from t_test01;



本文根据网络资料,通过实际的数据测试总结而来。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有