首页 > 代码库 > FW:Oracle之job

FW:Oracle之job

-- 数据字典select * from dba_jobs;select * FROM all_jobs;select * FROM user_jobs;select * FROM dba_jobs_running;

job_queue_process 表示oracle能够并发的job的数量,可以通过语句  
show parameter job_queue_process;
alter system set job_queue_processes=39 scope=spfile;//最大值不能超过1000 ;

创建job

DECLARE  JOB NUMBER;BEGIN  SYS.DBMS_JOB.SUBMIT(JOB, ‘aps_validate;‘, SYSDATE, ‘sysdate+1/1440‘);END;VARIABLE JOB NUMBER;BEGIN  SYS.DBMS_JOB.SUBMIT(JOB       => :JOB,                      WHAT      => ‘aps_validate;‘,                      NEXT_DATE => TO_DATE(‘22-10-2008 10:06:41‘,                                           ‘dd-mm-yyyy hh24:mi:ss‘),                      INTERVAL  => ‘sysdate+1/1440‘); --每天1440分钟,即一分钟运行test过程一次   COMMIT;END;/

运行job

BEGIN  DBMS_JOB.RUN(6);END;

删除job

BEGIN  DBMS_JOB.REMOVE(6);END;

INTERVAL参数值

1:每分钟执行

Interval => TRUNC(sysdate,‘mi‘) + 1/ (24*60)

2:每天定时执行

例如:每天的凌晨1点执行

Interval => TRUNC(sysdate) + 1 +1/(24)

3:每周定时执行

例如:每周一凌晨1点执行(next_day第2个参数可以是数字1-7,分别表示周日到周六)

Interval => TRUNC(next_day(sysdate,2))+1/24

4:每月定时执行

例如:每月1日凌晨1点执行(last_day表示每月最后一天)

Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24

5:每季度定时执行

例如每季度的第一天凌晨1点执行

Interval => TRUNC(ADD_MONTHS(SYSDATE,3),‘Q‘) + 1/24

6:每年定时执行

例如:每年1月1日凌晨1点执行

Interval =>ADD_MONTHS(trunc(sysdate,‘yyyy‘),12)+1/24

7. 每15分钟定时执行
Interval => trunc(sysdate,‘HH‘)+ceils(((trunc(sysdate,‘MI‘)-trunc(sysdate,‘HH‘))*24*60)/15,0)*15/(60*24)

8. 每12个小时定时执行
Interval => trunc(sysdate,‘dd‘)+0.5+ceil((trunc(sysdate,‘hh‘)-trunc(sysdate,‘dd‘))/12)

9. 每3个小时定时执行
Interval => trunc(sysdate,‘dd‘)+ceil((trunc(sysdate,‘hh24‘)-trunc(sysdate,‘dd‘))*24/3)*3/24

10:每半年定时执行

例如:每年7月1日和1月1日凌晨1点

Interval => ADD_MONTHS(trunc(sysdate,‘yyyy‘), ceil(MONTHS_BETWEEN(sysdate,trunc(sysdate,‘yyyy‘))/6)*6)+1/24

FW:Oracle之job