ITPub博客

oracle 10G 的回闪

原创 Linux操作系统 作者:zhaoqh 时间:2007-12-20 14:46:05 0 删除 编辑

由于以前项目都是用的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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-12

  • 博文量
    27
  • 访问量
    59794