为了加快用户错误操作的恢复Oracleg提供了flashback drop的功能
而在以前的版本中除了不完全恢复通常没有一个好的解决办法
Oracle g的flashback drop功能允许你从当前数据库中恢复一个被drop了的对象在执行drop操作时现在Oracle不是真正删除它而是将该对象自动将放入回收站对于一个对象的删除其实仅仅就是简单的重令名操作
所谓的回收站是一个虚拟的容器用于存放所有被删除的对象在回收站中被删除的对象将占用创建时的同样的空间你甚至还可以对已经删除的表查询也可以利用flashback功能来恢复它 这个就是flashback drop功能
回收站内的相关信息可以从recyclebin/user_recyclebin/dba_recyclebin等视图中获取或者通过SQL*Plus的show recyclebin 命令查看
SYS AS SYSDBA on MAR >connect eygle/eygle
Connected
EYGLEon MAR >create table t as select * from dba_users;
Table created
EYGLEon MAR >drop table t;
Table dropped
EYGLEon MAR >show recyclebin;
ORIGINAL NAMERECYCLEBIN NAMEOBJECT TYPEDROP TIME
T BIN$T+hCJvgNAgAIMR+Q==$ TABLE:::
EYGLEon MAR > FLASHBACK TABLE t TO BEFORE DROP;
Flashback complete
EYGLEon MAR >desc t
NameNull?Type
USERNAMENOT NULL VARCHAR()
USER_ID NOT NULL NUMBER
PASSWORD VARCHAR()
ACCOUNT_STATUSNOT NULL VARCHAR()
LOCK_DATEDATE
EXPIRY_DATEDATE
DEFAULT_TABLESPACENOT NULL VARCHAR()
TEMPORARY_TABLESPACENOT NULL VARCHAR()
CREATED NOT NULL DATE
PROFILE NOT NULL VARCHAR()
INITIAL_RSRC_CONSUMER_GROUPVARCHAR()
EXTERNAL_NAMEVARCHAR()
EYGLEon MAR >show recyclebin;
如果想要彻底清除这些对象可以使用Purge命令如:
EYGLEon MAR >show recyclebin;
ORIGINAL NAMERECYCLEBIN NAMEOBJECT TYPEDROP TIME
TBIN$ycNBfhan/gNAgAIMR+Q==$ TABLE:::
EYGLEon MAR >purge table t;
Table purged
EYGLEon MAR >show recyclebin;
使用 purge recyclebin可以清除回收站中的所有对象
类似的我们可以通过purge user_recyclebin或者是purge dba_recyclebin来清除不同的回收站对象
通过PURGE TABLESPACE TSNAMEPURGE TABLESPACE TSNAME USER USERNAME命令来选择清除回收站
如果需要彻底删除一个表不想放到回收站中可以在drop语句中增加purge选项如
drop table tablename purge