• ORA-12012: error on auto execute of job 25;ORA-12005: may not schedule automatic refresh for times in the past


      使用BethuneX做巡检,连续报如下错误:

    --错误
    Thu Oct 29 14:36:04 2020
    Errors in file /u01/app/oracle/diag/rdbms/mtws/mtws/trace/mtws_j000_33913.trc:
    ORA-12012: 自动执行作业 3 出错
    ORA-12005: 不能安排过去时间的自动刷新
    Errors in file /u01/app/oracle/diag/rdbms/mtws/mtws/trace/mtws_j000_33913.trc:
    ORA-12012: error on auto execute of job 25
    ORA-12005: may not schedule automatic refresh for times in the past

      首先从报错判断跟JOB相关,排查过程:

    1、首先使用oerr ora 12012 ,oerr ora 12005命令查看

     分析:INTERVAL的值+JOB开始运行的时间,算出下次执行时间在当前时间之前,所以报错ORA-12005: 不能安排过去时间的自动刷新。要想理解这个得知道JOB内部的工作。

    2、度娘查询,通过https://blog.csdn.net/stevendbaguo/article/details/77770955 确定JOB的工作流程

    JOB的工作流程:
        1.JOB在运行结束之后才会更新next_date,但是计算的方法是JOB刚开始的时间加上interval设定的间隔
        2.如果在执行完JOB之后的时间比按照this_date+interval计算出的时间更晚一些,那么next_date就更新为当前时间,也就是几乎会立刻再重新执行JOB。
        3.如果一个job执行failure后,oracle会尝试重新执行,若16次尝试后还是failure,则oracle会将这个job的broken设为true,即停掉这个job。
        当job失败后,系统会在1分钟后重新运行这个JOB,如果还是失败,就在和第1次失败间隔2分钟的时候继续运行这个JOB,如果还是失败,就在和 第2次失败相隔4分钟后运行这个JOB,直到 失败间隔时间≥interval(JOB正常工作的时间设置参数)后,系统检测的时间间隔就为interval.直到第16次失败就会将这个job置为 broken。

        所以原因也许是interval设置的不合理,也许是JOB执行的时间太长。

    3、到dba_jobs表中查询报警JOB情况

      select job,log_user,schema_user,what,LAST_DATE,LAST_SEC,THIS_DATE,THIS_SEC,NEXT_DATE,NEXT_SEC,INTERVAL  from dba_jobs where job in  (34,25);

      select job,NEXT_DATE,what,INTERVAL  from dba_jobs where job in  (3,25);

      

       发现INTERVAL中的值异常,参考http://blog.itpub.net/29346172/viewspace-2199878/ 发现应该为类似 TRUNC(SYSDATE +1) + (3*60+10)/(24*60) 这样的格式,判断上图中特殊字符应该为括号。

      告知客户考虑重建JOB修复。

      

    4、其他

      该问题并未完全吃透,应该掌握JOB的创建过程、方式,JOB相关表的功能作用,INTERVAL设置等。

    参考:

    1、定位错误:https://blog.csdn.net/stevendbaguo/article/details/77770955

    2、dba_jobs字段说明:https://www.cnblogs.com/uzipi/p/5590161.html

    3、执行间隔interval运行频率设置:https://blog.csdn.net/qq_30270931/article/details/81865875

  • 相关阅读:
    Spring bean的循环依赖以及解决方式
    在Java中为什么实现了Cloneable接口,就能调用Object的clone方法?
    Java-Objects类-deepEquals()和equals()详解
    Linux TCP状态TIME_WAIT 过多的处理
    mysql字符串区分大小写的问题
    java 类加载
    java native 理解
    Maven配置阿里镜像仓库
    Cannot find name ‘XX‘. Do you need to change your target library? Try changing the `lib` compiler
    Typescript Interfaces(接口)添加任意key值/内容
  • 原文地址:https://www.cnblogs.com/peixk/p/13899446.html
Copyright © 2020-2023  润新知