首先,先了解interval的定义
引用
interval VARCHAR2(200) NOT NULL A date function, evaluated at the start of execution, becomes next NEXT_DATE
即在job开始执行时根据date function估算job下次执行的时间(NEXT_DATE)。
通常,我们采用两种方式来设置job的interval:
1. 由date function估算出的时间是固定的
2. 由date function估算出的时间是非固定的
何为固定?何为非固定?
比如说trunc(SYSDATE)+635/1440,trunc(sysdate,'hh')+1/48估算出的时间就是固定的,它不跟随sysdate的变化而变化。而sysdate+1,sysdate+2估算出的时间就是非固定的,因为sysdate变化,sysdate+1和sysdate+2也会跟随变化。
在此,重点阐述的是当interval的值是固定时间时应当注意的事项。如果interval设置的不得当,很可能会出现ORA-12012与ORA-12005错误。为什么会出现这两个错误呢?先模拟出现这两个错误的例子:
创建测试的table、procedure
SQL>
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
SQL> create table t(dtime date);
Table created.
SQL>
SQL>
SQL> create or replace procedure proc_time
2 as
3 begin
4 insert into t values(sysdate);
5 commit;
6 dbms_lock.sleep(120);
7 end;
8 /
Procedure created.
SQL>
定义job
SQL> DECLARE
1 jobno number;
2 BEGIN
3 sys.DBMS_job.SUBMIT
4 (job => jobno ,
5 what => 'proc_time;',
6 next_date => sysdate,
7 interval => 'trunc(SYSDATE)+666/1440');
8 commit;
9 END;
10 /
PL/SQL procedure successfully completed.
SQL>
job执行完成后,查询插入t表的时间
SQL> select * from t;
DTIME
-------------------
2013-08-24 11:05:26
SQL>
SQL>
SQL> select last_date,what from dba_jobs where job = 21;
LAST_DATE WHAT
------------------- ----------------------------------------
2013-08-24 11:05:26 proc_time;
SQL>
查询interval,可知interval的值是个固定值
SQL> select trunc(SYSDATE)+666/1440 time from dual;
TIME
-------------------
2013-08-24 11:06:00
SQL>
可以知道,job开始执行的时间是2013-08-24 11:05:26(从t表记录的值和dba_jobs视图可以看出)。而job真正完成的时间是2013-08-24 11:05:26 + 120秒,即2013-08-24 11:07:26。
「随着job的结束,视图dba_jobs.interval的值要更新为dba_jobs.next_date的值」。即dba_jobs.next_date='2013-08-24 11:06:00'。可是,此时的sysdate已经大于'2013-08-24 11:06:00',Oracle更新next_date的值并非我们刚开始设置的interval的值,而是比当前sysdate大的值。随即在告警日志文件中抛出ORA-12012和ORA-12005错误。
引用
Sat Aug 24 11:07:31 2013
Errors in file /u01/app/oracle/admin/lonion/bdump/lonion_j000_18414.trc:
ORA-12012: error on auto execute of job 21
ORA-12005: may not schedule automatic refresh for times in the past
为什么会抛出这两个错误呢?因为job执行的时间 > (interval的值-job开始执行的时间),等job执行完后再去更新next_date时,已经过了11:06:00,自然就报错了。
要想避免这个错误,有3种可行的办法:
- 缩短job执行的时间,即优化相关的SQL、逻辑
- 加大interval的值
- 采用非固定的interval
文章推荐阅读
-
关于JOB的两个小问题
-
Oracle Job ORA-12012&ORA-12005 错误的解决
分享到:
相关推荐
INTERVAL
interval analysis tools
Delphi Interval属性用法源码
delphi6 使用praat进行音频标注时候,可以把textgrid文件转换成早期的interval文件爱女
一、设置初始化参数 job_queue_processes sql> alter system set job_queue_processes=n;(n>0) job_queue_processes最大值为1000 查看job queue 后台进程 sql>select name,description from v$...
job_queue_interval = 10 //调度作业刷新频率秒为单位 job_queue_process 表示oracle能够并发的job的数量,可以通过语句 show parameter job_queue_process; select * from v$parameter where name=’job_queue_...
Interval Finite Element Method with MATLAB provides a thorough introduction to an effective way of investigating problems involving uncertainty using computational modeling. The well-known and ...
今天小编就为大家分享一篇Python 数值区间处理_对interval 库的快速入门详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
human-interval, javascript的人类可以读时间 人类间隔Javascript的人类可读区间解析器。由 matthewmueller/日期激发。示例用法const humanInterval = require('human-interval');setTimeout
an Interval Type-2 fuzzy set composed from α-cuts done over its primary membership functions. The defi nition of available Type-reduction methods for Interval Type-2 fuzzy sets are based on an ...
资源分类:Python库 所属语言:Python 资源全名:interval-py-0.0.2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
前端开源库-node-interval-tree节点间隔树,实现间隔树的数据结构。
shortest confidence interval for sigma,computation using Matlab,TRAORE BOUBAKAR,Xia Letian,对于CHI-SQUARE分布,当自由度n不太大时,按概率对称得到的置信区间并不是最短的。对于给定的置信水平1- ,根据...
讲解区间运算以及开源区间运算软件intlab的教程
using matlab to solve Confidence Interval
区间运算的数学基础,代码的形式化验证常用
matlab开发-Intervaltype2fuzzylogic系统的功能。实现区间2型模糊逻辑系统和一种非常有效的类型约简算法。
Bootstrap Confidence Interval for the mean
在AngularJS中$interval用来处理间歇性处理一些事情。 最常用的是: var app = angular.module("app",[]); app.controller("AppCtrl", function($q. $interval){ var timer = $interval(function(){ },100); timer....
博客 C#:Interval Helper 的演示demo,其中详细展示Interval 实现及使用方式