问:怎么回收drop掉一个表的空间

本文详细介绍了Oracle数据库中回收站的功能及如何有效回收drop操作后表所占用的空间。通过实际案例演示了不同方式清除回收站中的表,包括purge命令的使用、针对特定表空间或用户的清理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

问:

oracle drop掉一个表它所占用的数据块是不会被回收的,那用RMAN备份的时候不是会白白让费资源来备份这些逻辑上已经删除的数据吗,有没有什么办法能回收drop掉表所占用的空间呢

 

Rhys 答:

1)在数据库版本10.2.0.3之后,即使是使用的数据块,但是为空块,那么rman也不会进行备份。
2)对于回收站的解释:
对于11g 和10g oracle默认是开启回收站的功能的:(9i没环境不确定)
SYS@orcl#show parameter recyclebin

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
recyclebin                           string                 on
SYS@orcl#
我们可以再nomount或是open状态改变是否需要打开
alter system set recyclebin=off scope=spfile;
当我们使用drop删除一个表的时候,并不是把这个表真正删除,而是把它放入了回收站,回收站对表的保留时间需要依据
该用户的默认表空间大小进行动态维持。
下面我做一个使用purge的实验,希望对你有帮助:
创建用户:
SYS@orcl#create user rhys identified by root default tablespace test quota 2M on test;

用户已创建。

SYS@orcl#create user lily identified by root default tablespace test quota 2M on test;

用户已创建。

SYS@orcl#grant create session to rhys;

授权成功。

SYS@orcl#grant resource to rhys;

授权成功。

SYS@orcl#grant create session,resource to lily;

授权成功。

SYS@orcl#
####创建表
RHYS@orcl#create table t as select * from scott.emp;         

表已创建。

RHYS@orcl#select count(*) from t;

  COUNT(*)
----------
        16

RHYS@orcl#commit;

提交完成。

RHYS@orcl#
RHYS@orcl#show recycle
RHYS@orcl#drop table t;

表已删除。

RHYS@orcl#show recycle
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
T                BIN$37gMKgN4rWzgQKjABIlC2A==$0 TABLE        2013-06-22:12:59:42
RHYS@orcl#create table t1 as select * from scott.emp;

表已创建。

RHYS@orcl#drop table t1;

表已删除。

RHYS@orcl#show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
T                BIN$37gMKgN4rWzgQKjABIlC2A==$0 TABLE        2013-06-22:12:59:42
T1               BIN$37gMKgN5rWzgQKjABIlC2A==$0 TABLE        2013-06-22:13:00:12
RHYS@orcl#select * from "BIN$37gMKgN4rWzgQKjABIlC2A==$0";

     EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO SEX
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------- --------------------
      7369 SMITH                hhhhh                    7902 17-12月-80           3020                    20 WOMEN
      7499 ALLEN                SALESMAN                 7698 20-2月 -81           4820        300         30 WOMEN
      7521 WARD                 SALESMAN                 7698 22-2月 -81           4470        500         30 WOMEN
      7566 JONES                MANAGER                  7839 02-4月 -81           4195                    20 WOMEN
      7654 MARTIN               SALESMAN                 7698 28-9月 -81           4470       1400         30 WOMEN
      7698 BLAKE                MANAGER                  7839 01-5月 -81           4070                    30 WOMEN
      7782 CLARK                hello                    7839 09-6月 -81           3670                    10 WOMEN
      7788 SCOTT                h                        7566 19-4月 -87            422                    20 WOMEN
      7839 KING                 PRESIDENT                     17-11月-81           5220                    10 WOMEN
      7844 TURNER               hello                    7698 08-9月 -81           4720          0         30 WOMEN
      7876 ADAMS                hello                    7788 23-5月 -87           3320                    20 WOMEN

     EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO SEX
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------- --------------------
      7000 MILLER               hello                    2000 23-1月 -82           3220                    10 WOMEN
      2000 rhys                 DBA                      2000 01-5月 -13           3001        200         30 MEN
      1000 xiaohai                                                                20000                       MEN
      2003 xiao                                                                    2002                    10 MEN
      1113 BLAKE                                                                   2000                    50 MEN

已选择16行。

RHYS@orcl#
####################删除用户下的某个表释放空间######
RHYS@orcl#show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
T                BIN$37gMKgN4rWzgQKjABIlC2A==$0 TABLE        2013-06-22:12:59:42
T1               BIN$37gMKgN5rWzgQKjABIlC2A==$0 TABLE        2013-06-22:13:00:12
RHYS@orcl#purge table t; 

表已清除。

RHYS@orcl#show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
T1               BIN$37gMKgN5rWzgQKjABIlC2A==$0 TABLE        2013-06-22:13:00:12
RHYS@orcl#
##################删除用户下的所有表释放空间##########
RHYS@orcl#show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
T                BIN$37gMKgN6rWzgQKjABIlC2A==$0 TABLE        2013-06-22:13:03:38
T1               BIN$37gMKgN5rWzgQKjABIlC2A==$0 TABLE        2013-06-22:13:00:12
RHYS@orcl#purge tablespace test user rhys;

表空间已清除。

