请问我在一个a包里有两个存储过程b和c能够同时运行吗?或者设定b是10分钟 10/1440 c是 20/1440?
看网上说直接运行包?
variable job2 number;
begin
dbms_job.submit(:job2,'a',sysdate,'sysdate+20/1440');
commit;
end;谢谢

解决方案 »

  1.   

    觉得应该是这样,如果时间不同的话,就应该用多个job了吧
      

  2.   

    1.首先修改一下楼主贴出的job中的错误。
    dbms_job.submit(:job2,'a',sysdate,'sysdate+20/1440');
    --修改成dbms_job.submit(:job2,'a;',sysdate,'sysdate+20/1440');
    2.如果楼主想在同一个job中运行2个过程,那么这2个过程的执行频率肯定是一样的。同一个job运行2个过程的方式如下:
    dbms_job.submit(:job2,'a;b;',sysdate,'sysdate+20/1440');
    该示例是以2个不带参数的过程为例,工程间以;分割。如果过程带参数,请作相应处理。
    3.如果楼主想让2个过程的执行频率不一致,那么这2个过程必须放在2个job中执行。
      

  3.   

    用一个存储过程a负责启动两个存储过程b、c,然后写一个job调用存储过程a
      

  4.   

    存储过程内部也行并行?
    两个Job一起执行行不行?
      

  5.   

    两种思路了这样我觉得应该建立2个job分别运行不同的任务。
      

  6.   

    并行的话,就整2个job,不就搞定??
      

  7.   

    使用三个job其中一个用于管理另外二个job这样就能达到多job同时并行,不过还要看你对job的控制程度。
      

  8.   

    dbms_job.submit才是创建job的语句,所以你完全可以在上面的语句块中创建两个不同频率的、分别调用a和b和job。想要在一个job中执行多个语句,那就写到一个存储过程中,再用job调用它们。最后,一个语句块中的多个语句是挨个执行的,要同时运行两个存储过程,只能在不同的job中。
      

  9.   

    有必要这么折腾吗?同时执行有何用意?并行?如果真是并行,可以这样说用一个JOB不可能。如果顺序执行,可以,不过一个是10分钟、一个20分钟自己想办法解决吧,肯定要找一个中间量来判定,第二个过程两次调用执行一次,可以用表、可以用JOB执行次数奇偶判定法,但是第一个过程如果执行时间过长,第二个过程能不能执行完成就要看运气了;但是我还是那句,有必要这么折腾吗?你怕消耗ORACLE性能就放到应用程序中用多线程去实现呗,ORACLE的JOB个数不难道真的能用到成百上千个,还是各个过程性能不咋的?如果真是这样,我想首先考虑的不是如果用一个JOB去并行两个过程,而是检查过程的性能,哪些JOB是没有必要的,哪些JOB是可以被合并的,策略性的解决方案。