Oracle Job相关操作
1. 新建job
DECLARE job_num NUMBER; BEGIN dbms_job.submit(job_num,'SP_UPDATE_DEPARTMENT;',SYSDATE,'sysdate+30/1440'); COMMIT; END; 其中最后一个参数interval,以当前时间为准,进行设置即可,常见设置如下: 1) 每分钟执行 2. 停止job BEGIN dbms_job.broken(24,TRUE); // 24为job ID COMMIT; END;3. 启动job BEGIN dbms_job.run(24); // 24为job ID END;4. 删除job BEGIN dbms_job.remove(24); // 24为job ID COMMIT; END;5. 查看job SELECT * FROM user_jobs; --System/Sys账号使用下面的SQL查询是否JOB还在Running,普通账号需要被赋予权限 --GRANT select on sys.dba_jobs_running TO user SELECT * FROM sys.dba_jobs_running;6. 修改job的执行内容、第一次执行时间、执行周期等 BEGIN dbms_job.change(24,'sysdate+20/1440'); COMMIT; END; 7. 修改job下一次执行时间 BEGIN dbms_job.next_date(24,to_date('2012-06-07 23:10:00','yyyy-mm-dd hh24:mi:ss')); COMMIT; END;8. 停止正在执行的job 1) 查找到正在运行的JOB的spid(使用system账号): select a.spid from v$process a,v$session b where a.addr=b.paddr and b.sid in (select sid from dba_jobs_running); 2) Broken JOB SQL> EXEC DBMS_JOB.BROKEN(job#,TRUE); 注意:当执行完该命令你选择的这个JOB还是在运行着的。 3. Kill 对应的Oracle Session 应为BROKEN后该JOB还在运行,如果要求该JOB立刻停止,就需要找到该job的对应SESSION(SID,SERIAL#),然后执行以下命令: SQL>EXEC DBMS_JOB.BROKEN(job#,FALSE);
4) 修改完成后,将job的BROKEN状态停止。 SQL>EXEC DBMS_JOB.BROKEN(job#,FALSE): 本文参考: http://blog.csdn.net/waferleo/article/details/3403598 http://www.cnblogs.com/lumnm/archive/2012/08/31/2666155.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |