如题,初次使用dbms_job时间设置,本来想设成 一天一次 ,sysdate+1 结果 间隔是1天多 ,测试的时候 设置成sysdate+1/24看了下记录,大约是 8小时 32分执行一次 这是怎么回事?是不是配置那没配置好? 本人菜鸟 测试半个月了 实在不知道怎么解决 请各位大神指点指点
解决方案 »
- 求SQL写法
- 如何查询oracle 或sybase中一条数据产生的时间
- 重金求一条SQL语句
- 如何设置用户的操作权限,总提示权限不够?WIN系统
- 100分急补Oracle9i的基础知识
- 奇怪,简单的格式化命令怎么出现这样的结果? column empno format a10,全格式化成##########了?!咋回事
- 无法建立监听的问题
- 急问--怎样在SQL中将timestamp转换成number类型存储???
- 因函数中的死循环,我该如何解锁呢?
- oracle存储过程调用问题
- 【求解】Oracle EM Database Control登录时IE总显示证书错误
- 下午被一问题卡住了:查询和“s001”号同学所学课程完全相同的其他同学的学号
间隔: trunc(sysdate+1)+22/24
repeat_interval=>'freq=daily; byhour=23'--第天晚11点执行
begin
dbms_job.submit(job => :job,
what => 'p_maxnologin;',
next_date => trunc(sysdate)+1/24,
interval => 'trunc(sysdate)+1+1/24');
commit;
end;
/
这样可能带来的问题是不能保证任务的下一次运行的准确时间。
比如第一次运行在午夜12点,这样以后每次运行理论上都在午夜12点。
但是如果某用户在上午8点使用run过程执行了该任务,以后该任务重新定时到上午8点运行。
另外如果数据库关闭或者说任务队列非常的忙以至于任务不能在计划的那个时间点准时执行,
都可能运行时间的不断“漂移”。另一种需求是需要要任务在特定时间执行,下面是一些例子。
#每天午夜12点 'TRUNC(SYSDATE + 1)'
#每天早上8点30分 'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'
#每星期二中午12点 'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'
#每个月第一天的午夜12点 'TRUNC(LAST_DAY(SYSDATE ) + 1)'
#每季度的第一天凌晨1点 'TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24'
#每个季度最后一天的晚上11点 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'
#每年1月1日凌晨1点执行 'add_months(trunc(sysdate,''yyyy''),12)+1/24'
#每星期六和日上午11点 'trunc(least(next_day(sysdate,7),next_day(sysdate,1)))+(11*60)/(24*60)'
注:1-星期天 2-星期1 3-星期2 ... 7-星期6