Oracle在执行"drop table tableName"进行表删除时,会在oracle的回收站中自动生成类似"BIN$ZhqhAYiZQzq3FIZvZM4s5w==$0"这样的表名。
可用"select table_name from user_tables"指令查询如下:
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
BIN$ZhqhAYiZQzq3FIZvZM4s5w==$0
BIN$bwtVMZXxQDGty2rpnvw65g==$0
这些表名用“drop table tableName”指令无法删除,系统会提示如下错误:
SQL> drop table BIN$ZhqhAYiZQzq3FIZvZM4s5w==$0
ERROR at line 1:
ORA-00933: SQL command not properly ended
使用查询语句也无法查询到相关信息:
SQL> select * from BIN$ZhqhAYiZQzq3FIZvZM4s5w==$0;
ERROR at line 1:
ORA-00933: SQL command not properly ended
那么,该如何删除这些表呢?这些表又是如何生成的呢?
其实:
drop table tableName;将tableName表放到Oracle的回收站里;
flashback table "BIN$ZhqhAYiZQzq3FIZvZM4s5w==$0" to before drop; 将表从回收站中还原;
drop table books purge;绕过回收站,彻底删除;
建议先
purge recyclebin; 清除当前用户的回收站,不会影响其他用户的回收站
或者
purge table tableName;清除回收站内指定的表(tableName为真实表名而不是回收站里生成的表名)
例子:(测试例子)
SQL> create table test(id number);
SQL> drop table test;
......