1. 数据定时自动删除功能的实现:
-- 存储过程,删除上个月的历史纪录
CREATE OR REPLACE PROCEDURE delruleloghisdata AS
BEGIN
DELETE FROM rulelogtext WHERE inputdate<=trunc(sysdate-30) ;
COMMIT;
END;
/
-- 定时执行:每天凌晨2点执行
DECLARE rulelog_jobid NUMBER;
BEGIN
DBMS_JOB.SUBMIT(
JOB => rulelog_jobid, /*自动生成JOB_ID*/
WHAT => 'delruleloghisdata;', /*需要执行的过程或SQL语句*/
NEXT_DATE => TRUNC(sysdate) + 1 +2 / (24) , /*初次执行时间*/
INTERVAL => 'TRUNC(sysdate) + 1 +2 / (24)'); /*执行周期*/
DBMS_JOB.run(rulelog_jobid);
COMMIT;
END;
/
●job:输出变量,是此任务在任务队列中的编号;
●what:执行的任务的名称及其输入参数;
●next_date:任务执行的时间;
●interval:任务执行的时间间隔。
其中Interval这个值是决定Job何时,被重新执行的关键;当interval设置为null时,该job执行结束后,就被从队列中删除。假如我们需要该job周期性地执行,则要用‘sysdate+m’表示。如何更好地确定执行时间的间隔需要我们掌握一个函数TRUNC。
自动删除历史数据
本文介绍了一个使用Oracle存储过程实现的数据清理方法,通过创建一个存储过程来自动删除超过一个月的旧数据,并利用DBMS_JOB调度器设定每日凌晨两点执行此过程。
2284

被折叠的 条评论
为什么被折叠?



