误用DELETE删除了ORACLE表的数据怎么办

第一种情况:使用delete删除数据

1. 用以下语句找出确定时间点删除的数据:

select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss')

或者用以下语句找出当前时间之前几分钟的数据:

select * from 表名 as of timestamp (systimestamp - interval '2' minute);

2. 然后就可以使用insert语句插入删除的数据

第二种情况:使用drop删除表

1.使用正常drop命令删除的表(没有使用purge)

使用drop删除的表并没有完全删除,它的块依旧保留在其表空间中,可以通过查询user_recyclebin/dba_recyclebin数据字典视图来查看删除的对象。默认情况下,回收站是启用的,初始化参数recyclebin=on。

例如删除了一张emp表,可以通过以下语句闪回表

 

flashback table emp to before drop;
flashback table emp to before drop rename to emp2;--重命名

 

 

也可以通过删除recyclebin区域来永久性删除表 ,原始删除表drop table emp cascade constraints
   purge table emp;
   删除当前用户的回收站:
    purge recyclebin;
   删除全体用户在回收站的数据:
   purge dba_recyclebin

 

posted @ 2019-05-28 10:12  越过山丘-  阅读(547)  评论(0编辑  收藏  举报