ORACLE回收站
原文地址:http://docs.oracle.com/cd/E11882_01/server.112/e25494/tables.htm#ADMIN01511
http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_9012.htm#SQLRF01802
1. 什么是回收站?
当我们对table执行DROP操作时,oracle并不会立即清空该TABLE占用的空间,而是会将其重命名并放在回收站。万一DROP是误操作,还可以通过FLASHBACK
进行恢复。
①当对表空间执行DROP操作时,该表空间下的所有数据库对象都不会被放入回收站,回收站中该表空间的数据库对象也会被purge。
②当DROP USER时,该用户的所有数据库对象都不会被放入回收站,回收站中该用户的数据库对象也会被purge。
③当DROP CLUSTER时,该cluster的所有表成员都不会放入回收站,回收站中的表成员也会被purge。
④当DROP TYPE时,所以依赖该TYPE的subtype都不会放入回收站,回收站中依赖该TYPE的SUBTYPE都会被PURGE
2. 启动/禁用 回收站
LTER SESSION SET recyclebin = OFF; ALTER SYSTEM SET recyclebin = OFF SCOPE = SPFILE; ALTER SESSION SET recyclebin = ON; ALTER SYSTEM SET recyclebin = ON SCOPE = SPFILE;
当ALTER SYSTEM需要重启数据库使配置生效。
3. 回收站信息查询
SELECT * FROM recyclebin; SELECT * FROM user_recyclebin; SELECT * FROM dba_recyclebin;
当对表执行DROP操作后,可以通过如上SQL在回收站中查询该TABLE,也可以通过purge table_name将DROP的表占用的空间给清除掉。
也可以通过flashback table table_name to before drop将table_name从回收站恢复。
当DROP table_name指定关键字PURGE时,不会将该table放入回收站,也无法通过flashback进行恢复。
drop table t1;--删除t1 purge table t1;--将t1从回收站删除 flashback table t1 to before drop;--将t1从回收站回复 drop table t1 purge;--不会将t1放入回收站 purge recyclebin;--清空回收站当前用户所属的数据库对象 purge dba_recyclebin;--清空回收站中所有的数据库对象,需要sysdba权限