我是 Oracle 的新手,为了练习,我在 Oracle 11g 和 select * from cat
上创建了一些表(客户、司机、付款、预订、位置、区域、工作、job_history)。声明我发现了一个奇怪的表,其中包含名为“BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0”的其他创建的表。我不知道为什么会创建这个表。
我试图通过删除这张表
drop table BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0;
但它给出了错误:
drop table BIN$c+*eOnMB3RbKSEfg/rsxtAQ==$0
ERROR at line 1: ORA-00933: SQL command not properly ended
我应该怎么做才能删除它?
最佳答案
您看到的是 RECYCLEBIN
中的已删除表
您可以通过此查询获得表的原始名称
SELECT original_name FROM RECYCLEBIN where OBJECT_NAME = 'BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0';
请注意(使用您的参数设置)如果您删除一个表,它不会被完全删除,而是在回收站中移动。
您可以使用
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;
关于oracle - 如何从oracle数据库中删除名为 "BIN$c+eOnMB3RbKSEfg/rsxtAQ==$0"的奇怪表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56635399/