• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
与浪共舞
想大事,做小事:让人产生心灵震撼的往往不是豪言壮语,而是一个个小的细节!
博客园       新随笔    联系   管理     

oracle 释放表空间

1. //创建存储过程

create or replace procedure del_tab as

v_time number;
begin
   select max(aa.utc) into v_time from tablename ; //tablename
换成你的表名
  
   execute immediate 'delete from tablename where tablename.utc<v_time-7*24*60*60*1000'; //
删除7天前数据,如果不大量的查询这个表,不会有太大的影响,可以定期回收空间。
   create table temp as select * from tablename;  //
创建临时表,为了释放空间
   execute immediate 'truncate table tablename';
   insert into tablename select * from temp;
   execute immediate 'drop table tablename';
   commit;
 
end;

 

2. //创建定时job

SQL> variable job_id  number;   //定义任务id


3.//
启动任务(每天执行一次)

SQL> begin
  2  dbms_job.submit(:job_id,' trun_tab;',sysdate,'sysdate+1/24');   //
这是每天执行,如果修改时间间隔可以修改“sysdate+1/144”
  3  end;
  4  /

4. 你可以测试下

SQL> select job,next_date,what from user_jobs; //用这个语句查看任务id,然后运行下面的语句

这个是立刻执行的

SQL> begin
  2  dbms_job.run(2);
  3  end;
  4  /

PL/SQL 过程已成功完成。

 

然后在查看表的内容 如果表的内容为空 ,证明已经删除了

5. //删除定时任务:

dbms_job.run(2)

 

posted @ 2009-08-06 22:51  I Believe  阅读(326)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3