初学Oracle,数据库是用EJB3的entity bean得到的数据库表结构,使用SQL Plus连接到数据库时发现了一个奇怪的表,如图:而且无法使用desc命令查看表的详细情况,也无法删除。但是使用SQL Developer连接就没有那个表,求解。

解决方案 »

  1.   

    忘了说了,就是第二个,BIN开头的那个表很怪
      

  2.   

    BIN这个开头的是你用drop删除过的表,还没有彻底删除
    你可以用truncate代替drop就可以彻底删除掉表.
    你不可以用desc就可能是你的表并不是在你当前的用户下
    你可以尝试desc [Schema].tableName这样写
      

  3.   

    更明白的说就好象是
    drop 掉的表先放的回收站里.你还是可以恢复的(就好象windows下的删除文件)
    如果truncate就不进回收站,直接删除了(就好象windows下Shift+DEL删除文件)
      

  4.   

    以BIN开头的表是放到了recyclebin中的表。
    显示回收站中的信息:show recyclebin;
    可以把回收站中的表还原:flashback table table_name to before drop;删除表时,不放回到回收站中:drop table table_name purge;
      

  5.   

    补充一下#2的朋友的回答
    不是truncate
    是purge
      

  6.   

    其实你可以用加上引号的方式查看被DROP到回收站的表,关键表名要加上双引号,类似如下:
    select * from "BIN$6AOTD97hTNWoo5i3XutZ9g==$0";
    还可以象普通表一样查看一它的列,但不能用describle,类似如下:
    select * from user_tab_columns t where t.TABLE_NAME='BIN$0695/ObqQ4a1Qh06I7BmbA==$0';
      

  7.   

    在ORACLE 10G中删除一个表时,该表只是改变了名称,该表及其相关对象并没有从他们原来的表空间中消失,他们仍然占用他们的空间,直到被手动清除或因空间不够而被自动清除。没有必要手动清除回收站被删除的对象。除非表空间不足,ORACLE就会自动的清除回收站中的对象.也可以手动清除回收站中的对象,命令如PURGE TABLE [schema.]table_name;如果要删除一个TABLE且不想放入到回收站,就需要在DROP TABLE语句后使用PURGE选项,此无法进行闪回.