一旦哪些没有被真正删除的对象占满了表空间将会怎样呢?其实答案很简单:如果表空间被回收站中的数据占满了,并且数据文件也无法再扩展了(即产生了表空间压力)。那么回收站中的对象将会以“先入先出”(FIFO)的原则被自动清除掉。并且,依赖表的对象(如索引)将会比表对象先清除。
同样的,当存在用户配额时也会发生表空间压力的情况。当一个用户的配额空间被占满了,尽管此时表空间还可能有足够的空间,系统也会以FIFO的原子释放回收站中属于这个用户的对象。
另外,还有多种途径来手工控制回收站。比如可以用对象的原有名字从回收站中清除指定对象:
PURGE TABLE ABC
或者用对象被删除后系统自动重命名的名字来指定清除它:
PURGE TABLE “BIN$XXUGsbYvSqa8Mrd6GstP+g==$0”
清除表时,同时也会清除依赖这张表的约束,如索引。可以指定只清除表相应的约束,如:
PURGE INDEX IDX_TEST
此外,还可以将整个表空间的回收站内容全部清除:
PURGE TABLESPACE RING
也可以清除某个表空间上的回收站中某个用户的对象:
PURGE TABLESPACE RING USER TEST
当用某个普通用户登录时,只会清除它自己的对象。
PURGE RECYCLEBIN
当以DBA身份登录时,可以清除所有表空间上回收站
PURGE DBA_RECYCLEBIN