失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Oracle作业队列入门图文解说

Oracle作业队列入门图文解说

时间:2020-12-31 07:13:58

相关推荐

Oracle作业队列入门图文解说

在 Oracle 中,是使用 “作业队列协调进程(CJQ0)” 这个协调数据库实例的作业队列的后台进程,来监视作业队列中的作业表(JOB$),并启动作业队列进程(Jnnn)。而当需要执行作业的时候,作业队列Jnnn 将会执行由 DBMS_JOBS 包创建的作业请求。

1 首先查看一下作业相关的信息;

当前没有作业,select * from user_jobs显示为空;

2 在sql developer中创建一个存储过程,用于插入一条数据到emp表;

create or replace procedure insert_emp as

begin

insert into emp(empno,ename) values('8000','Simth');

end insert_emp;

3 在sql plus中,连接到scott用户,查看一下存储过程; 新建的存储过程insert_emp已经出来了;

4 根据网上资料,用系统包dbms_job的submit来提交一个作业,调度执行insert_emp;

输入错误一次;

5 再次输入,争取;

job1为作业编号;insert_emp是要执行的过程名;

按网上资料,sysdate+1/1440 为每分钟执行一次,那么sysdate+2/1440为每2分钟执行一次;

函数包DBMS_JOB介绍

该包包含的过程有SUBMIT、REMOVE、CHANGE、WHAT、NEXT_DATE、INTERVAL、BROKEN、RUN

参数介绍

job是作业号,标识一个作业在数据库中具有唯一性质

broken表示该作业是否被标记为无效,true无效,false有效

next_date表示下一次执行该作业的时间,默认为当前日期和时间

what表示该作业要运行的一块PL/SQL代码块、存储过程

interval表示该作业重复执行的时间间隔

no_parse表示作业在提交或者执行时是否应进行语法分析,true不分析,false立即分析

my_call表示在当前状态下重新提交此作业的代码

过程介绍:

SUBMIT:正常提交一个作业,有五个参数:job、what、next_date、interval、no_parse

REMOVE:删除一个已计划运行的作业,有一个参数:job、what、next_date、interval、no_parse

CHANGE:用于改变作业的执行计划,有四个参数:job、what、next_date、interval

WHAT:重新设置作业的执行代码,有两个参数:job、what

NEXT_DATE:用于设置作用下一次被执行的时间,有两个参数:job、next_date

INTERVAL:用于设置作用下一次执行的时间间隔,有两个参数:job、interval

BROKEN:用于设置一个已提交的左右有效或无效,有三个参数:job、broken、next_date

RUN:强制执行一个作业,不管该作业是否有效,有一个参数:job

USER_EXPORT:返回一个命令,此命令用来安排一个存在的作业以便此作业重新提交,有两个参数:job、my_call

6 现在作业提交了,查看一下user_jobs表的情况,有东西了;23是系统分配的作业号;

7 执行该作业;

8 过一会看emp表;果然加入了一条数据;如下图第一条;

9 但是过一段时间再看emp表,并没有2分钟插入一条记录;为啥呢;

看一下user_jobs表的情况,如下图,执行失败次数16,broken为y - 即停止;

那么是因为每次插入相同的数据,数据库约束的原因,除了第一次,其他插入失败,达到16次Oracle就停止了该作业;

移除该作业,退出,休息去。

如果觉得《Oracle作业队列入门图文解说》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。