MogDB sql_compatibility A 模式下定时任务的管理
[toc]
MogDB 的sql_compatibility
为A 模式下,创建定时任务。
在 A 模式下,是通过 pkg_service
高级包的相关借口函数对任务进行管理。
注意:其中sql_compatibility
为 A 模式,表示同 O 数据库兼容,B 表示同 MySQL 数据库兼容,C 表示同TD 数据库兼容,PG表示同 POSTGRES 数据库兼容。在MogDB 中,该参数只能是确定的一个值,要么始终设置为A,要么始终设置为B,请勿随意改动,可能导致数据库行为不一致。
下面以 在 A 模式下,实现 p_cre_view
存储过程 每天23点定时运行。
ERROR: permission denied for schema pkg_service
DETAIL: N/A
CONTEXT: referenced column: job_submit
授权:
1 | mesdb=# grant usage on schema pkg_service to mes; |
1 | mesdb=> show sql_compatibility; |
1 | mesdb=>select pkg_service.job_submit(2,'call p_cre_view(sysdate)',sysdate,'trunc(sysdate+1)+(23/24)'); |
注意:
其中 2 表示 作业号,如果传入 null,会自动产生作业号,如果要指定,不能重复。如果重复会报错如下:
ERROR: duplicate key value violates unique constraint “pg_job_id_index”
DETAIL: Key (job_id)=(2) already exists.
CONTEXT: referenced column: job_submit
call p_cre_view(sysdate)
表示要执行的SQL语句;支持 一个或者多个DML
语句,’匿名块’,‘调用存储过程的语句’或3种混合的场景
sysdate
:下次作业运行时间,默认为当前系统时间(sysdate),如果是过去的时间,在提交作业时表示立即执行。
trunc(sysdate+1)+(23/24)
:用来计算下一次作业运行时间的时间表达式,可以是 interval 表达式,也可以是 sysdate 加上一个numeric值,比如sysdate+1/24,如果为空或者字符串‘null’,表示只执行一次,执行后job状态 status 变成d,不再执行。
1 | mesdb=> select * from pg_job where job_id=2; |
1 | SELECT PKG_SERVICE.JOB_UPDATE(1,CONTENT => null, NEXT_TIME => null, INTERVAL_TIME => 'trunc(sysdate+1)+(23/24)'); |
1 | select pj.job_id ,what,log_user ,dbname,job_status ,start_date ,next_run_date ,"interval" ,last_start_date ,last_end_date ,last_suc_date ,this_run_date |
1 | SELECT PKG_SERVICE.JOB_FINISH(2,true); |
1 | SELECT PKG_SERVICE.JOB_FINISH(2,false); |
1 | select pkg_service.job_cancel(222) |
原文作者: Hi.MogDB
原文链接: https://hi.mogdb.org/posts/1f4dffe2/
许可协议: 知识共享署名-非商业性使用 4.0 国际许可协议