美文网首页
oracle使用update语句更新数据后还原数据库

oracle使用update语句更新数据后还原数据库

作者: stonehiy | 来源:发表于2017-09-15 15:41 被阅读96次
select * from BBRUN."t_user" where BBRUN."t_user"."mobile" ='1888888888';      

update BBRUN."t_user" set BBRUN."t_user"."is_realname" = '0' where BBRUN."t_user"."mobile" = '1888888888';        

delete from  BBRUN."t_user" where  BBRUN."t_user"."mobile" = '1888888888';

写在前面

在操作数据库语句的时候有可能失误,比如在修改数据库数据数据,本来是想通过电话号码字段取修改性别,可能一个不小小心弄反了,结果把电话字段更新成了,要想办法把数据找回来。还好是测试环境,要是生产环境你就等着枪毙吧。

数据恢复前

  1. 开启表行迁移功能
 alter table  BBRUN."t_user" enable row movement; 

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

  1. 查看操作时间点
select t.first_load_time,t.* from v$sqlarea t where rownum<10 order by t.first_load_time desc ;
  1. 查看更新前时间点的数据情况
select * from BBRUN."t_user" as of timestamp to_timestamp('2017-09-06 15:00:00','yyyy-mm-dd hh24:mi:ss');
  1. 创建临时表暂存更新前时间点的数据
create table BBRUN."t_user_temp" as select * from BBRUN."t_user" as of timestamp to_timestamp('2017-09-06 15:00:00','yyyy-mm-dd hh24:mi:ss');
  1. 查看更新前数据情况是否准确
select * from  BBRUN."t_user_temp";

恢复更新数据处理方式一:采用更新方式恢复表更新操作前数据

merge into BBRUN."t_user" 
using BBRUN."t_user_temp"  
on ( BBRUN."t_user"."t_user_id" = BBRUN."t_user_temp"."t_user_id" ) 
when matched then 
update set BBRUN."t_user"."mobile" = BBRUN."t_user_temp"."mobile";    

--查看数据恢复情况

select * from t_test01;

恢复更新数据处理方式二:删除原表,重命名方式恢复表更新操作前数据

drop table BBRUN."t_user" ;
rename BBRUN."t_user_temp" to BBRUN."t_user";

--查看数据恢复情况

select * from BBRUN."t_user";

相关文章

网友评论

      本文标题:oracle使用update语句更新数据后还原数据库

      本文链接:https://www.haomeiwen.com/subject/dqossxtx.html