今天同事找到我说是有个表空间删除时报以下错误:
ORA-00604:递归 SQL 级别 1 出现错误
ORA-38301:无法对回收站中的对象执行 DDL/DML
这种问题,一般主要原因是Oracle表空间中有其他用户的对象,导致无法正确删除,查询dba_segments时,发现有以下几个对象:
尝试在sys用户下通过purge index bdcysl.index_name的方式删除,发现还是报错;
登录到bdcysl用户后,执行purge recyclebin,之后再去删除表空间,还是报以上的错误;
最后无奈,只能清空所有回收站下的对象,在sys用户下执行purge dba_recyclebin;
之后再去删除表空间:drop tablespace XXX including contents and datafiles;
表空间删除成功。