如何在quartz的job任务中 *** 作数据库

如何在quartz的job任务中 *** 作数据库,第1张

数据库中建表。建表模版在Quartz包下docs/dbTables下,选择相应的数据库和版本即可。ORACLE的11个Table列表如下:

QRTZ_JOB_LISTENERS:存储有关已配置的 JobListener 的信息

JOB_NAME

JOB_GROUP

JOB_LISTENER

QRTZ_TRIGGER_LISTENERS:存储已配置的 TriggerListener 的信息

QRTZ_FIRED_TRIGGERS:存储与已触发的 Trigger 相关的状态信息,以及相联 Job的执行信息

QRTZ_PAUSED_TRIGGER_GRPS:存储已暂停的 Trigger 组的信息

QRTZ_SCHEDULER_STATE:存储集群中note实例信息,quartz会定时读取该表的信息判断集群中每个实例的当前状态

INSTANCE_NAME 之前配置文件中orgquartzschedulerinstanceId配置的名字,就会写入该字段,如果设置为AUTO,quartz会根据物理机名和当前时间产生一个名字

LAST_CHECKIN_TIME:上次检查时间

CHECKIN_INTERVAL :检查间隔时间

QRTZ_LOCKS:存储程序的悲观锁的信息(假如使用了悲观锁)

QRTZ_SIMPLE_TRIGGERS:存储简单的Trigger,包括重复次数,间隔,以及已触的次数

TRIGGER_NAME :qrtz_triggers表trigger_name的外键

TRIGGER_GROUP:qrtz_triggers表trigger_group的外键

REPEAT_COUNT :重复次数

REPEAT_INTERVAL:时间间隔

TIMES_TRIGGERED:触发次数

QRTZ_CRON_TRIGGERS:存储cron表达式表

TRIGGER_NAME :qrtz_triggers表trigger_name的外键

TRIGGER_GROUP:qrtz_triggers表trigger_group的外键

CRON_EXPRESSION:cron表达式

TIME_ZONE_ID :时区

QRTZ_TRIGGERS:保存trigger信息

jobs是oracle数据库的对象,

dbms_jobs只是jobs对象的一个实例, 就像对于tables, emp和dept都是表的实例

创建物化视图的时候,如果有next参数,系统也会自动创建相应的job

PL/SQL DEVELOPER中dbms_jobs中的JOB可以通过dbms_jobssubmit创建,并且在user_jobs视图中能找到

首先,两个库通不通?有没有dblink?

按条件读取,写job什么的都不是问题

先写个存储过程,到时候通过job调用就好了

主要问题就是两个库是不是通,这个弄好了,其他一切很简单

在plsql中执行如下脚本可以创建一个在每天晚上23点执行的job

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)+23/24'); -- 执行时间间隔

commit;

end;

/

其中interval参数的几个可能的示范值如下:

A,每5分钟执行一次

interval => 'trunc(sysdate,'mi')+5/24/60'

B,每小时执行一次,整点执行

interval => 'trunc(sysdate,'HH')+1/24'

C,一个小时后执行

interval => 'sysdate+1/24'

可以通过lasttime减去(nexttime-lasttime)totaltime 换算成秒计算出Createtime时间

例子如下: 其中49为Job名称

select last_date,

to_date(to_char(last_date, 'yyyymmddHH24miss'), 'yyyymmddHH24miss') -

1 / 24 / 60 / 60 (next_date - last_date) 24 60 60 total_time createdate,

(next_date - last_date) 24 60 60 total_time startonowsecond

from dba_jobs

where job = '49'

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年,意味着仍然不会启动,所以如果禁用任务之后再重新启动,需要手动显式指定下次运行时间。

墨天轮原文链接:>

以上就是关于如何在quartz的job任务中 *** 作数据库全部的内容,包括:如何在quartz的job任务中 *** 作数据库、oracle中dbms_jobs与Jobs的区别、oracle数据库写一个job,每天定时从一个数据库复制数据到另外一个数据库一个相同结构的表中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/sjk/9815607.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存