Oracle11g ORA-12005: 不能安排过去时间的自动刷新

本文分析了ORA-12005错误的原因,该错误与尝试为过去的时间安排自动刷新有关。详细解释了Oracle JOB的工作流程,并提供了解决方案,包括如何检查和调整相关设置。
Tue Aug 29 23:30:04 2017
Errors in file /oracle/app/oracle/diag/rdbms/gg/gg1/trace/gg1_j001_47778152.trc:
ORA-12012: 自动执行作业 1214 出错
ORA-12005: 不能安排过去时间的自动刷新
Errors in file /oracle/app/oracle/diag/rdbms/gg/gg1/trace/gg1_j001_47778152.trc:
ORA-12012: 自动执行作业 1204 出错
ORA-12005: 不能安排过去时间的自动刷新
Tue Aug 29 23:30:04 2017
Errors in file /oracle/app/oracle/diag/rdbms/gg/gg1/trace/gg1_j000_9505648.trc:
ORA-12012: 自动执行作业 1205 出错
ORA-12005: 不能安排过去时间的自动刷新
Errors in file /oracle/app/oracle/diag/rdbms/gg/gg1/trace/gg1_j001_47778152.trc:
ORA-12012: 自动执行作业 1208 出错
ORA-12005: 不能安排过去时间的自动刷新

Errors in file /oracle/app/oracle/diag/rdbms/gg/gg1/trace/gg1_j000_9505648.trc:


官方解释:

Error code: ORA-12005
Description: may not schedule automatic refresh for times in the past
Cause: An attempt was made to schedule an automated materialized view refresh for a time in the past.
Action: Choose a time in the future instead.

分析:INTERVAL的值+JOB开始运行的时间,算出下次执行时间在当前时间之前,所以报错ORA-12005: 不能安排过去时间的自动刷新。要想理解这个得知道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执行的时间太长。

解决方案是:

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
       (1214,1204,1205,1208);

如查出来的1214的INTERVALTRUNC(SYSDATE) + 20/24 ,修改一下INTERVAL即可。

exec dbms_job.interval(1214,'TRUNC(SYSDATE+1) + 20/24');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值