从Oracle 10g数据库中删除表

3
我使用 drop 命令从 Oracle 10g 数据库中删除了一些表。
当我使用 select * from cat; 列出表时,我得到了以下结果:

Tables list

这些表被删除了吗?为什么会有这些 BIN$... 的东西?如何彻底删除它们或表?
谢谢!

4
@DavidAldridge给出了正确答案。 除此之外,您确实应该避免使用旧的、已弃用的数据字典视图,比如“tab”或“cat”。它们存在于向后兼容性中,随着新功能的添加,它们不再得到增强。所以当Oracle引入回收站或新的对象类型时,它们往往表现不佳。“all_tables”或“all_objects”将是更合乎逻辑的数据字典表格进行查询。 - Justin Cave
4个回答

4

2

BIN$ 为前缀的表是放置在回收站中以便恢复的表。您可以通过清空它来完全删除它们。可以根据每个表具体进行操作:

PURGE TABLE BIN$ABCDEFG;

或者一次性清空整个回收站:

PURGE RECYCLEBIN;

1
一旦您删除表格,它们会进入回收站进行临时存储,以防您需要将其恢复(例如通过闪回)。随着时间的推移,它们会消失,如果您想彻底删除它们,则可以这样做。

1

文档

当您删除表时,数据库不会立即删除与该表相关联的空间。数据库重命名表并将其及任何关联对象放置在回收站中,以便在以后的时间内可以恢复该表(如果该表被错误删除)。这个功能称为Flashback Drop,可以使用FLASHBACK TABLE语句来恢复表。在讨论如何使用FLASHBACK TABLE语句进行此操作之前,了解回收站的工作方式以及如何管理其内容非常重要。

要永久删除,请使用PURGE

如果您想在一步中删除表并释放相关空间,请指定PURGE。如果指定了PURGE,则数据库不会将表及其相关对象放入回收站中。
PURGE TABLE BIN$jsleilx392mk2=293$0;

用户可以使用以下语句清空自己对象的回收站并释放空间:
PURGE RECYCLEBIN;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接