KingbaseES数据库 kdb_schedule 自动定时任务

news2024/11/27 6:28:54

KingbaseES数据库 kdb_schedule 自动定时任务

文章目录

  • KingbaseES数据库 kdb_schedule 自动定时任务
  • 前言
  • 一 安装插件 kdb_schedule
    • 1. 添加kdb_schedule
    • 2. 修改kdb_schedule所需参数:
    • 3. 重启数据库
    • 4. 加载kdb_schedule插件
  • 二 dbms_scheduler
    • 2.1 创建program
      • 创建program命令
      • 成功创建program后,查看结果:
      • 参数说明
      • 删除program
      • 2.2 创建Schedule
      • 成功创建Schedule后,查看结果:
      • 参数说明
      • 删除 Schedule
      • 2.3 创建Job
      • 成功创建Job后,查看结果:
      • 参数说明
    • 四 查看 kdb_job表:
  • 日历(设置时间)
    • 参数说明
    • 具体示例
  • 备注
  • 后记

前言

人大金仓数据库的自动定时任务是类似于Oracle的,是使用一个扩展插件kdb_schedule来完成的。 kdb_schedule又该如何使用呢?

一 安装插件 kdb_schedule

1. 添加kdb_schedule

kdb_schedule插件是人大金仓数据库KingbaseES V8R6 自带的插件,不需要自己下载,但是我们需要把他添加到参数中:
在 数据库的安装目录下找到kingbase.conf 文件修改shared_preload_libraries参数,把kdb_schedule添加到里面。

shared_preload_libraries = 'kdb_schedule' 

在这里插入图片描述

2. 修改kdb_schedule所需参数:

kdb_schedule的参数也是需要在kingbase.conf 文件修改,直接添加就行

  1. job_queue_processes 允许用户启动的最大并发数,当其值设置为0时,表示不启动自动作业功能,默认为0,不开启自动作业。
  2. sys_job.log_level 用于设置JOB后台进程的日志级别,更改后需要重新加载配置文件,可选项:LOG_ERROR,LOG_WARNING,LOG_DEBUG,默认为LOG_ERROR。
  3. sys_job.poll_time 用于设置轮询系统表间隔时间,单位秒,默认值为10秒。

命令行执行:

alter system set job_queue_processes=5;

3. 重启数据库

systemctl stop kingbase 停止数据库
systemctl start kingbase 启动数据库

因为加载kdb_schedule是需要重启数据库的

4. 加载kdb_schedule插件

create extension kdb_schedule;

如果这部报错,可以查看此版本的KingbaseES是否带了这个插件。

select * from pg_available_extensions;

在这里插入图片描述

二 dbms_scheduler

2.1 创建program

创建program命令

begin ;
  call  dbms_scheduler.create_program(program_name        => 'prog_01-cs',
                                program_type        => 'PLSQL_BLOCK',        
                                program_action      => 'call hrmw.p_test()',
                                acconnstr           => 'user=postgres dbname=cs port=6666 password=postgres123',
                                acdbname            => 'test',
                                number_of_arguments => 0,
                                enabled             => true,
                                comments            => 'test program');
end;

成功创建program后,查看结果:

select * from kdb_schedule.kdb_action;

参数说明

参数描述
program_name程序的名字。
program_type程序的类型。有下列类 型:PLSQL_BLOCK、STORED_存储过程、SQL_SCRIPT、 EXECUTABLE、EXTERNAL_SCRIPT、BACKUP_SCRIPT
program_action程序的动作。
acconnstr数据库连接串。
acdbname数据库名称。
number_of_arguments程序动作的参数,暂不支持, 0为默认值。
enabled程序的状态,true启动状态,false禁用状态。
comments程序的注释信息。

删除program

DBMS_SCHEDULER.DROP_PROGRAM(
        program_name TEXT,
        force BOOLEAN DEFAULT FALSE);
call dbms_scheduler.drop_program('prog_01-cs', true);
参数描述
program_name程序的名字。
force暂不支持,默认值为false。

说实话,如果你没关联,直接在kdb_schedule.kdb_action上删除相应记录就行了。

