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)
浙公网安备 33010602011771号