Oracle的job错误
一个oracle的job:
declare
   job_tbl number;
begin
   sys.dbms_job.submit(job => job_tbl,
                       what => 'clear_tbl;',
                       next_date => trunc(SYSDATE)+30/1440,
                       interval => 'trunc(sysdate)+30/1440');
   commit;
end;
/
这里要求每天00:30执行clear_tbl这个存储过程,现在clear_tbl存储过程执行没问题,且单独手工运行这个job也没问题,但一旦让它自己定时运行就报错,我猜测,是否是interval => 'trunc(sysdate)+30/1440')这里的时间采用与next_date一致,所以当在trunc(SYSDATE)+30/1440执行了该job后,由于间隔时间也是当前时间,所以报错,改为:
declare
   job_tbl number;
begin
   sys.dbms_job.submit(job => job_tbl,
                       what => 'clear_tbl;',
                       next_date => trunc(SYSDATE)+30/1440,
                       interval => 'trunc(sysdate+1)+30/1440');
   commit;
end;
/
即可,是这么理解么?谢谢!
------解决方案--------------------下一个时间应该是 xxxx年xx月xx天 00:30
间隔时间应该是一天
------解决方案--------------------BEGIN
sys.dbms_scheduler.create_job(
 job_name => '"YANFA"."JOB_UPDATE_RUNSTATE"',
 job_type => 'STORED_PROCEDURE',
 --调用的命令类型,此处调用存储过程
 job_action => 'YANFA.PRO_UPDATE_RUNSTATE',
 --每10分钟运行一次
 repeat_interval => 'FREQ=MINUTELY;INTERVAL=10',
 --每10秒钟运行一次
 --repeat_interval => 'FREQ=SECONDLY;INTERVAL=10',
 start_date => systimestamp at time zone '+8:00',
 job_class => 'DEFAULT_JOB_CLASS',
 auto_drop => FALSE,
 enabled => FALSE
);
sys.dbms_scheduler.set_attribute( name => '"YANFA"."JOB_UPDATE_RUNSTATE"', attribute => 'restartable', value => TRUE);  
sys.dbms_scheduler.enable( '"YANFA"."JOB_UPDATE_RUNSTATE"' );  
END;