因为官方文档上没有找到相关的说明,所以这里进行了例如以下測试,为了找到oracle数据库中 job 失败后重试时间的规律。


数据库版本号:11.2.0.3


測试说明:这里创建了一个日志表以及一个执行时必然出错的procedure,用于job的执行。这里仅仅要记录下每次job执行时视图user_jobs 中的 next_date就能够判断出job 执行失败后的重试规律。

为了測试job的重试规律我做了例如以下工作


日志表以及序列:

create table job_exec_logs (id number ,current_date date , next_date date ,failures number ,broken varchar2( 2)) ;

create sequence seq_job_exec_logs_id ;


測试procedure
create or replace procedure pro_my_test is
begin
insert into job_exec_logs select
seq_job_exec_logs_id.nextval , sysdate , next_date , failures , broken from user_jobs ;
commit ;
execute immediate 'select * from ddddsfs' ;
end ;


当中ddddsfs表示不存在的。也就是说仅仅要执行pro_my_test存储过程到最后都会出错(可是日志表还是能够正常插入进去的)

创建job:
var job number ;
begin
sys.dbms_job.submit(job => :job,
what => 'pro_my_test ;',
next_date => sysdate,
interval => 'sysdate+5' );
commit;
end;
/



事实上整个測试过程没什么可说的。让job自己主动执行就可以,可是须要等待job下次重试时间。


最后測试的结果:

dexter@REPO>select trunc((next_date-lag(next_date,1) over (order by 4))*24*60) from (
2 select * from job_exec_logs
3 union all
4 select 11111, sysdate , next_date ,failures , broken from user_jobs
5 order by 4 nulls first) ; TRUNC((NEXT_DATE-LAG(NEXT_DATE,1)OVER(ORDER BY 4))*24*60)
------------------------------------------------------- 2
4
8
15
32
64
128
256
512
1024
1440
1440 已选择13行。

如上结果以及笔者的其它測试能够推断出:
1、每次重试时间都是递增的。第一次2分钟,4分钟,8分钟,16分钟 ... 依此类推。
2、当超过1440分钟,也就是24小时的时候,固定的重试时间为1天。

3、笔者还经过其它实验得知,超过16次重试后,job 就会被标记为broken ,next_date 为4000-1-1,也就是不再进行job重试。

4、oracle数据库重试的时间到达设定的下次运行时间后,以设定的job运行时间为准。


想要了解很多其它,能够看下metalink


Broken Jobs and the Job Queue (文档ID 103349.1)





 

版权声明:本文博客原创文章。博客,未经同意,不得转载。

Oracle 数据库 JOB 失败后解密法重试的更多相关文章

  1. Oracle 11g 发行版2的安装,PLSQL_Developer安装 , Oracle数据库安装失败,完全卸载,常用的命令

    Oracle 11g 发行版2的安装 PLSQL_Developer安装 Oracle数据库安装失败,完全卸载oracle11g 常用的命令 Oracle 11g 发行版2的安装 1. 下载 下载地址 ...

  2. PLSQL往Oracle数据库插入中文后变为问号 和 启动PLSQL时提示NLS_LANG在客户端不能确定的解决办法

    PLSQL往Oracle数据库插入中文后变为问号 和 启动PLSQL时提示NLS_LANG在客户端不能确定的解决办法 1.检查服务器的字符编码 Select * from V$NLS_PARAMETE ...

  3. Linux删除ORACLE数据库用户失败提示ORA-01940解决方法

    操作环境 SuSE11+Oracle11gR2 问题现象 删除ORACLE数据库用户失败,提示ORA-01940: cannot drop a user that is currently conne ...

  4. Oracle数据库安装完成后相关问题的解决

    笔者一直以来都是使用公司服务器上的oracle数据库,突然一天公司服务器宕机了,项目无法访问数据库跟着瘫痪了,所以准备在自己的机器上安装一个oracle数据库. 从官网下载安装了oracle 11g后 ...

  5. rabbitmq~消息失败后重试达到 TTL放到死信队列(事务型消息补偿机制)

    这是一个基于消息的分布式事务的一部分,主要通过消息来实现,生产者把消息发到队列后,由消费方去执行剩下的逻辑,而当消费方处理失败后,我们需要进行重试,即为了最现数据的最终一致性,在rabbitmq里,它 ...

  6. SQL Server 2014 64位版本链接32位Oracle数据库

    问题背景: 刚进入公司不久的BI新手,最近接部门的一个交接项目,需要在SQL Server上通过openquery来获取Oracle数据库的数据.各种配置,各种设置折腾了一周之久.在此,将自己的问题解 ...

  7. 对oracle数据库进行增删改更新操作,executeUpdate()执行卡住了

    原因是:oracle数据库更新数据后需要commit,不然会堵塞,就会卡住 那么每次调用executeUpdate()完后,数据库要自动commit才可以. 我的基类加了一下,注意红色字体部分代码: ...

  8. Oracle - 数据库的实例、表空间、用户、表之间关系

    完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Ora ...

  9. Oracle数据库之SQL基础(一)

    主要内容:用户与表空间:表与约束:查询语句. 一.概述 Oracle安装:访问官网,下载 二.用户与表空间 在安装Oracle时在开始菜单里可以用sql puls登录oracle. ★1.系统用户 s ...

