BEGIN
  DBMS_SCHEDULER.CREATE_JOB(JOB_NAME        => 'tjobno', --生成job名称
                            JOB_TYPE        => 'STORED_PROCEDURE', --job类型
                            JOB_ACTION      => 'TEST_PKG.INS_TEST_JOB', --job执行调用procedure向一表插数据
                            START_DATE      => to_date(sysdate,'yyyy-mm-dd hh24:mi:ss'), --job开始执行时间
                            REPEAT_INTERVAL => 'trunc(sysdate)+16/24+12/24/60+10/24/60/60', --job执行频率
                            
                            ENABLED         => TRUE,
                            AUTO_DROP       => true,
                            COMMENTS        => '测试job'); --job描述
END;
这个是创建scheduler的代码,创建后 使用select * from user_scheduler_jobs可正确查询出已创建的job ,  且ENABLED 为true , 下一次的执行的时间也已经过了可是还没有执行
如果手动调用执行exec dbms_scheduler.run_job(' TJOBNO'); 可以查看到存储过程插入数据的代码

解决方案 »

  1.   

    就是说手动调用 exec dbms_scheduler.run_job(' TJOBNO');能够正确执行,但是自己就不执行
      

  2.   

    自己不执行?对不起哦 平生只写过一个JOB 然后很顺利的一次就好使了。。
      

  3.   

     REPEAT_INTERVAL 你看看是不是这里有问题啊
      

  4.   

    REPEAT_INTERVAL => 'trunc(sysdate)+16/24+12/24/60+10/24/60/60'这个是正常的,  单独 select trunc.....可以得到正确的时间
      

  5.   

    START_DATE      => to_date(sysdate,'yyyy-mm-dd hh24:mi:ss'), 
    这个有问题.
    START_DATE      => sysdate, 试试
      

  6.   

    你手动执行的时间应该是16:12:10之后吧,这样你的JOB下次执行时间就是今天的16:12:10了,自然不会再自动跑了。
    我觉得你的trunc(sysdate)+16/24+12/24/60+10/24/60/60应该改成trunc(sysdate)+1+16/24+12/24/60+10/24/60/60
      

  7.   


    恩,有可能是这个问题, 我试下, 找到了一份10g api 解决了,10g 还支持job ,只不过创建方式变了,http://www.oracle-base.com/articles/10g/Scheduler10g.php#jobs  参照这个搞定