Oracle数据库JOB失败如何解决

分类:编程技术 时间:2024-02-20 16:19 浏览:0 评论:0
0
今天小编就给大家分享一下如何解决Oracle数据库JOB失败问题的一些相关知识点。内容详细,逻辑清晰。相信大多数人对这些知识还是太熟悉了,所以分享这篇文章供大家参考。我希望你能读一下。读完这篇文章,我学到了一些东西。我们一起来了解一下吧。

数据库版本:11.2.0.3

测试说明:这里创建一个运行过程中一定会出错的日志表和程序,用于运行作业。这里,只要每次执行作业时记录视图user_jobs中的next_date,就可以推断出作业执行失败后的重试模式。

为了测试作业的重试规则,我做了以下工作

日志表和序列:

create table job_exec_logs(id number, current_date日期、next_date 日期、失败次数、损坏的 varchar2( 2)) ;

创建序列 seq_job_exec_logs_id ;

测试过程

创建或替换过程 pro_my_test

开始

插入 job_exec_logs 选择

seq_job_exec_logs_id.nextval 、 sysdate 、 next_date 、 failure 、 从 user_jobs 中中断;

提交;

立即执行 'select * from ddddsfs' ;

结束;

ddddsfs表示不存在,也就是说只要运行pro_my_test存储过程,最后就会出错(但是日志表还是可以正常插入的)

p>

创建作业:

var 作业编号;

开始

sys.dbms_job.submit(job => :job,

什么=> 'pro_my_test ;',

next_date => sysdate,

间隔 => 'sysdate+5' );

提交;

结束;

/

整个测试过程其实没什么好说的。让作业自动运行即可,但是需要等待作业的下一次重试时间。

最终测试结果:

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、失败、从 user_jobs 中中断

5 个顺序,首先由 4 个空值组成);

TRUNC((NEXT_DATE-LAG(NEXT_DATE,1)OVER(ORDER BY 4))*24*60)

------ -------------------------------------------------------- ----- < /p>

; 1440

已选择 13 行。

以上结果和作者的其他测试可以确定:

1.每次重试时间都是递增的。第一次2分钟、4分钟、8分钟、16分钟……等等。

2.当超过1440分钟(即24小时)时,固定重试时间为1天。

3.作者还通过其他实验得知,超过16次重试后,该作业将被标记为已损坏,并且next_date为4000-1-1,即不会再次尝试该作业。

4.甲骨文数据后基本重试时间达到设定的下次执行时间,以设定的作业执行时间为准。

以上就是《如何解决Oracle数据库JOB失败问题》一文的全部内容。感谢您的阅读!相信大家看完这篇文章都会有所收获。小编每天都会为您更新不同的知识。如果您想了解更多知识,请关注行业资讯频道。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > Oracle数据库JOB失败如何解决

用户评论