【本文正在参与炫“库”行动-人大金仓有奖征文】
活动链接:https://marketing.csdn.net/p/98bd30353e7cb998b6070a89e8b91edb
KingbaseES 数据库提供了 kdb_schedule 扩展,使得用户能通过类似oracle job 的方式进行job调用。kdb_schedule 提供了三个Schema :dbms_job and dbms_scheduler 分别类似于 oracle 的 dbms_job 和 dbms_schedule 包,数据字典信息放于kdb_schedule 模式下。
一、配置系统参数
V8R6C3 以及之前的版本要运行job,必须先运行 kdb_schedule 操作系统进程,通过kdb_schedule 连接数据库执行。新版本通过library 方式:
shared_preload_libraries = 'kdb_schedule , ......'
alter system set job_queue_processes=5;
注意事项:
1、job_queue_processes 必须大于0 , 为0 表示不开启job
2、kdb_schedule 必须放在 share
二、通过dbms_job管理Job
1、创建Job
create table d_test(tid varchar2(64), insdate date);
create or replace procedure p_test() as
begin
insert into d_test values(to_char(sysdate, 'yyyymmddhh24miss'), sysdate);
commit;
end;
/
DECLARE
v_jobid NUMBER;
BEGIN
dbms_job.submit(v_jobid, 'call p_test()', now(), 'Freq=Minutely;Interval=1');
COMMIT;
END;
/
test=# call dbms_job.instance(1, 'user=system dbname=test port=54321 password=P123');
CALL
注意:dbms_job.instance 的 1 表示job_id,这是为特定的job_id 设置连接串。
2、查询Job
test=# select jobid,jobname,jobenabled,joblastrun,jobnextrun,jobrepeattimes from kdb_job;
jobid | jobname | jobenabled | joblastrun | jobnextrun | jobrepeattimes
-------+---------------------------------------------+------------+------------+-------------------------------+----------------
1 | internal_job1:2021-06-22 08:11:39.797681+08 | f | | 2021-06-22 08:11:39.797681+08 | 0
可以看到,J