一个好老好老的老程序员了。
全部博文(915)
分类: Oracle
2007-09-19 16:40:13
Oracle10g中的回收站 最近由于业务需要,要将数据库转为Oracle,不得以开始学习Oracle相关知识。 今天在使用PL/SQL删表时,发现该表被删除以后,就会自动出现名称类似为:BIN$OdPleidIDRPgQKjAIQAu+w==$0的表。以前一直使用mysql这样的小型数据,对于删表从来没有遇到过如此奇怪的问题。如果在PL/SQL中,直接删除,提示:SQL command not properly ended;如果直接使用SQL命令drop table "BIN$OdPleidIDRPgQKjAIQAu+w==$0"仍然不能正常删除。 进入OEM,在使用的方案的表中,看不到这样的表,但是对象列表中,却能看到它。这次,右键点击"移去",提示:无法删除表。ORA-38301:can not perform DDL/DML over objects in Recycle BIn。 再google一番以后,终于得到解决。原来,在Oracle10g数据库中,引入了一个回收站(Recycle Bin)的数据库对象。而放入回收站的表,是不能通过drop命令删除的,必须通过purge命令。 如果要删除指定名称的表,命令如下: PURGE table "BIN$V3f/oYUITrCEF2cotS5JaA==$0" 如果直接清空所有回收站中的对象,命令如下: PURGE RECYCLEBIN 如果要将回收站中的表恢复,命令如下: FLASHBACK TABLE foo TO BEFORE DROP; |