〖环境(Environment)〗
OS:Solaris
DB:Oracle 10G
〖现象(Symptom) 〗
删除回收站中的表RB$$61213$TABLE$0时,发生错误,如下所示
SQL> drop table RB$$61213$TABLE$0;
drop table RB$$61213$TABLE$0
*
ERROR 位于第 1 行:
ORA-38301: can not perform. DDL/DML over objects in Recycle Bin
〖原理(Cause) 〗
在Oracle 10g中,引入了一个回收站(Recycle Bin)的概念。回收站,从原理上来说就是一个数据字典表,放置用户Drop掉的数据库对象信息。被用户Drop的对象并没有被Oracle删除,仍然会占用空间。除非是用户手工进行Purge或者因为存储空间不够而被Oracle清掉。有了回收站,能够减少很多不必要的麻烦。常常看到开发人员误删除表,我们可以充分利用10g的闪回(FLASHBACK)功能来避免类似的人为操作。不能对已经放到回收站(Recycle Bin)中的对象执行DDL/DML语句。
〖方法(Action) 〗
如果真的想彻底删除这个表,可以使用下面的命令清空回收站。
SQL〉PURGE RECYCLEBIN;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13804621/viewspace-351812/ ,如需转载,请注明出处,否则将追究法律责任。