在大型数据库中,回收站很大,垃圾很多,表空间查询起来特别慢。为了防止意外操作,不可能每次drop表的时候加上perge,这时候垃圾越来越多,查表空间要等很久。这时,定制一个表空间保留策略就显得非常有必要。下面将我的脚本共享一下,加入job中便可自动清理。 create or replace procedure lhj_delete_recyclebin ( preserve_date in number ) is /* 存储过程名:lhj_delete_recyclebin 编写人:XXX 功能:清理回收站(默认保留7天) purge table xx会把表对应的索引purge掉 用法: begin lhj_delete_recyclebin(6); end; */ v_sql varchar2 ( 1000 ); cursor c ( v_preserve_date number ) is select owner , original_name , droptime , type from dba_recyclebin where /*owner='GGS' and */ type = 'TABLE' and to_date ( droptime , 'yyyy-mm-dd hh24:mi:ss' )< trunc ( sysdate )- v_preserve_date order by 3 ; --保留一周的表 可修改时间 v_preserve_date number := preserve_date ; begin if v_preserve_date is null then v_preserve_date := 7 ; end if ; for x in c ( v_preserve_date ) loop begin v_sql := 'purge table ' || x.owner || '.' || x.original_name ; --dbms_output.put_line(v_sql); execute immediate v_sql ; exception when others then rollback ; end ; end loop ; end ;
原文地址:http://blog.csdn.net/gdmzlhj1/article/details/45482183