oracle job 的问题 是不是要每个月2号执行作业一次?下面是每个月2号临晨执行作业的INTERVAL:trunc(add_months(sysdate,1),'mm')+1 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不可以,作业是按job_queue_interval去刷新的,默认值是60,即60妙刷新一次,而每次刷新时sysdate跟着变的。这样的话,你的时间间隔永远是5天前的23点钟执行.... 555555555555我的理解有问题我以为只要把第一次执行时间定义好,interval 既然是间隔,而实际上他的表达是通过一个具体的执行时间来描述的,那么这个‘间隔’无非就是这个时间与第一次执行时间的时间差,按照你的说法,如果你的提交方式是(sysdate,trunc(add_months(sysdate,1),'mm')+1)那么每次到了刷新的时候sysdate也跟着变,间隔也就乱了不是??晕 虽然sysdate每次刷新作业都跟着变,但trunc(add_months(sysdate,1),'mm')+1 运算的结果是每个月改变一次。所以作业就每个月执行一次。 实际上作业刷新,就是运算interval,当运算的结果等于sysdate时,作业就执行了。 e ,我看了一下数据库next-date= 2005-8-2 23:00:00interval确实是TO_DATE(TO_CHAR(ADD_MONTHS(SYSDATE-5,1),'YYYYMMDD')||'230000','YYYYMMDDHH24MISS')我记得提交的时候 是2005-7-7 10:16:48为了能在2号执行所以我设置next-date= TO_DATE(TO_CHAR(SYSDATE-5,'YYYYMMDD')||'230000','YYYYMMDDHH24MISS')按我的理解就是刚好差一个月 哈哈,那到2005-8-2 23:00:00时执行之后的next_date会是多少呢???如果sysdate='2005-8-2 23:00:00' 那么TO_DATE(TO_CHAR(SYSDATE-5,'YYYYMMDD')||'230000','YYYYMMDDHH24MISS')='2005-07-28 23:00:00'那作业就再也不执行了,对不? 我上面说的“实际上作业刷新,就是运算interval,当运算的结果等于sysdate时,作业就执行了”是错误的!作业递交后,执行过程应是这样的:每当系统时间到next_date时执行一次,并且按照interval运算公式,更新next_date.... 建表时的一些参数pctfree initrans maxtrans storage的含义 HQL 单表自关联问题 自动定时建多张表 ORACLE监听器已经启动,却提示没有监听器是怎么回事 Oracle不肯耗用系统资源加快工作效率 这样的语句怎样写? 函数里把一个输入变量作为表名来查询为什么不行啊? HP服务器下装ORACLE9I怎么没有反应?——急 请教各位大侠一个基础问题 decode 怎么用? 为何到了FOR yy in 1...10 LOOP就总是跳过了整个loop呢? 请问为什么在修改数据文件大小的时候报错?是否和表空间的创建语句有关
作业是按job_queue_interval去刷新的,默认值是60,即60妙刷新一次,
而每次刷新时sysdate跟着变的。这样的话,你的时间间隔永远是5天前的23点钟执行
....
我的理解有问题
我以为只要把第一次执行时间定义好,interval 既然是间隔,
而实际上他的表达是通过一个具体的执行时间来描述的,那么这个‘间隔’无非就是这个时间与第一次执行时间的时间差,按照你的说法,
如果你的提交方式是(sysdate,trunc(add_months(sysdate,1),'mm')+1)
那么每次到了刷新的时候sysdate也跟着变,间隔也就乱了不是??
晕
但trunc(add_months(sysdate,1),'mm')+1 运算的结果是每个月改变一次。
所以作业就每个月执行一次。
当运算的结果等于sysdate时,作业就执行了。
我看了一下数据库
next-date= 2005-8-2 23:00:00interval确实是TO_DATE(TO_CHAR(ADD_MONTHS(SYSDATE-5,1),'YYYYMMDD')||'230000','YYYYMMDDHH24MISS')我记得提交的时候 是2005-7-7 10:16:48
为了能在2号执行
所以我设置
next-date= TO_DATE(TO_CHAR(SYSDATE-5,'YYYYMMDD')||'230000','YYYYMMDDHH24MISS')按我的理解就是刚好差一个月
那到2005-8-2 23:00:00时执行之后的next_date会是多少呢???如果sysdate='2005-8-2 23:00:00' 那么
TO_DATE(TO_CHAR(SYSDATE-5,'YYYYMMDD')||'230000','YYYYMMDDHH24MISS')
='2005-07-28 23:00:00'那作业就再也不执行了,对不?
“实际上作业刷新,就是运算interval,
当运算的结果等于sysdate时,作业就执行了”是错误的!作业递交后,执行过程应是这样的:
每当系统时间到next_date时执行一次,
并且按照interval运算公式,更新next_date
....