-.查看当前任务队列
select * from dba_jobs t where t.what like 'p_wap_stat_rmsx%'
--what 为执行任务名称,可以是存储过程或其它可执行实体
二.执行时间设置
每天午夜12点 'TRUNC(SYSDATE + 1)'
每天早上8点30分 'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'
每星期二中午12点 'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'
每个月第一天的午夜12点 'TRUNC(LAST_DAY(SYSDATE ) + 1)'
每个季度最后一天的晚上11点 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'
每星期六和日早上6点10分 'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6*60+10)/(24*60)'
在Oracle JOB间隔时间参考,其中li_jobno是它的ID,可以通过这个ID停掉这个任务,最后想说的是不要执行多次,你可 以在里面管理起来,发现已经运行了就不SUBMIT
每天运行一次 'SYSDATE + 1'
每小时运行一次 'SYSDATE + 1/24'
每10分钟运行一次 'SYSDATE + 10/(60*24)'
每30秒运行一次 'SYSDATE + 30/(60*24*60)'
每隔一星期运行一次 'SYSDATE + 7'
每年1月1号零时trunc(last_day(to_date(extract(year from sysdate)||'12'||'01','yyyy-mm-dd'))+1)
三.举例说明
oracle job 工具包 dbms_job
存储过程:p_wap_stat_rmsx 没有参数
设置每10分钟执行一次
以下命令必须在命令窗口执行,如下:
1. 提交job
SQL> variable job1 number;
SQL> begin
2 dbms_job.submit(:job1,'p_wap_stat_rmsx;',sysdate,'sysdate+1/144');
3 end;
4 /
dbms_job.submit 参数说明:
job为任务唯一数字标识,what为任务描述,如果为存储过程则为存储过程名称需以“;”分号结束
next_date为下次执行时间,interval为执行间隔,可以是以分,秒,小时
dbms_job.submit(job => :jobno2,
what => 'P_POST_LIST;',
next_date => sysdate+1/480,
interval => 'SYSDATE + 1/480');
2.删除job
dbms_job.remove(job); 参数为job唯一数字标识
3.立刻执行job
dbms_job.run(job); 参数为job唯一数字标识