oracle的JOB

网友投稿 249 2022-11-04


oracle的JOB

前文再续,上面说的oracle的JOB,近期有些体会,记录一下:

零、创建JOB

创建JOB 1)创建一个存储过程。逻辑处理都在这个存储过程里面。 2)创建一个JOB运行此存储过程-- 创建tablecreate table tab_time( current_time timestamp-- 创建存储过程create or replace procedure pro_job_printas begin --dbms_output.put_line('系统时间:' || to_char(sysdate, 'dd-mm-yyyy hh24:mi:ss')); insert into tab_time values(sysdate); commit; end;-- 调用过程测试 begin end;-- 创建jobdeclare job1 number;begin dbms_job.submit(job1, 'pro_job_print;', sysdate, 'sysdate+10/86400');--每10秒插入一条记录 commit;end;

注意,创建好的JOB,位于dbms_job下

一、JOB的开启与关闭

--关闭JOBbegin dbms_job.broken(41,true); commit;end;--开启JOBbegin dbms_job.broken(41,false); commit;end;

二、JOB的运行 最常见的问题:

假如某JOB的频率是每5分钟运行一次,但它每次运行30分钟,那么5分钟后,会不会有多个JOB(线程)在一起运行?答:不会。该JOB永远只有一个实例在运行。它每次运行前,会先看看前面有没有在运行,如果没有,则正常运行;有的话,则等待,直到前面那个运行完了之后,紧接着2秒之内启动。

三、JOB的停止

--首先要关闭JOB计划begin dbms_job.broken(JOB编号,true); commit;end;--检查JOB有没有正在运行,停止计划对它没有影响--获得SIDselect * from--获得SID,serial#select sid,serial#,lockwait,status,wait_time,state from v$session where sid='SID';--杀掉进程alter system kill session 'SID,serial#';


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java工作环境的配置与Eclipse的安装过程
下一篇:宇鑫物流单号查询API(宇鑫物流单号查询爱查快递)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~