是不是要每个月2号执行作业一次?下面是每个月2号临晨执行作业的INTERVAL:trunc(add_months(sysdate,1),'mm')+1
解决方案 »
- 急急急两表数据更新问题
- 紧急求救,ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
- TNS-12560: TNS: 协议适配器错误
- 谁能帮我 写个 JOB 15分钟 执行这个 存储
- 关于Oracle字段名大小写的问题
- 請問這樣的數據庫怎麼架設?
- oracle数据库的移植问题
- 归档模式
- 在安装过程中出现了ora-03113:end-of-file on communication channel问题
- 【求助】大家帮忙看看这个触发器,在触发器中记录当前时间
- 为何到了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
....