首页 > 解决方案 > 如何从 oracle 数据库中删除名为“BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0”的奇怪表?

问题描述

我是 Oracle 新手,为了练习,我在 Oracle 11g 中创建了一些表(客户、司机、付款、预订、位置、区域、工作、job_history),根据select * from cat声明,我发现了一个奇怪的表,其中包含其他名为“BIN$”的创建表c+eOnMB3RbKSEfg/rsxtAQ==$0"。不知道为什么要创建这个表。

我试图通过

drop table BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0;

但它给出了错误:

删除表 BIN$c+ * eOnMB3RbKSEfg/rsxtAQ==$0

第 1 行出现错误:ORA-00933:SQL 命令未正确结束

我应该怎么做才能删除它?

标签: oracle

解决方案


你看到的是一个已删除的表RECYCLEBIN

您可以使用此查询获得表的原始名称

SELECT original_name FROM RECYCLEBIN where OBJECT_NAME = 'BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0';

请注意(使用您的参数设置)如果您 DROP 一个表,它不会完全删除,而是移动到回收站中。

您可以使用该选项省略此PURGE选项。

删除表 xxx 清除;

要从回收站中删除表,您必须用双引号将名称括起来(因为这不是有效的名称)并使用 PURGE 语句(不是 DROP - 这会触发ORA-38301: can not perform DDL/DML over objects in Recycle Bin)。

PURGE TABLE "BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0"

或者,您可以使用original_name通过上述查询获得的:

PURGE TABLE {your_original_name};

要完全清理回收站,请使用此语句(使用 propper 表用户)

PURGE RECYCLEBIN;

推荐阅读