Oracle 恢复被删除的数据,解决误操作删除数据

深碍√TFBOYSˉ_ 2022-01-06 03:45 413阅读 0赞
  1. 在删除数据的时候不小心,把delete语句执行错了,把别的表给delete,而且还执行了commit!真汗.......数据是相当的重要........废话少说了!赶快找方法吧:
  2. 第一种:
  3. 1.打开Flash存储的权限
  4. ALTER TABLE tableName ENABLE row movement ;
  5. 2.把表还原到指定时间点
  6. flashback table tableName to timestamp to_timestamp(''2011-02-28 10:40:00'',''yyyy-mm-dd hh24:mi:ss'');
  7. 后面的参数为要还原的时间点
  8. 第二种:利用ORacle的快照进行查找某个时间点的数据
  9. select * from tableName AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '100' MINUTE)
  10. select * from tableName as of timestamp to_timestamp('2011-05-21 11:40:00','YYYY-MM-DD HH24:MI:SS');
  11. 这样可以查询到指定的时间段的数据,再把查询到的数据复制到原来的表中。
  12. 第三种:其他(在别的地方找到的答案,但还没有试过!)
  13. 删除表后,可以采用如下操作:在 查询表user_recyclebin最近操作过的表名称,然后用闪回(只能用于10G及以上版本)。
  14. select * from user_recyclebin;
  15. FLASH BACK TABLE TABLE_NAME TO BEFORE DROP;
  16. 如果是删了或修改里面的数据,可以先建立一个快表将删除修改之前状态的数据找回到这个表中:
  17. CREATE TABLE QUICK_TABLE AS SELECT * FROM TABLE_NAME AS OF TIMESTAMP SYSTEM-1/24 (一小时前的),减去的时间可以自己定。
  18. 第四:通过SCN实现
  19. SCN(系统改变号),它的英文全拼为:System Change Number ,它是数据库中非常重要的一个数据结构。
  20. SCN提供了Oracle的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重要的
  21. 注释:Oracle 仅根据 SCN 执行恢复。
  22. 它定义了数据库在某个确切时刻提交的版本。在事物提交时,它被赋予一个唯一的标示事物的SCN 。一些人认为 SCN 是指, System Commit Number ,而通常 SCN 在提交时才变化,所以很多情况下,这两个名词经常被交替使用。
  23. 究竟是哪个词其实对我们来说并不是最重要的,重要的是我们知道 SCN Oracle 内部的时钟机制, Oracle 通过 SCN 来维护数据库的一致性,并通过SCN 实施 Oracle 至关重要的恢复机制。
  24. 1:执行下面语句,将删除时间转换为scn
  25. select timestamp_to_scn(to_timestamp('2011-08-03 10:00:00','YYYY-MM-DD HH:MI:SS')) from dual;
  26. 结果:11837812:在将tablescn点取出来。
  27. select * from moAS OF SCN 11837813;
  28. 最后把查出来得结果insert到原表中
  29. insert into mo select * from mo AS OF SCN 1183781

发表评论

表情:
评论列表 (有 0 条评论,413人围观)

还没有评论,来说两句吧...

相关阅读