记一次数据库不小心批量更新恢复的骚操作

Posted 喃博思睿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次数据库不小心批量更新恢复的骚操作相关的知识,希望对你有一定的参考价值。

  基于破平台的文本编辑器,写了个“;+”没有出现编译异常,代码直接执行,导致“+”后面的“where”条件没有用上~批量更新了合同表,很无奈,也很庆幸自己复查了一下发现了这个巨恐怖的事情,再一次刷新了我一个程序狗三观!!!

  第一件事就是关闭服务器,然后导出数据,备份,导入导出命令如下:

导出:EXP  zzmes/[email protected] buffer=4096 owner=zzmes file=f:\zzmes20170114.dmp
           用户    密码    要导出的数据库连接

导入:IMP zzmes/[email protected] buffer=30720 fromuser=zzmes touser=zzmes file=F:\zzmes20170114.dmp
          用户    密码    要导入到的数据库        导出用户      导出用户      已导出的文件

  然后在网上找到了如下命令恢复了数据,具体可以参考下面博客:http://vvv-110.iteye.com/blog/2072702,但是一定要尽快去恢复,而且一定提前备份了再去,防止二次受伤,你懂的。。。。。。

  一、执行如下SQL将test_temp表中的数据恢复到 2014 05 28  11:00:00 

  注意,这里一定要先删除全部数据,否则可能会导致数据重复,我用的就是第一种,搞定~

  delete from test_tmp;
insert into test_tmp select *
    from test_tmp as of timestamp to_timestamp(2014-05-28 11:00:00,yyyy-mm-dd hh24:mi:ss)

commit;

  二、如下:

select timestamp_to_scn(to_timestamp(2014-05-27 11:00:00,YYYY-MM-DD HH:MI:SS)) from dual;
或select * from sys.smon_scn_time order by time_dp desc;
得到结果 71547785
然后 insert into test_tmp select * from test_tmp AS OF SCN 71547785

  三、如下:

 select * from v$sqlarea ;SELECT * FROM v$session;SELECT * FROM v$session a,v$sqlarea b WHERE b.ADDRESS = a.PREV_SQL_ADDR; 
通过这条语句找到的数据是有限的 因为有的用户可能已经断开和oracle的连接了

  最近的心情很烦躁,这样不好~烦心的事情越来越多,做自己不酷,做更好的自己才最酷~

  

以上是关于记一次数据库不小心批量更新恢复的骚操作的主要内容,如果未能解决你的问题,请参考以下文章

关于不小心删除.svn文件之后如何再次关联SVN的骚操作

记一次rm -rf /* 恢复事件

记一次rm -rf /* 恢复事件

记一次数据库崩溃的恢复

记一次mysql数据恢复

记一次通过物理文件恢复MariaDB数据