ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle10g 的Recyclebin简介

Oracle10g 的Recyclebin简介

原创 Linux操作系统 作者:xz43 时间:2011-01-19 16:58:56 0 删除 编辑
    从Oracle10g开始,Oracle引入了flashback drop的新特性,这个新特性,允许你从当前数据库中恢复一个被drop了的对象。在执行drop操作时,现在Oracle不是真正删除它,而是将该对象自动将放入回收站。对于一个对象的删除,其实仅仅就是简单的重令名操作。
    所谓的回收站,是一个虚拟的容器,用于存放所有被删除的对象。在回收站中,被删除的对象将占用创建时的同样的空间,你甚至还可以对已经删除的表查询,也可以利用flashback功能来恢复它,这个就是flashback drop功能。
    这个功能虽然可以极大的简化误drop导致的恢复操作,但是长时间的积累可能会导致大量的空间占用(虽然Oracle具有自己的清理机制),很多时候我们需要手工介入去清理回收站。本文主要介绍清理回收站的几种方法.
1.大量累计的空间占用
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> col owner for a12
SQL> select owner,object_name,CREATETIME,DROPTIME from dba_recyclebin;
OWNER                          OBJECT_NAME                    CREATETIME          DROPTIME
------------------------------ ------------------------------ ------------------- -------------------
TSS                            BIN$mHengGfGHfvgQKjAMwBm4g==$0 2010-12-17:17:59:07 2010-12-28:19:21:30
TSS                            BIN$mHengGfFHfvgQKjAMwBm4g==$0 2010-12-17:17:59:07 2010-12-28:19:21:30
TSS                            BIN$mHengGfEHfvgQKjAMwBm4g==$0 2010-12-17:17:59:07 2010-12-28:19:21:30
TSS                            BIN$mHengGfHHfvgQKjAMwBm4g==$0 2010-12-17:17:59:07 2010-12-28:19:21:30
......
TSS                            BIN$miz+VtWDp2ngQKjAMwBRjg==$0 2011-01-01:00:01:13 2011-01-19:15:44:22
TSS                            BIN$miz+VtWCp2ngQKjAMwBRjg==$0 2011-01-01:00:01:13 2011-01-19:15:44:22
TSS                            BIN$miz+VtWBp2ngQKjAMwBRjg==$0 2011-01-01:00:01:13 2011-01-19:15:44:22
1838 rows selected
 
SQL> 
2.不同用户在回收站的对象
SQL> select owner,count(*) from dba_recyclebin group by owner;
OWNER                            COUNT(*)
------------------------------ ----------
TSS                                  1799
XB                                     39
 
3.我们可以指定删除某些特定对象
SQL> purge table TSS.T_CODE_INFO;
Table purged.

4.指定清除某个表空间的所有回收站对象
SQL> purge tablespace TSS;
Tablespace purged.

SQL> select owner,count(*) from dba_recyclebin group by owner;
OWNER                            COUNT(*)
------------------------------ ----------
XB                                     39

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 x.ksppinm name,
       y.ksppstvl value,
       y.ksppstdf isdefault,
       decode(bitand(y.ksppstvf, 7),
              1,
              'MODIFIED',
              4,
              'SYSTEM_MOD',
              'FALSE') ismod,
       decode(bitand(y.ksppstvf, 2), 2, 'TRUE', 'FALSE') isadj
  from sys.x$ksppi x, sys.x$ksppcv y
 where x.inst_id = userenv('Instance')
   and y.inst_id = userenv('Instance')
   and x.indx = y.indx
   and x.ksppinm like '%&par%'
 order by translate(x.ksppinm, ' _', ' ');  2    3    4    5    6    7    8    9   10   11   12   13   14   15   16  
输入 par 的值:  recyclebin
原值   15:    and x.ksppinm like '%&par%'
新值   15:    and x.ksppinm like '%recyclebin%'
NAME                           VALUE                                    ISDEFAULT ISMOD      ISADJ
------------------------------ ---------------------------------------- --------- ---------- -----
recyclebin                     on                                       TRUE      FALSE      FALSE
1 row selected.

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

$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 1月 19 17:16:17 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining 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;
Session altered.
SQL> alter system set recyclebin=off;
System altered.
SQL> alter system set recyclebin=on;
System altered.

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

请登录后发表评论 登录
全部评论
鱼儿的学习空间

注册时间:2010-11-16

  • 博文量
    422
  • 访问量
    1755526