oracle中如何创建一个job

oracle中如何创建一个job,第1张

将下面的存储过程名称换成实际的存储过程名称,就可以实现您要的功能的,

现为你写的,直接在pl/sql dev里面执行就行了,有啥问题再联系我。

上面一段是删除job,后面的是建立job,我写了判断语句,可以随意执行

参考oracle的 dbms_job包。

---------------------华丽丽的分割线----------------------------

DECLARE

i_count number

job_num number

BEGIN

select count(job) into i_count from user_jobs where upper(what)='存储过程名称'

if i_count>0 then

select job into job_num from user_jobs where upper(what)='存储过程名称'

dbms_job.remove(job_num)

end if

END

/

commit

DECLARE X NUMBER

BEGIN

DBMS_JOB.SUBMIT

( job      => X

,what      => '存储过程名称'

,next_date => to_date(to_char(sysdate+1,'yyyy-mm-dd')||' 01:00:00','yyyy-mm-dd hh24:mi:ss')

,interval  => 'SYSDATE+1'

,no_parse  => TRUE

)

END

/

commit

Job类似Unix中的crontab,有定时执行的功能,可以在指定的时间点或每天的某个时间点等自行执行任务。在各类系统使用运行过程中,经常会遇到需要定时完成的任务,比如定时更新数据,定时统计数据生成报表等等,这些工作都可以使用Job来完成。在openGauss 2.1.0中,提供了以下接口来实现管理Job。

1 接口描述

2 接口定义和使用示例

PKG_SERVICE.JOB_CANCEL

存储过程CANCEL删除指定的定时任务。

PKG_SERVICE.JOB_CANCEL函数原型为:

PKG_SERVICE.JOB_CANCEL( job IN INTEGER)

示例:

存储过程FINISH禁用或者启用定时任务。

PKG_SERVICE.JOB_FINISH函数原型为:

存储过程JOB_SUBMIT提交一个系统提供的定时任务。

PKG_SERVICE.JOB_SUBMIT函数原型为:

PKG_SERVICE.JOB_SUBMIT( id IN BIGINT DEFAULT, content IN TEXT, next_date IN TIMESTAMP DEFAULT sysdate, interval_time IN TEXT DEFAULT ‘null’, job OUT INTEGER)

当创建一个定时任务(JOB)时,系统默认将当前数据库和用户名与当前创建的定时任务绑定起来。该接口函数可以通过call或select调用,如果通过select调用,可以不填写出参。如果在存储过程中,则需要通过perform调用该接口函数。如果提交的sql语句任务使用到非public的schema,应该指定表或者函数的schema,或者在sql语句前添加set current_schema = xxx语句。

示例:

PKG_SERVICE.JOB_UPDATE

存储过程UPDATE修改定时任务的属性,包括任务内容、下次执行时间、执行间隔。

PKG_SERVICE.JOB_UPDATE函数原型为:

PKG_SERVICE.JOB_UPDATE( id IN BIGINT, next_time IN TIMESTAMP, interval_time IN TEXT, content IN TEXT)

示例:

存储过程SUBMIT_ON_NODES创建一个所有CN/DN上的定时任务,仅sysadmin有此权限。

PKG_SERVICE.SUBMIT_ON_NODES函数原型为:

示例:

PKG_SERVICE.ISUBMIT_ON_NODES

ISUBMIT_ON_NODES与SUBMIT_ON_NODES语法功能相同,但其第一个参数是入参,即指定的作业号,SUBMIT最后一个参数是出参,表示系统自动生成的作业号。仅sysadmin有此权限。

3 JOB的使用示例

检查Job运行结果

修改为2分钟执行一次

检查修改情况和运行结果

禁用和启用任务

禁用和启用都是同样的函数pkg_service.job_finish,传入不同的参数表示是禁用还是启用。

可以看到如果重新启用任务的时候,没有指定下次运行时间,那么下次运行时间会始终保持在4000年,意味着仍然不会启动,所以如果禁用任务之后再重新启动,需要手动显式指定下次运行时间。

墨天轮原文链接:https://www.modb.pro/db/137362?sjhy(复制到浏览器或者点击“阅读原文”立即查看)

关于作者

刘旭,2005开始接触数据库,2014年加入云和恩墨,从事过Oracle数据库优化、SQL审核和产品开发。现阶段主要参与MogDB数据库的测试和文档编写等相关工作。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6936692.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-30
下一篇 2023-03-30

发表评论

登录后才能评论

评论列表(0条)

保存