zoukankan      html  css  js  c++  java
  • Oracle 10g中找回误删数据

          今天在项目中对用户的数据进行操作,在修改一个存储过程后,想检查一下修改的存储过程是否正确,就对存储过程进行了调试,调试完后才发现结果集中少了一条记录,查找后发现存储过程中有对表的数据进行删除操作,千小心万小心还是没有把删除的语句中的表改为临时表,还好只删除了一条记录。
          经过一下午和晚上的努力,到出寻求帮助,总算找到了一个方法根据时间可以查看删除的记录数据
          1. 进行查询闪回如:
    Select * From 表名 As Of Timestamp to_Timestamp('2009-7-24  18:07:30','yyyy-mm-dd hh24:mi:ss')
    Where id='CQn2Q9xbvy'
          
          2. 闪回的数据重新插入到机表中,如:
    Insert Into 表名 
    (
    Select * From 表名 As Of Timestamp to_timestamp('2009-07-24 16:08:30','YYYY-MM-DD HH24:MI:SS')

          3. 恢复被删除的基表
    Flashback Table 表名 To Before Drop;

          4.数据库闪回
    Flashback Database To Scn sid; --sid:指定的系统改变号
    Flashback Database To Timestamp to_timestamp('2009-07-24 16:08:30','YYYY-MM-DD HH24:MI:SS')
          
          然后在通过插入语句将原始的数据插入到表中,问题总算是解决了。
          不然今天可犯下了无法弥补的大错,这次的教训将会深深地记住。
  • 相关阅读:
    BZOJ3573: [Hnoi2014]米特运输
    BZOJ3531: [Sdoi2014]旅行
    BZOJ3505: [Cqoi2014]数三角形
    BZOJ3309: DZY Loves Math
    BZOJ3260: 跳
    BZOJ3252: 攻略
    BZOJ3226: [Sdoi2008]校门外的区间
    BZOJ3155: Preprefix sum
    BZOJ2843: 极地旅行社
    BZOJ2671: Calc
  • 原文地址:https://www.cnblogs.com/ZHF/p/1530511.html
Copyright © 2011-2022 走看看