10g 新特性 Recyclebin 空间的自动清理(zt)

   测试OS:windows2003
    版  本:

    SQL> select version from v$instance;

    VERSION
    -----------------
    10.2.0.1.0

     Oracle 10g中引入了Recyclebin的概念,删除的表或其他对象会像Windows中删除文件一样放入回收站(Recyclebin)中。你可以再从该回收站中flashback 回被drop 的表.  可以从recyclebin ,user_recyclebin ,dba_recyclebin 中获得他们的相关信息。
   
    一般情况下,我们使用 purge 命令来清理一些不再需要的表。
         SQL> purge recyclebin;  --清理当前用户下所有的回收站对象
         SQL> purge table "BIN$VPoTvxPtQZuDABiSoxR8Mg==$0" ;  --清理指定的表
    前几天看到一篇文章上有一段说: "回收站中的对象其实也是一般的对象,只是它的信息要在recyclebin ,user_recyclebin ,dba_recyclebin 中去检索,它的生命周期也是一般对象一样的,oracle 不会自己去清理掉所谓ide回收站;"
    这是不对的。Recyclebin中的表是不安全的!
    放入Recyclebin中的表并不是永久存在的,当表空间被回收站数据完全占满,以至于必须扩展数据文件来容纳更多数据时,对象以先进先出的方式从回收站中自动清除。在删除表之前,相关对象(如索引)被删除。
    同样,空间压力可能由特定表空间定义的用户限额而引起。表空间可能有足够的空余空间,但用户可能将其在该表空间中所分配的部分用完了。在这种情况下,Oracle 自动清除该表空间中属于该用户的对象。

    我们来做一个实验:

  一、创建一个表空间和一个用户。
      SQL> create tablespace testts datafile 'D:ORACLEPRODUCT10.2.0ORADATAMINGTESTTS.DBF' size 1M;

      表空间已创建。

      SQL> create user test identified by test default tablespace testts temporary tablespace temp;

      用户已创建。

      SQL> grant connect  to test;

      授权成功。

      SQL> grant resource to test;

      授权成功。

      SQL> grant dba to test;

      授权成功。

  二、在表空间中创建表:

      SQL> create table sysobj as select * from dba_tables;

      表已创建。

      SQL> select bytes from dba_segments where segment_name='SYSOBJ';

          BYTES
       ----------
         458752

      SQL> create table sysobj2 as select * from dba_tables;

      表已创建。

      SQL> create table sysobj3 as select * from dba_tables;
      create table sysobj3 as select * from dba_tables
                                      *
      第 1 行出现错误:
      ORA-01652: 无法通过 8 (在表空间 TESTTS 中) 扩展 temp 段

  三、因为这里空间只有1M,这时空间不够了,我们先删除一个表。

      SQL> drop table sysobj2;

      表已删除。

      SQL> select * from recyclebin;

      OBJECT_NAME                    ORIGINAL_NAME                    OPERATION
------------------------------ -------------------------------- ---------
TYPE                      TS_NAME                        CREATETIME
------------------------- ------------------------------ -------------------
DROPTIME               DROPSCN PARTITION_NAME                   CAN CAN
------------------- ---------- -------------------------------- --- ---
   RELATED BASE_OBJECT PURGE_OBJECT      SPACE
---------- ----------- ------------ ----------
BIN$PJ6U2b0JRVWgmdmQ7+5vXg==$0 SYSOBJ2                          DROP
TABLE                     TESTTS                         2008-07-13:23:43:50
2008-07-13:23:44:46     753663                                  YES YES
     52838       52838        52838         56


  四、再来创建表:

    SQL> create table sysobj3 as select * from dba_tables;

    表已创建。

    SQL> select * from tab;

     TNAME                          TABTYPE  CLUSTERID
     ------------------------------ ------- ----------
     SYSOBJ                         TABLE
     SYSOBJ3                        TABLE

五、这时我们可以看到,recyclebin中的表不见了,空间回收了!

    SQL> select * from recyclebin;

    未选定行

六、删除测试用户和表空间

    (略)

 

 

http://www.itpub.net/viewthread.php?tid=1021030&extra=page%3D1&frombbs=1  

 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-400048/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-400048/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值