2.2 创建Schedule

begin ;
  call dbms_scheduler.create_schedule(schedule_name   => 'schedule_01',
                                 start_date      => now(),
                                 repeat_interval => 'freq=daily;byhour=10;interval=1',
                                 end_date        => null,
                                 comments        => 'test schedule');
end;

成功创建Schedule后,查看结果:

select * from kdb_schedule.kdb_schedule;

参数说明

参数描述
schedule_name调度程序的名字。
start_date调度程序的开始时间
repeat_interval调度程序的间隔时间
end_date调度程序的结束时间
comment调度程序的注释信息

删除 Schedule

DBMS_SCHEDULER.DROP_SCHEDULE(
        schedule_name TEXT,
        force BOOLEAN DEFAULT FALSE);
call DBMS_SCHEDULER.DROP_SCHEDULE('schedule1', true);
参数描述
schedule_name调度程序的名字。
force暂不支持,默认值为false。

2.3 创建Job

begin  
 call dbms_scheduler.create_job(job_name         => 'job_01',
                            program_name     => 'prog_01-cs',
                            schedule_name    => 'schedule_01',
                            job_class        => 'routine maintenance',
                            enabled          => true,
                            auto_drop        => true,
                            comments         => 'test job',
                            credentail_name  => null,
                            destination_name => null);
end;

成功创建Job后,查看结果:

select * from kdb_schedule.kdb_schedule_job;
select * from kdb_schedule.kdb_job_action;

参数说明

参数描述
job_namejob的名字。
program_name程序的名字。
schedule_name调度程序的名字。
job_classjob的类型,默认Routine Maintenance。
enabledjob的状态。true启用,false禁用
auto_dropjob完成后自动删除,暂不支持,默认true
commentjob的注释信息
credentail_name暂不支持,默认为NULL
destination_name暂不支持,默认为NULL

四 查看 kdb_job表:

select jobid,jobname,jobenabled,joblastrun,jobnextrun,jobrepeattimes from kdb_job;

日历(设置时间)

参数说明

参数描述
FREQ重复时间的类型。 这里有yearly、monthly、weekly、daily、hourly、minutely
INTERVAL重复的频率,默认值是1。
BYMONTH指定月份。
BYMONTHDAY指定一月中的某一天。
BYHOUR指定一天中的某一个小时。
BYBYMINTUE指定一个小时中的秒一分。
BYSECOND指定一分钟内的某一秒。

具体示例

每天早上10点
FREQ =daily,BYHOUR=10,BYBYMINTUE=0,BYSECOND=0;
每隔7天的早上10点
FREQ =daily,INTERVAL=7,BYHOUR=10,BYBYMINTUE=0,BYSECOND=0;
每年10月1号早上10点
FREQ =yearly,BYMONTH=10,BYMONTHDAY=1,BYHOUR=10,BYBYMINTUE=0,BYSECOND=0;

备注

插件 kdb_schedule 目前是只支持Oracle版KingbaseES,不支持pg版本的。

查看数据库兼容:

show database_mode;

这里出现pg是指postgresql数据库 ,出现oracle是oracle版本的KingbaseES V8R6,一等要注意
pg版本的目前是有这功能的,但是他报错,不支持!不支持!不支持!
报错如下:
1:创建Job时报错;

call dbms_scheduler.create_job(job_name => ‘job_01’,
program_name => ‘prog_01-cs’,
schedule_name => ‘schedule_01’,
job_class => ‘routine maintenance’,
enabled => true,
auto_drop => true,
comments => ‘test job’,
credentail_name => null,
destination_name => null)

错误: 函数 get_next_date(timestamp without time zone, unknown, timestamp without time zone, cstring) 不存在
LINE 2: …bjobid, job_name, cjjclid, enabled, now(), now(), get_next_d…
^
HINT: 没有匹配指定名称和参数类型的函数. 您也许需要增加明确的类型转换.
QUERY: insert into kdb_job(jobid, jobname, jobjclid, jobenabled, jobcreated, jobchanged, jobnextrun, jobrepeattimes, jobdesc, jobdbname)
select subjobid, job_name, cjjclid, enabled, now(), now(), get_next_date(scstart, null, scend, screpeat_interval::cstring), 0, comments, current_database()
from kdb_schedule.kdb_schedule where scname=schedule_name
CONTEXT: 在SQL语句的第37行的PL/pgSQL函数dbms_scheduler.create_job(text,text,text,text,boolean,boolean,text,text,text)

