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_name job的名字。
program_name 程序的名字。
schedule_name 调度程序的名字。
job_class job的类型,默认Routine Maintenance。
enabled job的状态。true启用,false禁用
auto_drop job完成后自动删除,暂不支持,默认true
comment job的注释信息
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

KingbaseES数据库 kdb_schedule 自动定时任务相关推荐

  1. 使用Navicat Premium 12进行数据库定期自动备份(定时任务)

    使用Navicat Premium 12进行数据库定期自动备份(定时任务) 上一篇我们刚刚安装好破解版的navicat,这一篇我们就做一个数据库的定时备份任务吧 首先我们连接数据库,这里我使用mysq ...

  2. KingbaseES数据库对象管理工具

    目录 1. 简介 2. 启动数据库对象管理工具 3. 管理和配置数据库服务器 3.1. 实例管理 3.2. 数据库管理 3.3. 模式管理 4. 对象管理 5. 安全管理 5.1. 用户管理 5.2. ...

  3. KingbaseES数据库概念(一)--数据库简介

    1. 金仓数据库的发展历史 KingbaseES数据库是人大金仓自主研发的一种通用关系型数据库,产品融合了人大金仓在数据库领域几十年的产品研发和企业级应用经验,可满足各行业用户多种场景的数据处理需求. ...

  4. 金仓数据库KingbaseES数据库开发指南(2. 开发基础)

    目录 2.1. 设计基础 ¶ 2.1.1. 数据库部署模式 ¶ 2.1.2. 数据库环境规划 ¶ 2.1.3. 可扩展性设计 ¶ 2.1.4. 安全设计 ¶ 2.1.5. 可移植性设计 ¶ 2.1.6 ...

  5. springboot整合quartz,实现数据库方式执行定时任务

    springboot整合quartz,实现数据库方式执行定时任务.把定时任务信息存进数据库,项目启动后自动执行定时任务. 1.引入依赖包: <dependency><groupId& ...

  6. 怎样更直观的查看KingbaseES数据库日志

    数据库日志相关参数:默认设置 log_destination = 'stderr' # Valid values are combinations of# stderr, csvlog, syslog ...

  7. 金仓数据库KingbaseES数据库概念(四)--事务

    目录 1. 事务的概念 2. 事务的特性 3. 数据库对事务的管理 4. 并发控制 4.1. 事务隔离 4.2. 显式锁定 同大多数的商业数据库一样,KingbaseES数据库也引入了事务的概念.本章 ...

  8. KingbaseES数据库概念(二)--数据访问

    目录 1. SQL 1.1. SQL简介 1.2. SQL语句概述 1.3. 优化器概述 1.4. SQL处理概述 2. PLSQL 2.1. 服务器端编程简介 2.2. PL/SQL概述 2.3.  ...

  9. 使用SQL Server维护计划实现数据库定时自动备份

    在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员每天守到晚上1点去备份数据库.要实现数据库的定 ...

最新文章

  1. js日期格式化Date
  2. 计算机动画课程设计,计算机动画课程设计.doc
  3. DBGridEh使用指南
  4. Java并发编程-ThreadPool线程池
  5. python面向对象是什么?面试技巧(三分钟读懂)
  6. python-类继承多态
  7. Linux之date命
  8. HBase Region 自动拆分策略
  9. 【php】基础学习4
  10. Linux - 虚拟网络设备- TUN,TAP,ip tunnel
  11. kali linux 安装驱动安装教程,kali linux安装NVIDA显卡驱动教程
  12. macOS Monterey 12.0 Beta版 With Clover 5136 and OC 0.7.0 and PE 三EFI分区原版黑苹果镜像
  13. 如何更改PDF文件中的字体?
  14. 轻量级Kubernetes之k3s:10:ContainerCreating状态的解决方法
  15. mac 重置 android手机系统,Mac OS X下Android系统华为手机无法连接问题之解决方案
  16. 主引导记录(MBR)
  17. 无穷小量究竟是否为零
  18. AutoLayout(自动布局)入门
  19. Compator/Comparable的比较
  20. 【ADNI】数据预处理(1)SPM,CAT12;数据集

热门文章

  1. 阿贡国家实验室:量子中继器及其在量子网络中的作用
  2. Apriori算法手动实现
  3. Linux下推荐的常用应用程序列表
  4. 如何检测真实的甲醛数值?装修好物剁手推荐!
  5. android 使用极光推送实现单点登录
  6. 【软件之道】Adobe Lightroom CC V6.9 中文版下载安装教程
  7. 中南民族大学计算机技术专业,中南民族大学计算机科学学院计算机科学与技术专业简介...
  8. 中国首届白酒行业峰会深度诊脉,致远协同解决方案赋能弯道超车
  9. ThinkSNS+ PHP开发概述
  10. 【unity实践demo】unity-2D游戏官方案例-