场景:数据表有时候每日新增数据量特别大,而旧的历史数据无需保存太长时间,此时为了提升查询性能,将数据表中的历史数据删除,只保留当前n天的数据。
– 创建清理数据的存储过程(每天自动删除7天前的记录)
create or replace procedure autoDelData as
begin
delete from t_data where d_time<sysdate-7;
commit;
end;
–手动测试执行存储过程
begin
autoDelData;
end;
–新建job来定期执行存储过程
declare
job number;
begin
sys.dbms_job.submit(job,'autoDelData;',to_date('2020-09-11 21:00:00', 'yyyy-mm-dd hh24:mi:ss'),'sysdate+1');
end;
–查询job是否创建成功
select * from user_jobs;
–手动调用job测试
begin
DBMS_JOB.RUN(1); /*job的id*/
end;
–删除job
begin
DBMS_JOB.REMOVE(1); /*job的id*/
end;
–查询job的执行日志,本次没有查询到,可能是系统没有启用日志。
select * from user_scheduler_job_log
select * from user_scheduler_job_run_details