由于以前项目都是用的oracle9i,一直没有机会接触oracle 10G.加入安徽项目组后有机会使用oracle10G.
在最近一段时间的使用过程中,发现用select * from tab;查询的时候经常会查到一些奇怪的表名.如:BIN$QRApl31xSnmjeYuGewxAhQ==$0.以前一直没有在意,今天早上突然起了好奇心,这是怎么回事呢?上网一查,原来这是oracle 10G的新特性--回闪技术.
原来oracle9i版本中,也会回闪,但功能有限.在10G中,oracle引入了类似于操作系统回收站的概念.这是一个逻辑容器,当使用drop table tablename删除一个表后,表就被放置在这个容器中.但是,表对像并没有从表空间中删除,仍然占居着原来表空间.只是在回收站里列出来被删除的逻辑结构.
下面做一个测试:
在我的数据库中一个有表:AA
我用drop table aa删掉它.这时候再用select * from tab来查看,发现原来的AA没有了.但是多出来一个表名为BIN$QRApl31xSnmjeYuGewxAhQ==$0的对像.
使用show show recyclebin来查看:
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
AA BIN$QRApl31xSnmjeYuGewxAhQ==$0 TABLE 2007-12-20:14:45:21
若想恢复删除的表,则可以用下面的命令:
SQL> flashback table aa to before drop;
闪回完成。
这时候再用select * from tab来查看.表AA又回来了.
***********************************************************************************
删掉的表还能闪回来,那如果想彻底删除不用回闪,那应该如何做呢?很简单只要用下面命令就可以了:
drop table aa purge;
那如果想清空回收站呢?命令如下:
purge recyclebin;
即然表进入回收站后并不释放它占用的表空间,仅仅在表回收站中增加删除了逻辑.那会不会出现表空间让回收站中的表给占满了的情况呢?答案是不会的,如果表空间被占满后,oracle会根据先进先出的原则,将最先进入回收站的表占据的表空间释放掉.所以在使用过程中即使不清空回收站也感觉不到任何不便.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/226801/viewspace-972/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/226801/viewspace-972/