How to maintain Oracle10g Recyclebin

聽海★藍心夢發表於2009-06-03

從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.

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/751371/viewspace-605024/,如需轉載,請註明出處,否則將追究法律責任。

相關文章