我是Oracle的新手,为了实践,我在Oracle 11g中创建了一些表(客户,驱动程序,付款,预订,位置,区域,工作,工作历史),并根据select * from cat
语句发现了一个奇怪的表与其他已创建的名为“ BIN $ c + eOnMB3RbKSEfg / rsxtAQ == $ 0”的表。我不知道为什么要创建此表。
我试图通过
删除此表drop table BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0;
但是它给出了错误:
删除表BIN $ c + * eOnMB3RbKSEfg / rsxtAQ == $ 0
第1行出现错误:ORA-00933:SQL命令未正确结束
我应该怎么删除它?
答案 0 :(得分:8)
您看到的是RECYCLEBIN
通过此查询,您可以获取表的原始名称
SELECT original_name FROM RECYCLEBIN where OBJECT_NAME = 'BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0';
请注意(使用您的参数设置),如果您删除表,该表不会被完全删除,而是会在回收站中被移动。
您可以使用PURGE
选项忽略它。
DROP TABLE XXX PURGE;
要从回收站中删除表格,您必须使用双引号对名称进行引号(因为这不是有效名称),并使用PURGE语句(不是DROP-会触发{{1 }}。
ORA-38301: can not perform DDL/DML over objects in Recycle Bin
或者,您可以使用通过上述查询获得的PURGE TABLE "BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0"
:
original_name
要清理回收站,请完全使用此语句(与propper table用户一起使用)
PURGE TABLE {your_original_name};