回收站,顾名思义,它就是存储被删掉的东西。从原理上来说就是一个数据字典表,放置用户删除(drop)掉的数据库对象信息。用户进行删除操作的对象并没有被数据库删除,仍然会占用空间。除非是由于用户手工进行Purge或者因为存储空间不够而被数据库清掉。数据库有了这样的功能,能够减少很多不必要的麻烦。

如果一个表被删除,那么与该表有关联的对象,例如索引、约束和其他依赖对象都会在前面加bin$$这个前缀。

 

查看回收站状态:

返回结果是on,就是回收站打开。

返回结果是off,就是回收站关闭。

SELECT Value FROM V$parameter WHERE Name = 'recyclebin'; 

 

对系统和会话级的回收站,打开关闭。

--打开系统级回收站
ALTER SYSTEM SET recyclebin = ON;      

--打开会话级回收站 
ALTER SESSION SET recyclebin = ON;      
 
--关闭系统级回收站
ALTER SYSTEM SET recyclebin = OFF;      
 
--关闭会话级回收站
ALTER SESSION SET recyclebin = OFF; 

 

查看回收站里的内容:

SELECT * FROM RECYCLEBIN;      
 
SELECT * FROM USER_RECYCLEBIN;      
 
SELECT * FROM DBA_RECYCLEBIN; 

 

恢复回收站内对象:

FLASHBACK TABLE <<Dropped_Table_Name>> TO BEFORE DROP RENAME TO <<New_Table_Name>>

备注:这里的RENAME是给删除的对象进行重新命名,是一个可选命令。

 

删除回收站内容:

1.删除表

PURGE TABLE <<Table_NAME>>;

2.删除索引

PURGE INDEX <<Index_NAME>>; 

3.删除表空间相关对象

PURGE TABLESPACE<<Table_NAME>>; 

4.删除特定用户表空间相关对象

PURGE TABLESPACE<<Table_NAME>> USER <<User_Name>>; 

5.清空回收站

PURGE RECYCLEBIN; 

6.彻底删除表

DROP TABLE <<Table_Name>> PURGE;