oracle job 定时,启动,停止,察看状态。运行脚本
job里面的 last_date 和 next_date ,以及interval之间是什么关系,last_date到底是记的 job 的开始执行时间,还是执行结束的时间。next_date到底是 job 的开始时间还是结束时间加上 interval 得出的呢? last_date=开始时间 1 PL/SQL 过程被成功完成 SQL> select * from user_jobs; JOB LOG_USER PRIV_USER SCHEMA_USER LAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN INTERVAL FAILURES WHAT NLS_ENV MISC_ENV INSTANCE SQL> exec dbms_job.run(21); JOB LOG_USER PRIV_USER SCHEMA_USER LAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN INTERVAL FAILURES WHAT NLS_ENV MISC_ENV INSTANCE 试写一计划任务: declare v_job number :=1; begin dbms_job.submit(v_job,'sp_fact_charge_code;',sysdate,'sysdate+1/1440'); commit; end; / 解释一下上面的程序 程序主体有四个参数,分别意为:v_job是计划任务号,'sp_fact_charge_code'是计划任务名,如果是多个计划任务,就都用分号隔开,第三个sysdate意为立即执行此任务,第四个参数是间隔时间的设置,此处为每分钟执行一次,1/1440=1/24/60。 查看任务:select * from user_jobs;select * from all_jobs; 查看正在运行的任务(不推荐使用,速度慢):select * from dba_jobs_running; 另外值得一提的是,在安装oracle配置的时候,有这么一个参数: job_queue_processes=4 (默认4) 这个参数是定义当前最多可同时运行几个job,它的最大值能设置为36。 除了submit参数外,其余的几个参数有: dbms_job.run(v_job); //运行job dbms_job.broken(v_job,true,next_date); //停止一个job,里面参数true也可是false,next_date(某一时刻停止)也可是sysdate(立刻停止)。 dbms_job.remove(v_job); //删除某个job dbms_job.what(v_job,'sp_fact_charge_code;'); //修改某个job名 dbms_job.next_date(v_job,sysdate); 修改下一次运行时间 例题,设定每天2:10:10运行 trunc(sysdate)+2/24+10/24/60+10/24/60/60 //运行时间 trunc(sysdate)+1+2/24+10/24/60+10/24/60/60 //间隔运行时间 例题,设定每月2号的2:10:10运行 trunc(sysdate,'mm')+1+2/24+10/24/60+10/24/60/60 //运行时间 trunc(add_mouths(sysdate,1),'mm')+1+2/24+10/24/60+10/24/60/60 //间隔运行时间 例题,设定每个季度…… trunce(sysdate,'Q')+1+2/24+10/24/60+10/24/60/60 //运行时间 trunce(add_mouths(sysdate,3),'Q'))+1+2/24+10/24/60+10/24/60/60 //间隔运行时间 另外年为'Y; 例题,设定每周一…… next_day(sysdate'星期一') …… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |