Oracle恢复删除数据

当我们在执行某个操作时一不小心把数据做了删除操作(为什么没有提醒确认一下呢 -_-! ),没关系的,从页面删除的数据还是可以在数据库中查到的,前提是你要知道数据在什么表中呀(如果不知道。。。那你就没有继续看下去的必要了)

恢复数据有两种方法:一是scn号,一是时间戳

一、获取当前数据库的scn号

select current_scn from v$database;(切换到sys用户或system用户查询)

查询到的scn号为:1499223

2、查询当前scn号之前的scn

select * from表名as of scn 1499220; (确定删除的数据是否存在,如果存在,则恢复数据;如果不是,则继续缩小scn号)

3、恢复删除且已提交的数据

flashback table表名toscn 1499220;

二、通过时间恢复已经删除且已经提交的数据(最喜欢这种方法了)

1、查询当前系统时间

selectto_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

2、查询删除数据的时间点的数据

select * from表名as of timestamp to_timestamp('2013-05-29 15:29:00','yyyy-mm-dd hh24:mi:ss');  (如果不是,则继续缩小范围)

3、恢复删除且已提交的数据

flashback table表名totimestamp to_timestamp('2013-05-29 15:29:00','yyyy-mm-dd hh24:mi:ss');

注意:如果在执行上面的语句,出现错误。可以尝试执行alter

table表名enable row movement; //允许更改时间戳

亲身实践过的,都是血泪史呀!不过不太记得在哪里看到的这个方法了 *_*(反正是网上百度的~~~)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year:...
    雨一流阅读 685评论 0 2
  • 一.数据控制语句(DML)部分 1.INSERT(往数据表里插入记录的语句) INSERTINTO表名(字段名1,...
    浮浮尘尘阅读 3,562评论 0 19
  • SQL的类型 DML(Data Manipulation Language 数据操作语言): insert up...
    罗志贇阅读 862评论 2 50
  • Chapter 1: 雨打梨花深闭门 2003年的春天,言城湛蓝的天空上浮动着许多洁白的云,清早的阳光很和煦,照...
    何处红尘比雪薄阅读 477评论 0 0
  • 1.某日小电驴突然没电,小J随即将之停在路边,赶去赴约。然后电话通知我小电驴坏了。其实是电源接触不良而已,不过时间...
    爱吃肉的陈肉肉阅读 336评论 0 0