如何在openGauss 2.1.0中使用Job

如何在openGauss 2.1.0中使用Job,第1张

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

1 接口描述

2 接口定义和使用示例

PKG_SERVICEJOB_CANCEL

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

PKG_SERVICEJOB_CANCEL函数原型为:

PKG_SERVICEJOB_CANCEL( job IN INTEGER);

示例:

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

PKG_SERVICEJOB_FINISH函数原型为:

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

PKG_SERVICEJOB_SUBMIT函数原型为:

PKG_SERVICEJOB_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_SERVICEJOB_UPDATE

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

PKG_SERVICEJOB_UPDATE函数原型为:

PKG_SERVICEJOB_UPDATE( id IN BIGINT, next_time IN TIMESTAMP, interval_time IN TEXT, content IN TEXT);

示例:

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

PKG_SERVICESUBMIT_ON_NODES函数原型为:

示例:

PKG_SERVICEISUBMIT_ON_NODES

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

3 JOB的使用示例

检查Job运行结果

修改为2分钟执行一次

检查修改情况和运行结果

禁用和启用任务

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

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

墨天轮原文链接:>

你那个写法, 看上去也没什么问题。

下面这个方式, 是可以处理的。 你测试着看看?

SQL> variable jobno number;

SQL> begin

2 dbms_jobsubmit(:jobno, 'test1;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')');

3 commit;

4 end;

5 /

PL/SQL 过程已成功完成。

begin

sysdbms_jobsubmit(job => :job, -- job编号

what => 'dbms_outputpub_line(''asdf'');', -- 执行脚本,换成你的存储过程

next_date => to_date('17-01-2011 16:17:31', 'dd-mm-yyyy hh24:mi:ss'), -- 下次执行时间

interval => 'trunc(sysdate)+10/24/60'); -- 执行时间间隔10min

commit;

end;

/

oracle数据库如何启动时自动执行定时任务job

job定时任务需要依托存储过程。

1、创建存储过程:create or replace procedure MYPROC as

begin

insert into TEST values(sysdate);

end;

2、创建job

variable job1 number;

begin

dbms_jobsubmit(:job1,'MYPROC;',trunc(sysdate+1),'sysdate+1');--从今晚12开始运行,以后每天运行一次

end;

建立数据库JOB(作业)步骤--SQL SERVER2000为例企业管理器—>数据库服务器—>管理目录—>SQL SERVER代理—>作业—>右键 选—>新建常规选项页—>输入作业名称—>选中所有者。步骤选项页—>新建—>输入步骤名—>类型 TSQL脚本—>选择需要执行的数据库—>在命令框里输入你的SQL 脚本:如:update tb set 状态= where 日期你可以点左下角的分析按钮,分析一下语法,分析无误,按确定。调度选项页—>新建调度—>输入调度名称—>调度类型 你可以选择也可以点右下角的更改按钮进行更改,确定。任务栏 SQL SERVER服务器的小图标 双击 服务 选中 SQL SERVER AGENT,点开始/继续,选中当启动OS时,自动启动服务,就可以了。到你定的那个时间点,SQL SERVER会自动去执行你的脚本的。如果需要生成脚本的话,企业管理器—>数据库服务器—>管理目录—>SQL SERVER代理—>作业—>右键你刚完成的作业—>所有任务—>生成SQL脚本,即可生成你需要的脚本。

Oracle增量更新有两种方式:1、日志方式的记录,由RMAN设置增量方式完成更新;2、由SQL语句实现更新。

你的“job+存储过程”的实现应该是SQL语句方式,应该完成:去重-插入两个动作。

以上就是关于如何在openGauss 2.1.0中使用Job全部的内容,包括:如何在openGauss 2.1.0中使用Job、oracle数据库怎么启动job、我想要使用oracle 数据库的job在每晚11点执行一个过程,请问下面的语句有什么问题,总是报错等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存