首先,咱们来看一下Oracle Drop Table的语法格式。数据库
解释一下里面的参数:bash
schema
purge
cascade constraints
使用闪回删除功能,能够撤消 DROP TABLE 语句产生的影响,而不须要求助于传统时间点恢复。这是由回收站实现的,经过 DBA_RECYCLEBIN 视图可查询回收站。oracle
conn / as sysdba select value from v$parameter where name='recyclebin';
使用scott用户登陆 SQL> conn scott/tiger Connected. 查看当前用户下的表 SQL> select * from tab; TNAME TABTYPE CLUSTERID -------------------- ------- ---------- BONUS TABLE DEPT TABLE EMP TABLE EMP1 TABLE SALGRADE TABLE 删除一张表 SQL> drop table emp1; Table dropped. 查看当前用户下的表 SQL> select * from tab; TNAME TABTYPE CLUSTERID -------------------- ------- ---------- BIN$opkhRg3T0MPgVaUg TABLE q/kbkw==$0 BONUS TABLE DEPT TABLE EMP TABLE SALGRADE TABLE
下面的方式是错误的: select * from BIN$opkhRg3T0MPgVaUgq/kbkw==$0; 须要加上双引号: select * from "BIN$opkhRg3T0MPgVaUgq/kbkw==$0";
show recyclebin;
在执行闪回表操做期间,数据库获取闪回列表中全部指定的报表独立DML锁。当正在恢复到以前状态时,这些锁阻止对表的任何操做。闪回表操做在单个事物中执行,无论闪回表中指定表的数量。要么全部的表都恢复到早期状态,要么都没恢复。若是任何表的闪回表操做失败,那么整个语句都失败。闪回操做完成时,表中的数据与表以前的时间点一直。可是,FLASHBACK TABLE到SCN或时间戳不保存rowid,FLASHBACK TABLE TO BEFORE DROP不能恢复引用约束。数据库不能恢复与表关联的早期结构的统计信息。表当前的索引是恢复,并反映还原点表的状态。若是该索引在还原点不存在,数据更新索引里来反映还原点表的状态。然而,若是索引是在当前时间和还原点之间被删除,是不能恢复。spa
flashback table emp1 to before drop; 也能够经过回收站中的名字执行闪回: flashback table “BIN$opkhRg3T0MPgVaUgq/kbkw==$0” to before drop;
purge recyclebin;