代码:
begin
  sys.dbms_job.submit(job => :job,
                      what => 'PROC_INF_MAIN;',
                      next_date => to_date(sysdate, 'dd-mm-yyyy'),
                      interval => 'trunc(sysdate+1,''dd'')');
  commit;
end;偶是在plsql里面建的,建完后昨天上午9点的多执行了一把,成功了。
按照我写的代码的意思,应该今天晚上执行的,但是早上跑来一看,没有执行。
问下什么问题?
谢谢

解决方案 »

  1.   

    查看一下看看下次执行的时间
    select to_char(next_date,'YYYY-MM-DD HH24:MI:SS') next_date from user_jobs where what = 'PROC_INF_MAIN;';
    比如,我们要JOB在每天的凌晨3:30执行而不管上次执行到底是几点,只需要设置interval为trunc(SYSDATE)+3.5/24+1即可。完整的SQL如下: SQL> variable jobno number;SQL> BEGIN   2 DBMS_JOB.SUBMIT(job => :jobno,   3 what => 'sp_test_next_date;',   4 next_date => SYSDATE,   5 interval => 'trunc(SYSDATE)+3.5/24+1');   6 COMMIT;   7 END;   8 /
      

  2.   

    begin
    sys.dbms_job.submit(job => :job,
    what => 'PROC_INF_MAIN;',
    next_date => SYSDATE,
    interval => 'sysdate+1');
    commit;
    end;
      

  3.   

    hongqi162(失踪的月亮)
    非常感谢你提供给我查询下次执行时间的方法
    更改时间后,
    我查了下我的下次执行时间2007-06-26 10:12:00
    但是过了这个时间还是不执行
    我是不是有什么东西没有启动?
    对了,我是在plsql下建的
    建完后,run了一下。就没作别的操作了。
    run 的时候能正常执行。
      

  4.   

    怎么查看job_queue_processes这个参数?
      

  5.   

    SQL> show parameters job_queue_processesNAME                                 TYPE        VALUE
    ------------------------------------ ----------- ----------
    job_queue_processes                  integer     10
    SQL>
      

  6.   

    我show 不出来,是不是要dba才可以?
      

  7.   

    出现什么错误呢?show 不出来?
      

  8.   

    ---------------------------------------------------------------------
    --every 30mins
    ---------------------------------------------------------------------
    declare
    v_jobno number;
    begin
    dbms_job.submit(v_jobno, 
       '&my_sp;', 
       trunc(sysdate, 'HH24') + FLOOR(TO_NUMBER(TO_CHAR(sysdate, 'MI'))/30)/48+1/48, 
        'trunc(sysdate, ''HH24'') + FLOOR(TO_NUMBER(TO_CHAR(sysdate, ''MI''))/30)/48 + 1/48'
        );
    commit;
    end;
    /
    ---------------------------------------------------------------------
    --正点执行的job
    ---------------------------------------------------------------------
    declare
    v_jobno number;
    begin
    dbms_job.submit(v_jobno, 
       '&my_sp;', 
       trunc(sysdate, 'HH24')+1/24, 
       'trunc(sysdate, ''HH24'') + 1/24');
    commit;
    end;
    / ---------------------------------------------------------------------
    --半点执行的job
    ---------------------------------------------------------------------
    declare
    v_jobno number;
    begin
    dbms_job.submit(v_jobno, 
       '&my_sp;', 
       trunc(sysdate, 'HH24') + FLOOR(TO_NUMBER(TO_CHAR(sysdate, 'MI'))/30)/48+1/48, 
       'trunc(sysdate, ''HH24'') + 3/48');
    commit;
    end;

    ---------------------------------------------------------------------
    --每周执行一次的job(周一早上10:00)
    --trunc(sysdate, 'd')是将时间截断到本周周日(本周第一天)早上0点
    ---------------------------------------------------------------------
    declare
    v_jobno number;
    begin
    dbms_job.submit(v_jobno, 
       '&my_sp;', 
        trunc(sysdate, 'd') + 8 + 10/24, 
        'trunc(sysdate, ''d'') + 8 + 10/24');
    commit;
    end;
    /楼主可以参照一下
      

  9.   

    job_queue_processes
    这个必须要有的啊,
    CJQ0 进程有吗?
      

  10.   

    你可以看看user_job和dba_jobs_running这两个视图。可以查询到你的job状态。