误用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