declare jobEvd number;
begin
sys.dbms_job.submit(jobEvd,'evd_go;',to_date('2011-02-22 15:00:00','yyyy-mm-dd hh24:mi:ss'),'TRUNC(SYSDATE + 1)+(8*60+30)/(24*60)');
end;提交了job以后到15:00:00准时执行了,但是用select * from user_jobs查看任务发现next_date显示为15:30:15,过了三点半以后再查看就变成16:02:15(如图)
这个时间'TRUNC(SYSDATE + 1)+(8*60+30)/(24*60)'应该是早上8:30吧
为什么会这样呢?另外求更改Interval的详细做法
10G的作业在(DBA|ALL|USER)_SCHEDULER_JOBS视图看直接去EM控制台改下就行了,有按(秒/分/天)
看上去是8.30,原因不知道了
汗,这个间隔时间对不对吧,直接写间隔时间,应该是
SQL> declare
2 jobEvd number;
3 begin
4 sys.dbms_job.submit(jobEvd,'begin evd_go; end;',to_date('2011-02-22 15:00:00','yyyy-mm-dd hh24:mi:ss'),'TRUNC(SYSDATE + 1)+(8*60+30)/(24*60)');
5 commit;
6 dbms_output.put_line(jobEvd);
7 end;
8 /
362
PL/SQL procedure successfully completed
SQL> select * from user_jobs t where t.JOB=362;
JOB LOG_USER PRIV_USER SCHEMA_USER LAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN INTERVAL FAILURES WHAT NLS_ENV MISC_ENV INSTANCE
---------- ------------------------------ ------------------------------ ------------------------------ ----------- ---------------- ----------- ---------------- ----------- ---------------- ---------- ------ -------------------------------------------------------------------------------- ---------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------------------------------------------------------------- ----------
362 SCOTT SCOTT SCOTT 2011-2-22 1 16:46:02 2011-2-23 8 08:30:00 0 N TRUNC(SYSDATE + 1)+(8*60+30)/(24*60) 0 begin evd_go; end; NLS_LANGUAGE='SIMPLIFIED CHINESE' NLS_TERRITORY='CHINA' NLS_CURRENCY='¥' NLS_ISO 0102000200000000 0
SQL>
莫非我RP不好……?
如果一直失败,怎么检查问题出在哪里?
JOB按时运行还是会显示状态SCHEDULED,会有显示failed,我昨天试了一下就是这样的,你还是看一下你的interval时间到底写对了没有吧另外楼主你测试的话测试服务器上没别的东西..你直接改下系统时间就行了..不用等一天
exec dbms_job.run(<作业ID>);
看它的调用错在哪里。我想可能是因为你的job.what有问题,你可以贴出来看看。