最近使用oracle10删除表以后,发现在all_objects里还有类似于BIN$BO3lzvZ8SGmyIBuQGCUB4Q==$0的表名,经过查资料才发现,drop table不会真的删除数据文件中的数据,只是清除了数据字典中的信息。在10g中drop table后都可以看到一条名字成了乱码的记录,虽然这条记录是乱码,还是可以通过purge table 原来的表名来清除回收站信息。
可以通过下面的代码示例彻底删除,比如:
SQL> select object_name from all_objects where owner='TEST'; OBJECT_NAME ------------------------------ BIN$3WXEfpNsTFimasLwA6DuOQ==$0 SQL> purge table test.t; Table purged. SQL> select object_name from all_objects where owner='TEST'; no rows selected
也可以闪回,恢复删掉的数据表
SQL> show recyclebin SQL> show recyclebin; SQL> drop table test_objects; 表已删除。 SQL> show recyclebin; ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ ------------------- TEST_OBJECTS BIN$ewhgTFxaSyuts++4swyE3Q==$0 TABLE 2008-03-03:15:19:42 SQL> flashback table "BIN$ewhgTFxaSyuts++4swyE3Q==$0" to before drop rename to t est_objects; 闪回完成。 SQL> show recyclebin