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

本文详细介绍了在Oracle数据库中遇到的回收站问题,当尝试删除已存在于回收站的用户时,系统报错阻止进一步操作。文章提供了清理回收站的具体方法,包括使用SQL命令purge tablespace及通过SQL Developer进行操作,帮助读者解决类似问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   一个智障操作,drop一个用户,下面的东西比较多,删得比较慢,然后shell突然关了。

  就导致了,删不掉,又不能创建新的用户。出版本要得比较急,就先创建新的用户测试去了。

  今天要弄个东西,又想起这个事情,就处理一下。

  然后发现,报了如下的错:

SQL> drop user user cascade;
drop user bto cascade
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-38301: can not perform DDL/DML over objects in Recycle Bin

   不能再Recycle Bin 的对象上中执行DDL/DML操作

   意思很明显啊,用户在回收站里面了,不能再删除了。

oracle Recycle Bin:

在Oracle10g中,引入了一个回收站(Recycle Bin)的概念。回收站,从原理上来说就是一个数据字典表,放置用户Drop掉的数据库对象信息。
被用户Drop的对象并没有被Oracle删除,仍然会占用空间。除非是用户手工进行Purge或者因为存储空间不够而被Oracle清掉。
有了回收站,能够减少很多不必要的麻烦。常常看到开发人员误删除表,我们可以充分利用10g的闪回(FLASHBACK)功能来避免类似的人为操作。
不能对已经放到回收站(Recycle Bin)中的对象执行DDL/DML语句。

 

处理:

  清空Recycle bin 中的表空间:    

purge tablespace tablespace_name;

搞定。

 

拓展一下:

清空recycle bin中的表空间:

purge tablespace tablespace_name

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

pruge tablespace tablespace_name user user_name

清除当前用户的对象:

purge recyclebin

 清除所有用户的对象:

purge dba_recyclebin

 

或者,使用sql developer:

 

转载于:https://www.cnblogs.com/Springmoon-venn/p/8932688.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值