RHYS@orcl#show recyclebin
RHYS@orcl#
#################在drop表的时候指定purge彻底删除表并回收空间#######
RHYS@orcl#drop table rhys_t purge;

表已删除。

RHYS@orcl#show recyclebin
RHYS@orcl#
#################删除表空间中所有用户的表释放空间########
RHYS@orcl#drop table rhys_t;

表已删除。

RHYS@orcl#drop table rhys_t1;

表已删除。

RHYS@orcl#show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
RHYS_T           BIN$37gMKgN8rWzgQKjABIlC2A==$0 TABLE        2013-06-22:13:07:46
RHYS_T1          BIN$37gMKgN9rWzgQKjABIlC2A==$0 TABLE        2013-06-22:13:07:51
RHYS@orcl#
LILY@orcl#show recycle
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
LILY_T           BIN$37gxey9KrYjgQKjABIlDLA==$0 TABLE        2013-06-22:13:10:09
LILY_T1          BIN$37gxey9LrYjgQKjABIlDLA==$0 TABLE        2013-06-22:13:10:13
LILY@orcl#
LILY@orcl#conn sys/root as sysdba;
已连接。
SYS@orcl#show recycle
SYS@orcl#purge tablespace test;

表空间已清除。

SYS@orcl#conn lily/root
已连接。
LILY@orcl#show recycle
LILY@orcl#conn rhys/root
已连接。
RHYS@orcl#show recycle
RHYS@orcl#
###################删除当前用户下的recyclebin######
RHYS@orcl#conn lily/root
已连接。
LILY@orcl#create table lily_t as select * from scott.emp ;

表已创建。

LILY@orcl#create table lily_t1 as select * from scott.emp;

表已创建。

LILY@orcl#drop table lily_t;

表已删除。

LILY@orcl#drop table lily_t1;

表已删除。

LILY@orcl#show recycle
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
LILY_T           BIN$37hOKoIydnrgQKjABIlDcw==$0 TABLE        2013-06-22:13:18:10
LILY_T1          BIN$37hOKoIzdnrgQKjABIlDcw==$0 TABLE        2013-06-22:13:18:16
LILY@orcl#purge recyclebin
  2  ;

回收站已清空。

LILY@orcl#show recycle
LILY@orcl#
################################删除所有用户下的recycle,需要使用dba权限#####
LILY@orcl#show recycle
LILY@orcl#create table lily_t as select * from scott.emp ;

表已创建。

LILY@orcl#create table lily_t1 as select * from scott.emp;

表已创建。

LILY@orcl#drop table lily_t;

表已删除。

LILY@orcl#drop table lily_t1;

表已删除。

LILY@orcl#show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
LILY_T           BIN$37hOKoI0dnrgQKjABIlDcw==$0 TABLE        2013-06-22:13:21:45
LILY_T1          BIN$37hOKoI1dnrgQKjABIlDcw==$0 TABLE        2013-06-22:13:21:50
SCOTT@orcl#select default_tablespace from user_users;

DEFAULT_TABLESPACE
------------------------------------------------------------
USERS

SCOTT@orcl#conn lily/root
已连接。
LILY@orcl#select default_tablespace from user_users;

DEFAULT_TABLESPACE
------------------------------------------------------------
TEST

LILY@orcl#conn scott/root

SCOTT@orcl#show recycle
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
SCOTT_T          BIN$37hikMvxSS3gQKjABIlDig==$0 TABLE        2013-06-22:13:23:52
SCOTT_T1         BIN$37hikMvySS3gQKjABIlDig==$0 TABLE        2013-06-22:13:23:57
LILY@orcl#conn sys/root as sysdba
已连接。
SYS@orcl#purge dba_recyclebin;

DBA 回收站已清空。

SYS@orcl#conn lily/root
已连接。
LILY@orcl#show recyclebin;
LILY@orcl#conn scott/root;
已连接。
SCOTT@orcl#show recyclebin
SCOTT@orcl#
########################删除某个表空间下的用户的所有recyclebin回收空间##########
RHYS@orcl#show recycle
RHYS@orcl#create table rhys_t as select * from scott.emp;

表已创建。

RHYS@orcl#create table rhys_t1 as select * from scott.emp;

表已创建。

RHYS@orcl#drop table rhys_t;

表已删除。

RHYS@orcl#drop table rhys_t1;

表已删除。

RHYS@orcl#show recycle
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
RHYS_T           BIN$37h1A4fBz5HgQKjABIlDoA==$0 TABLE        2013-06-22:13:29:02
RHYS_T1          BIN$37h1A4fCz5HgQKjABIlDoA==$0 TABLE        2013-06-22:13:29:06
RHYS@orcl#conn lily/root
SYS@orcl#purge tablespace test user rhys;

表空间已清除。

SYS@orcl#conn rhys/root
已连接。
RHYS@orcl#show recyclebin
RHYS@orcl#
RHYS@orcl#conn lily/root
已连接。
LILY@orcl#show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
LILY_T           BIN$37h5bvHPAg7gQKjABIlDpA==$0 TABLE        2013-06-22:13:30:16
LILY_T1          BIN$37h5bvHQAg7gQKjABIlDpA==$0 TABLE        2013-06-22:13:30:19

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值