回收站,顾名思义,它就是存储被删掉的东西。从原理上来说就是一个数据字典表,放置用户删除(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;