Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6642769
  • 博文数量: 915
  • 博客积分: 17977
  • 博客等级: 上将
  • 技术积分: 8846
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-26 09:59
个人简介

一个好老好老的老程序员了。

文章分类

全部博文(915)

文章存档

2022年(9)

2021年(13)

2020年(10)

2019年(40)

2018年(88)

2017年(130)

2015年(5)

2014年(12)

2013年(41)

2012年(36)

2011年(272)

2010年(1)

2009年(53)

2008年(65)

2007年(47)

2006年(81)

2005年(12)

分类: Oracle

2007-09-19 16:35:38

How to maintain Oracle10g Recyclebin?

作者: | 【:转载时请务必以超链接形式标明文章和作者信息及】
链接:
站内相关文章|Related Articles





  • 从Oracle10g开始,Oracle引入了,这个新特性,允许你从当前数据库中恢复一个被drop了的对象。在执行drop操作时,现在Oracle不是真正删除它,而是将该对象自动将放入回收站。对于一个对象的删除,其实仅仅就是简单的重令名操作。


    所谓的回收站,是一个虚拟的容器,用于存放所有被删除的对象。在回收站中,被删除的对象将占用创建时的同样的空间,你甚至还可以对已经删除的表查询,也可以利用flashback功能来恢复它, 这个就是flashback drop功能。

    这个功能虽然可以极大的简化误drop导致的恢复操作,但是长时间的积累可能会导致大量的空间占用(虽然Oracle具有自己的清理机制),很多时候我们需要手工介入去清理回收站。本文主要介绍清理回收站的几种方法.

     1.大量累计的空间占用

    Connected to Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 
    Connected as SYS

    SQL> col owner for a12
    SQL> select owner,object_name,CREATETIME,DROPTIME from dba_recyclebin
      2  order by droptime
      3  /
    OWNER        OBJECT_NAME                    CREATETIME          DROPTIME
    ------------ ------------------------------ ------------------- -------------------
    COMMON       BIN$AHsQ+pi+Kb/gRAADumkBdQ==$0 2005-08-29:16:42:19 2005-09-11:15:36:17
    COMMON       BIN$AHsQ+pi9Kb/gRAADumkBdQ==$0 2005-08-29:16:42:19 2005-09-11:15:36:17
    PDA          BIN$AdEb4zqqUcTgRAADumkBdQ==$0 2005-09-05:10:31:01 2005-09-28:15:40:39
    ......
    BJLAIS_RUN   BIN$BtkGRT0dSwfgRAADumkBdQ==$0 2005-11-30:10:54:07 2005-12-01:16:13:17
    BJLAIS_RUN   BIN$BtkGRT0cSwfgRAADumkBdQ==$0 2005-11-30:10:54:07 2005-12-01:16:13:17
    750 rows selected
    SQL> 

    2.不同用户在回收站的对象

    SQL> select owner,count(*) from dba_recyclebin group by owner;   
    OWNER                  COUNT(*)
    -------------------- ----------
    BJLAIS_RUN                   44
    COMMON                        8
    MMSBLOG                     618
    MMSHAWA_RUN                   2
    PDA                           8
    RING_RUN                     70
    6 rows selected.

    3.我们可以指定删除某些特定对象

    SQL> purge table common.T_SERVICE_CODE_INFO;

    Table purged.

    4.指定清除某个表空间的所有回收站对象

    SQL> purge tablespace common;
    Tablespace purged.
    SQL> select owner,count(*) from dba_recyclebin group by owner;   
    OWNER                  COUNT(*)
    -------------------- ----------
    BJLAIS_RUN                   44
    MMSBLOG                     618
    MMSHAWA_RUN                   2
    PDA                           8
    RING_RUN                     70

    5.以SYSDBA身份可以清除所有回收站对象

    SQL> purge dba_recyclebin;

    DBA Recyclebin purged.

    SQL> select owner,count(*) from dba_recyclebin group by owner;  

    no rows selected

    6.禁用recyclebin

     

    如果我们不希望使用Oracle的recyclebin,可以通过参数禁用这个特性。

    在Oracle10gR1中,通过修改一个隐含参数:_recyclebin 为False可以禁用这个特性:

    SQL> set linesize 132
    SQL> column name format a30
    SQL> column value format a25
    SQL> select
      2    x.ksppinm  name,
      y.ksppstvl  value,
      3    y.ksppstdf  isdefault,
      4    5    decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE')  ismod,
      6    decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE')  isadj
      7  from
      8    sys.x$ksppi x,
      9    sys.x$ksppcv y
     10  where
     11    x.inst_id = userenv('Instance') and
     12    y.inst_id = userenv('Instance') and
     13    x.indx = y.indx and
     14    x.ksppinm like '%&par%'
     15  order by
     16    translate(x.ksppinm, ' _', ' ')
     17  /
    Enter value for par: recyclebin
    old  14:   x.ksppinm like '%&par%'
    new  14:   x.ksppinm like '%recyclebin%'
    NAME                           VALUE                     ISDEFAULT ISMOD      ISADJ
    ------------------------------ ------------------------- --------- ---------- -----
    _recyclebin                    TRUE                      TRUE      FALSE      FALSE
    1 row selected.

    在Oracle10gR2中,recyclebin变成了一个常规参数,可以在session/system级动态修改:

    [oracle@danaly ~]$ sqlplus "/ as sysdba"
    SQL*Plus: Release 10.2.0.1.0 - Production on Mon Dec 12 15:34:56 2005
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.

    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
    SQL> show parameter recyclebin 
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    recyclebin                           string      on
    SQL> alter session set recyclebin=off;
    Session altered.
    SQL> alter session set recyclebin=on
      2  /
    Session altered.
    SQL> alter system set recyclebin=off;
    System altered.
    SQL> alter system set recyclebin=on;
    System altered.

     

    阅读(4012) | 评论(1) | 转发(0) |
    给主人留下些什么吧!~~