在这里插入图片描述

2:运用dbms_job.submit()函数时报错

call dbms_job.submit(jobid, 'CREATE TABLE T1(A int)', now(), 'Freq=daily;BYHOUR=10;BYMINUTE=10;BYSECOND=10', false, 0, false);

call dbms_job.submit(jobid, ‘CREATE TABLE T1(A int)’, now(), ‘Freq=daily;BYHOUR=10;BYMINUTE=10;BYSECOND=10’, false, 0, false)
错误: 字段 “jobid” 不存在
LINE 1: call dbms_job.submit(jobid, ‘CREATE TABLE T1(A int)’, now(),…
^

在这里插入图片描述

后记

如果本文章有何错误,请您评论中指出,或联系我,我会改正,如果您觉得这篇文章有用,请帮忙一键三连,让更多的人看见,谢谢
作者 yang_z_1 csdn博客地址: https://blog.csdn.net/yang_z_1?type=blog

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/51739.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(四) 共享模型之管程【Monitor 概念】

一、Java 对象头(P75) 二、原理之 Monitor(锁) Monitor 被翻译为监视器或管程。 每个 Java 对象都可以关联一个 Monitor 对象,如果使用 synchronized 给对象上锁(重量级)之后,该对象头的 Mark Word 中就被设…

Cookie Session JSP

这里写目录标题1 Cookie1.1 会话介绍1.2 Cookie 介绍1.3 Cookie 属性1.4 Cookie 方法1.4.1 Cookie 添加和获取1.5 Cookie 的使用1.6 Cookie 的细节2 Session2.1 HttpSession 介绍2.2 HttpSession 常用方法2.3 HttpSession 获取2.4 HttpSession 的使用2.5 HttpSession 的细节3 J…

高压功率放大器在超声驻波声场的听声器中的应用

实验名称:高压功率放大器在超声驻波声场的听声器声压测量中的应用 研究方向:3D打印 测试目的:利用听声器对声场的测量是一种基于对声压的采集,利用CPB分析及FFT分析处理,得到涉入点声压的方法。介于听声器采集信号为时…

单字段纵向分栏

【问题】 Hi, I’m trying to display BIRT report Data (only one field) first vertically till the page ends and then it should continue in the next column of the same page. For example as A E I B F J C G D HBy using list element I’m able to get the data …

opencv上设置摄像头曝光参数的经验

实际应用中我们需要调整摄像头的参数比如曝光,由于opencv的后端是一般编译是支撑多种插件,详细信息请参考OpenCV: Video I/O with OpenCV Overview,这里引用里面的图: 对于VideoCaputure,后端有ffmpge,V4L&…

SpringMVC入门

SpringMVC 一、SpringMVC简介 1、什么是MVC MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M:Model,模型层,指工程中的JavaBean,作用是处理数据 JavaBean分为两类: 一类称为实体类Bea…

软件工程SSM毕设项目 - 基于SSM的中药店商城网站(含源码+论文)

文章目录1 项目简介2 实现效果2.1 界面展示3 设计方案3.1 概述3.2 系统流程3.3 系统结构设计4 项目获取1 项目简介 Hi,各位同学好呀,这里是M学姐! 今天向大家分享一个今年(2022)最新完成的毕业设计项目作品,【基于SSM的中药店商…

微信小程序能给花店带来哪些作用_分享花店微信小程序开发优势

在开发过小程序的线下实体店铺中,有不少花店。开发了小程序的花店纷纷表示:"小程序提供了非常大的帮助,现在越来越离不开小程序了"。那么,小程序能给花店带来哪些帮助? 1、提升店铺曝光半径挖掘更多流量 对…

哈希表题目:键盘行

文章目录题目标题和出处难度题目描述要求示例数据范围解法思路和算法代码复杂度分析题目 标题和出处 标题:键盘行 出处:500. 键盘行 难度 2 级 题目描述 要求 给你一个字符串数组 words\texttt{words}words,只返回可以使用在美式键盘…

Scala集合习题Ⅱ

行是知之始,知是行之成。——陶行知 目录 练习题 3 :求出各城市的平均温度 练习题4:请用scala得出以下的结果 练习题 3 :求出各城市的平均温度 val d1 Array(("bj", 28.1), ("sh", 28.7), ("gz"…

RK3588平台开发系列讲解(PWM篇)PWM及backlight的使用方法

平台内核版本安卓版本RK3588Linux 5.10Android12🚀返回专栏总目录 文章目录 一、PWM驱动二、DTS配置三、PWM在user space的使用四、PWM在背光中的使用4.1 Backlight DTS4.2 PWM Backlight 调试沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍PWM以及backli…

SpringBoot结合Quartz实现定时任务

《从零打造项目》系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建SpringBoot集成Mybatis项目实操SpringBoot集成MybatisPlus项目实操SpringBoot集成Spring Data JPA项目实操 数据库变更管理 数据库变更管理:Liquibase…

深入讲解Netty那些事儿之从内核角度看IO模型(上)

我们都知道Netty是一个高性能异步事件驱动的网络框架。 它的设计异常优雅简洁,扩展性高,稳定性强。拥有非常详细完整的用户文档。 同时内置了很多非常有用的模块基本上做到了开箱即用,用户只需要编写短短几行代码,就可以快速构建…

8、python中的模块和包

文章目录模块模块导入的方式直接导入部分导入import module 和from module import *的区别模块的其他信息_ _ name _ _ 的特殊使用模块的分类包从包中导入模块的方式模块 模块就是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块 模块是非常简单的Python文…

pandas交叉表与透视表pd.crosstab()和pd.pivot_table()函数详解

一、交叉表 交叉表:用于计算一列数据对于另外一列数据的分组个数(用于统计分组频率的特殊透视表),pd.crosstab(value1, value2)pandas.crosstab(index, columns, valuesNone, rownamesNone, colnamesNone, aggfuncNone, marginsFalse, margins_nameAll,…

【虚幻引擎】UE4/UE5 动画蓝图,混合空间,目标偏移,动画蒙太奇之间的联系

一、UE动画介绍 虚幻引擎在为角色设置移动行走时,为了更好的调节和控制人物的相关动画,设置了一系列的跟人物相关的动画,其中包括一维混合空间,二维混合空间,动画蒙太奇,目标偏移等,动画蓝图的出…

Day16--加入购物车-动态设置tabBar的数组徽标

问题1: ①:刚开始 ②:点击购物车的图标后,跳转到cart页面发现,并没有徽标在tabbar上: 提纲挈领: 我的操作: 1》把 Store 中的 total 映射到 cart.vue 中使用: 2》在页面…

Java ArrayLIst与顺序表

什么是集合类? Java当中的集合类,其实就是封装号的数据结构 原始的数据结构——>Java当中封装成的集合对应的那个原始的数据结构——>用Java封装的集合对应的。 集合类所在的包:java.util这个包底下 顺序表的底层是一个数组&#xff0…

Flutter状态管理

前言 状态管理是什么?简单的来说,就是当某个状态发生变化的时候,告知该状态的监听者,让状态所监听的属性随之而改变,达到UI层随着数据层变化而变化的效果。在Flutter中的状态(State)是一个组件的UI数据模型&#xff0…

【MySQL 读写分离】Sharding JDBC + Spring boot 实现数据库读写分离的登录 Demo

上篇文章我们搭建了 MySQL 数据库主从复制集群 MySQL 搭建主从复制集群~~~ 本篇文章我们利用搭建好的主从复制集群,使用 SpringBoot 结合 Sharding-JDBC 搭建一个小的 登录 Demo,测试实现数据库的读写分离 项目源码地址: https://gitee.com/l…