【问题标题】:Dropping all tables sqlplus删除所有表 sqlplus
【发布时间】:2014-05-01 21:33:38
【问题描述】:

每当我执行select * from tab; 时,我都会得到不是我创建的表。 它看起来像:

TNAME       TABTYPE  CLUSTERID
------------------------------ ------- ----------
BIN$GGrKjbVGTVaus4568IEhUQ==$0 TABLE
BIN$H+a0o3uyTTKTOA8WMkNltg==$0 TABLE
BIN$IUNyfOwkS0WSEVjbn04mNw==$0 TABLE
BIN$K/3NJw5zRXyRqPixL3tqDA==$0 TABLE
BIN$KQw9SejEToywXlHp18FMZA==$0 TABLE
BIN$MOEfgWgsS0GkC/CpYW+cxA==$0 TABLE
BIN$QkUYVciPQpWBwqBhxH+Few==$0 TABLE
BIN$QmtbaOYiTHCGEE0PRiLzmg==$0 TABLE
BIN$QxF4/JShTxu8PYIx8g/L7Q==$0 TABLE
BIN$UtEI7RbiQvOYzKqJEibwKQ==$0 TABLE
BIN$VMG0FXp2ROCKbedj3Ge9hg==$0 TABLE

我试过表演

select 'drop table '||table_name||' cascade constraints;' from user_tables; 

在假脱机和执行中,但未选择那些表。它看起来真的很乱,让我很困扰。这些是什么?有什么办法可以摆脱它们吗?还是我必须处理它并使用它?

【问题讨论】:

  • 看起来它们在您的垃圾箱中。对mysql不太熟悉,但如果它是像Oracle这样的东西,这表明这些表已经被删除了……
  • 我更改了标签以删除 mysql 并添加 oracle。 MySQL 没有名为 sqlplus 的工具,也没有名为 tab 的系统表。而且它默认不使用|| 进行字符串连接。
  • @BillKarwin 这更有意义
  • @mrphrozenphoenix 您需要以 sysdba 身份登录并“purge dba_recyclebin”
  • purge recyclebin 会摆脱它们

标签: sql oracle sqlplus


【解决方案1】:

它们是什么?

A看起来像是被删除并保留在 RECYCLEBIN 中的表。


有什么办法可以摆脱它们吗?

A 您可以使用例如PURGE TABLE BIN$GGrKjbVGTVaus4568IEhUQ==$0 ; 删除它们。

这将单独完成。请注意,索引和 LOB(以及其他离线存储)也可能在回收站中有条目。您可以使用其他语句清除回收站中的所有条目。


Q还是我只需要处理它并使用它?

A这取决于你。

有一些语句可以清除当前用户的回收站,或者如果您有权限,则可以清除整个数据库。您也可以禁用回收站,或者(我认为)DROP TABLE 上有一个选项可以删除表而不将其保留在回收站中(因此将来不会创建这些表。)

Oracle 文档的内容无需我重复。

参考:http://docs.oracle.com/cd/B28359_01/server.111/b28310/tables011.htm#ADMIN01511

【讨论】:

    【解决方案2】:

    作为评论发布以提高知名度.. 感谢@Tomás 为我指明了正确的方向。

    我不得不做 purge recyclebin; 而不是purge dba_recyclebin,因为我没有足够的权限(我是通过ssh登录的学生)。

    如果您想关闭回收站,请使用ALTER SESSION SET recyclebin = OFF;

    【讨论】:

      猜你喜欢
      • 2011-03-05
      • 2019-11-20
      • 1970-01-01
      • 2021-10-13
      • 2010-10-06
      • 2011-03-01
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多