随机推荐

  1. python学习笔记之八:迭代器和生成器

    一. 迭代器 在前面的笔记中,已经提到过迭代器(和可迭代),这里会对此进行深入讨论.只讨论一个特殊方法---__iter__,这个方法是迭代器规则的基础. 1.1 迭代器规则 迭代的意思是重复做一些事 ...

  2. 简单的刷票系统(突破IP限制进行投票) (转)

    前言 相信大家平时肯定会收到朋友发来的链接,打开一看,哦,需要投票.投完票后弹出一个页面(恭喜您,您已经投票成功),再次点击的时候发现,啊哈,您的IP(***.***.***.***)已经投过票了,不 ...

  3. Python3.2官方文件翻译--课堂笔记和异常是阶级

    6.7备注 有时喜欢Pasca在"录"和C中"数据体"的数据类型很实用.集合一些数据项. 一个空类定义能够清楚地显示: class Employee: pass ...

  4. 在Eclipse在使用JUnit4单元测试(0基础知识)

    自这篇文章: http://www.devx.com/Java/Article/31983/0/page/1 我们在编写大型程序的时候,须要写成千上万个方法或函数.这些函数的功能可能非常强大,但我们在 ...

  5. Android在发送带有附件的邮件

    准备好工作了-下载最新的版本号JMail https://java.net/projects/javamail/pages/Home#Download_JavaMail_1.5.2_Release h ...

  6. 间隔DP基础 POJ2955——Brackets

    取血怒.first blood,第一区间DP,这样第一次没有以某种方式在不知不觉中下降~~~ 题目尽管是鸟语.但还是非常赤裸裸的告诉我们要求最大的括号匹配数.DP走起~ dp[i][j]表示区间[i, ...

  7. 每天进步一点点——再次了解Linux进程ID

    转载请注明出处:http://blog.csdn.net/cywosp/article/details/38968011 1. 概述 众所周知,进程(process)是一个可运行程序的实例,可是在Li ...

  8. 牟大哥:《App自我促销》连载2 直立人迁移走

    [谋哥每天一干货,第六十九篇] 前篇说到声音在远古时代.是一个奇妙的东西,它可以非常快地把信息传播到其它地方,突破了短距离. 然而能人的后代直立人学会了直立行走,他们開始走出非洲,到达遥远的中东.中国 ...

  9. android存储阵列数据SharedPreferences

    假设要数组数据(如boolean[] .int[]等)到SharedPreferences时,我们能够先将数组数据组织成json数据存储到SharedPreferences,读取时则对json数据进行 ...

  10. JavaScript概要

     当用户填写表单在线,用户输入表单经常要推测在页面上,它提示用户填写正确的邮箱.哪些项目不填之类,这些都是JavaScript小的特点. JavaScript是一种基于对象的脚本语言,使用它能够开 ...