oracle recyclebin 清除,11.2.4.3 清空Recycle Bin中对象

11.2.4.3  清空Recycle Bin中对象

我们都知道在Windows中删除的同时如果按Shift键则文件将会被真正删除(不钻牛角尖,我是说Windows将其删除,至于你通过Recovery之类的工具还可再将其从磁盘恢复,不在此例范围之内),那么对于Oracle是否也有一种方式能够让我们执行的删除不再被放入回收站呢?答案当然是肯定,而且Oracle又提供了多种方式(咦,为什么要说又呢)。

1.修改初始化参数禁用或启用Recycle Bin

Recycle Bin是Oracle自10g后新提供的一项特性,是否启用或禁用该特性,由初始化参数RECYCLEBIN控制,默认情况下(或者不明确指定值的情况下),该参数值为ON,即启用状态。

当然Recycle Bin处于启用状态时,如果用户对表执行DROP操作,则被删除的表及其关联的对象就会被罢入Recycle Bin中。对于这种方式删除的表,正如前面几个小节所演示的,可以快速地通过Flashback Drop的方式进行恢复。

不过,如果手动修改了初始化参数RECYCLEBIN的参数值为OFF,即禁用了Recycle Bin功能,表被DROP后也就不会再被放到RecycleBin了,例如:JSSPRE>CREATETABLETMP(ID NUMBER);

Tablecreated.

JSSPRE> SHOW PARAMETER RECYCLEBIN;

NAMETYPE      VALUE

------------------------------------------------------------

recyclebin                              stringon

JSSPRE>ALTERSESSIONSETRECYCLEBIN=OFF;

Session altered.

JSSPRE>DROPTABLETMP;

Tabledropped.

JSSPRE>SELECT*FROMRECYCLEBIN;

norowsselected

这里我们只针对当前SESSION,如果希望针对整个实例,通过ALTER SYSTEM SET RECYCLEBIN=OFF,或者修改PFILE中的RECYCLEBIN参数,将其设置为OFF。这样所有DROP TABLE操作都会直接删表,而不再转移到Recycle Bin,这就相当于禁用了Recycle Bin功能,如果某天你又想启用该功能,只需要将该初始化参数设置为ON即可。

2.删除时指定PURGE参数

当通过DROP命令删除表时,默认情况下这个表所占用的空间并不会被立刻释放,而是通过修改数据字典的方式,将这个表改名放入Recycle Bin中,这样一旦发现删除有误,可以快速地通过Flashback Drop的方式进行恢复。

不过有时候我们确认某个表不会有恢复的需求,肯定希望删除时能立刻释放其所占用的空间,对于这种需求,实现起来相当简单,仍然是通过DROP命令删除,只不过在***附加上PURGE参数即可,例如:JSSPRE> SHOW PARAMETER RECYCLEBIN;

NAMETYPE       VALUE

------------------------------------------------------------

recyclebin                          stringon

JSSPRE>CREATETABLETMP(ID NUMBER);

Tablecreated.

JSSPRE>DROPTABLETMP PURGE;

Tabledropped.

JSSPRE>SELECT*FROMRECYCLEBIN;

norowsselected

这种方式类似于我们在Windows中按下Shift键删除。

3.清除Recycle Bin中的现有对象

对于已存在于Recycle Bin字典中的对象,如果想彻底删除该怎么办呢?Oracle再一次提供了多种方式,以及多种粒度来执行删除。

先建个测试用的环境:JSSPRE> SHOW PARAMETER RECYCLEBIN;

NAMETYPE       VALUE

------------------------------------------------------

recyclebin                          stringon

JSSPRE>CREATETABLETMP (ID NUMBER);

Tablecreated.

JSSPRE>DROPTABLETMP;

Tabledropped.

JSSPRE> SHOW RECYCLEBIN;

ORIGINALNAMERECYCLEBINNAMEOBJECT TYPE

DROPTIME

---------------- ------------------------------ ------------

-------------------

TMP              BIN$KyJoDi5NQ1qq89eFN34k/Q==$0TABLE

2009-06-04:12:57:59

用PURGE指定表,例如:

JSSPRE> PURGETABLETMP;

JSSPRE> PURGETABLE"BIN$KyJoDi5NQ1qq89eFN34k/Q==$0";

用PURGE指定表空间,例如:

JSSWEB> PURGE TABLESPACE SCOTT_TBS;

清空当前的Recycle Bin,例如:

JSSWEB> PURGE RECYCLEBIN;

除上述的三种方式之外,还有一种方式就是删除Recycle Bin中对象所属用户或所在表空间,这样甭管你是否PURGE,Recycle Bin都会被清空,不过这种方式好像狠了点儿,慎用啊。

【责任编辑:董书 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值