以前用oracle9i没有遇到的问题,今天碰到了。
oracle9i的drop命令可以删除表同时删除了表空间,是不可以rollback的。今天用10g开发时测试时删除一个表,无意中查看竟然表的条目数没有减少,而是多了一个自己不认的表明。郁闷中。。。。。。。。。。
google一下才发现是10g的drop命令原理发生了改变。10g开始引入了flashback drop的新特性,10g的drop操作不慎真正删除它,而是自动放入回收站Recycle Bin里面了,drop的操作只不过是重命名而已。
知道了原理就可以解决问题了。这个新特性带来了的好处就是不用害怕误删除了,因为可以恢复回来数据,恢复的操作也很简单,原理不多解释了,执行
flashback table 表名 to before drop;
当然flashback这个命令是非常强大的,不仅可以闪回表,database也可以,初步认识,不拓展了。
每件事都是双面的,新特性带来了好处,也有另一个烦恼,就是数据没有真正的物理删除,物理空间势必不断增大,有什么办法解决呢?这个问题其实和系统的回收站是一个道理,清理回收站就可以了。
查看回收站:select * from recyclebin;
可以按需求查看所需要的信息。
删除:purge tablespace 表空间名;(空间名recyclebin里有)
以上操作是在一般用户session下,有个dba_recyclebin可以更多操作。
第一次写笔记,都是皮毛,写给自己看的,还望精通的人别扔板砖。。。。。。