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

  基于破平台的文本编辑器,写了个“;+”没有出现编译异常,代码直接执行,导致“+”后面的“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的连接了

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

  

转载于:https://www.cnblogs.com/echo-ling/p/8284429.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值