如何从Oracle数据库中删除名为“ BIN $ c + eOnMB3RbKSEfg / rsxtAQ == $ 0”的奇怪表?

Aim*_*mir 3 oracle

我是Oracle的新手,为了实践,我在Oracle 11g中创建了一些表(客户,驱动程序,付款,预订,位置,区域,工作,工作历史),经select * from cat声明,我发现了一个奇怪的表以及其他名为“ BIN $”的表。 c + eOnMB3RbKSEfg / rsxtAQ == $ 0“。我不知道为什么创建此表。

我试图通过删除此表

drop table BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0;
Run Code Online (Sandbox Code Playgroud)

但它给出了错误:

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

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

我该怎么做才能将其删除?

Mar*_*ber 8

您看到的是在 RECYCLEBIN

您可以通过此查询获取表的原始名称

SELECT original_name FROM RECYCLEBIN where OBJECT_NAME = 'BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0';
Run Code Online (Sandbox Code Playgroud)

请注意(使用参数设置),如果您删除表,则不会完全删除该表,而是其移入回收站。

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

删除表xxx清除;

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

PURGE TABLE "BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0"
Run Code Online (Sandbox Code Playgroud)

或者,您可以将original_name获取的与上面的查询一起使用:

PURGE TABLE {your_original_name};
Run Code Online (Sandbox Code Playgroud)

要彻底清理回收站,请使用此语句(与propper表用户一起使用)

PURGE RECYCLEBIN;
Run Code Online (Sandbox Code Playgroud)