今天同事找到我说是有个表空间删除时报以下错误:
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;
表空间删除成功.
来源: http://www.linuxidc.com/Linux/2019-09/160675.htm