标签:from sel ora sse substr where HERE 命令 alt
程序设计中可能会碰到想要定时执行某段操作的情况,例如:
每月清空某张表的数据;
每年重新提取一次某张表的数据等。
这种情况可以通过设置数据库的定时任务来实现,步骤如下:
(1)首先检查数据库进程数 为0标识不运行job
show parameter Job_queue_processes //检查进程数语句 (命令窗口执行) 如果value的值是0,那么执行如下命令: alter system set job_queue_processes=10 scope=both //设置进程数
(2)创建存储过程(要定时执行的操作)
CREATE OR REPLACE PROCEDURE PAK_YCSY_UPDATE (nian varchar2) IS BEGIN delete from YCSY_JSGZYF where DBND=nian; insert into YCSY_JSGZYF select JSLB,DBMJ,nian,SEQ from YCSY_JSGZYF where YCSY_JSGZYF.DBND=to_number(nian)-1; commit; exception when others then rollback; END ;
(3)制定定时任务
var job_num number; begin dbms_job.submit(:job_num,‘PAK_YCSY_UPDATE (substr(sysdate,1,4));‘,SYSDATE,‘TRUNC(LAST_DAY(SYSDATE))+1+2/24‘); end; / PAK_YCSY_UPDATE (substr(sysdate,1,4)); :调用存储过程 TRUNC(LAST_DAY(SYSDATE))+1+2/24 :触发间隔时间 ADD_MONTHS(trunc(sysdate,‘yyyy‘),12)+1/24 每年1月1日1点 ADD_MONTHS(trunc(sysdate,‘yyyy‘),6)+1/24 每年7月1日和1月1日凌晨1点 TRUNC(ADD_MONTHS(SYSDATE,3),‘Q‘) + 1/24 每季度的第一天凌晨1点执行 TRUNC(LAST_DAY(SYSDATE))+1+1/24 每月1日凌晨1点执行 TRUNC(next_day(sysdate,‘星期一‘))+1/24 每周一凌晨1点执行 TRUNC(sysdate+ 1) +1/ (24) 每天定时执行 TRUNC(sysdate,‘hh‘) + 1/ (24) 每小时执行 TRUNC(sysdate,‘mi‘) + 1/ (24*60) 每分钟执行
注意:执行完成后提交。
(4)查看定时任务
select*from dba_jobs
(5)删除定时任务
exec dbms_job.remove(24); //括号中为任务编号
标签:from sel ora sse substr where HERE 命令 alt
原文地址:https://www.cnblogs.com/yang-blogs/p/9724685.html