码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2018-01-14 22:46:35      阅读:511      评论:0      收藏:0      [点我收藏+]

标签:重复   密码   from   desc   刷新   commit   结果   dual   基于   

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

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

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

导入:IMP zzmes/zzmes@ORCL 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的连接了

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

  

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

标签:重复   密码   from   desc   刷新   commit   结果   dual   基于   

原文地址:https://www.cnblogs.com/echo-ling/p/8284429.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!