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权限

 

posted on 2016-04-06 14:56  收苞米的拖拉机  阅读(252)  评论(0编辑  收藏  举报