以下转自:http://blog.csdn.net/lansesl2008/article/details/16116749 作者:lansesl2008



  1. 小白今天删数据库表空间WUIDXTABLESPACE的时候,报了如下的错:  


  1. SQL>  drop tablespace WUIDXTABLESPACE including contents and datafiles;  

  2.  drop tablespace WUIDXTABLESPACE including contents and datafiles  

  3. *  

  4. ERROR at line 1:  

  5. ORA-00604: error occurred at recursive SQL level 1  

  6. ORA-38301: can not perform DDL/DML over objects in Recycle Bin  


小白于是在网上搜啊搜,找到一个方法


  1. SQL> purge tablespace WUIDXTABLESPACE;  

  2.   

  3. Tablespace purged.  


  1. SQL> drop tablespace WUIDXTABLESPACE including contents and datafiles;  

  2.   

  3. Tablespace dropped.  

 

这里涉及到recycle bin的概念,她是和普通对象公用表空间存储空间的,或者说Recycle bin的对象要和普通对象抢夺存储空间。当存储空间不够时,oracle会按照先入先出的原则覆盖recycle bin的对象,也可以用如下方法来清空Recycle bin池:

1. 清空recycle bin中的表空间:

purge tablespace tablespace_name;

2. 清空某个表空间内的某个用户的对象:

pruge tablespace tablespace_name user user_name

3. 清除当前用户的对象:

purge recyclebin

4. 清除所有用户的对象:

purge dba_recyclebin

5. sysdba权限

drop table table_name purge 永久删除

6. 删除对象的关联索引:

purge index index_name