GaussDB-DBE_SCHEDULER
接口介绍
高级功能包DBE_SCHEDULER支持通过调度(schedule)和程序(program)更加灵活地创建定时任务。支持的所有接口请见表1。
NOTICE:
DBE_SCHEDULER支持CN节点间同步定时任务,不支持不同CN节点间创建同名任务。
由于505.0.0之前版本未实现同步功能,所有同步接口都只针对505.0.0及之后版本的数据进行同步操作。
升级前会对旧版本CN是否存在同名job进行检查,如果旧版本CN间同名数据库下存在名称相同、且job创建节点不相同的job,报错提示用户删除job后尝试重新升级。
-
DBE_SCHEDULER.CREATE_JOB函数原型可以分为4种:
| ``` -- 内联调度和程序的定时任务 DBE_SCHEDULER.CREATE_JOB( job_name TEXT, job_type TEXT, job_action TEXT, number_of_arguments INTEGER DEFAULT 0, start_date TIMESTAMP WITH TIME ZONE DEFAULT NULL, repeat_interval TEXT DEFAULT NULL, end_date TIMESTAMP WITH TIME ZONE DEFAULT NULL, job_class TEXT DEFAULT 'DEFAULT_JOB_CLASS', enabled BOOLEAN DEFAULT FALSE, auto_drop BOOLEAN DEFAULT TRUE, comments TEXT DEFAULT NULL, credential_name TEXT DEFAULT NULL, destination_name TEXT DEFAULT NULL ) -- 引用创建好的调度和程序的定时任务 DBE_SCHEDULER.CREATE_JOB( job_name TEXT, program_name TEXT, schedule_name TEXT, job_class TEXT DEFAULT 'DEFAULT_JOB_CLASS', enabled BOOLEAN DEFAULT FALSE, auto_drop BOOLEAN DEFAULT TRUE, comments TEXT DEFAULT NULL, job_style TEXT DEFAULT 'REGULAR', credential_name TEXT DEFAULT NULL, destination_name TEXT DEFAULT NULL ) -- 引用创建好的程序,内联调度的定时任务 DBE_SCHEDULER.CREATE_JOB( job_name text, program_name TEXT, start_date TIMESTAMP WITH TIME ZONE DEFAULT NULL, repeat_interval TEXT DEFAULT NULL, end_date TIMESTAMP WITH TIME ZONE DEFAULT NULL, job_class TEXT DEFAULT 'DEFAULT_JOB_CLASS', enabled BOOLEAN DEFAULT FALSE, auto_drop BOOLEAN DEFAULT TRUE, comments TEXT DEFAULT NULL, job_style TEXT DEFAULT 'REGULAR', credential_name TEXT DEFAULT NULL, destination_name TEXT DEFAULT NULL ) -- 引用创建好的调度,内联程序的定时任务 DBE_SCHEDULER.CREATE_JOB( job_name TEXT, schedule_name TEXT, job_type TEXT, job_action TEXT, number_of_arguments INTEGER DEFAULT 0, job_class TEXT DEFAULT 'DEFAULT_JOB_CLASS', enabled BOOLEAN DEFAULT FALSE, auto_drop BOOLEAN DEFAULT TRUE, comments TEXT DEFAULT NULL, credential_name TEXT DEFAULT NULL, destination_name TEXT DEFAULT NULL )
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |  利用DBE_SCHEDULER创建的定时任务不会与DBE_TASK中的定时任务相冲突。 DBE_SCHEDULER创建的定时任务会生成对应的job_id,但是在使用过程中这个id并没有实际意义。 对于create类型接口,不做入参类型合法性校验,创建成功不代表会执行成功,通过系统表pg_job查询当前任务的执行状态。 | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :------------------ | :----------------------- | :---- | :----- | :----------------------------------------------------------------------------------------------------- | | job_name | TEXT | IN | 否 | 定时任务名称。 | | job_type | TEXT | IN | 否 | 定时任务内联程序类型,可用类型为:- 'PLSQL_BLOCK':匿名存储过程快。 - 'STORED_PROCEDURE':保存的存储过程。 - 'EXTERNAL_SCRIPT':外部脚本 | | job_action | TEXT | IN | 否 | 定时任务内联程序执行内容。 | | number_of_arguments | INTEGER | IN | 否 | 定时任务内联程序参数个数。 | | program_name | TEXT | IN | 否 | 定时任务引用程序名称。 | | start_date | TIMESTAMP WITH TIME ZONE | IN | 是 | 定时任务内联调度起始时间。 | | repeat_interval | TEXT | IN | 是 | 定时任务内联调度任务周期。 | | end_date | TIMESTAMP WITH TIME ZONE | IN | 是 | 定时任务内联调度失效时间。 | | schedule_name | TEXT | IN | 否 | 定时任务引用调度名称。 | | job_class | TEXT | IN | 否 | 定时任务类名。 | | enabled | BOOLEAN | IN | 否 | 定时任务启用状态。 | | auto_drop | BOOLEAN | IN | 否 | 定时任务自动删除。 | | comments | TEXT | IN | 是 | 备注 | | job_style | TEXT | IN | 否 | 定时任务行为模式,仅支持‘REGULAR'。 | | credential_name | TEXT | IN | 是 | 定时任务证书名。 | | destination_name | TEXT | IN | 是 | 定时任务目标名,当前只支持值'CCN'(不区分大小写),指定destination_name为CCN的任务只在central coordinator执行。否则按原有逻辑处理。 | 示例: | ``` gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'STORED_PROCEDURE', 'select pg_sleep(1);', 3, false, 'test'); create_program ---------------- (1 row) gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule1', NULL, 'sysdate', NULL, 'test'); create_schedule ----------------- (1 row) gaussdb=# CALL DBE_SCHEDULER.create_job(job_name=>'job1', program_name=>'program1', schedule_name=>'schedule1'); create_job ------------ (1 row) gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR'); drop_job ---------- (1 row) gaussdb=# CALL DBE_SCHEDULER.drop_schedule('schedule1'); drop_schedule --------------- (1 row) gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false); drop_program -------------- (1 row) ``` | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | NOTICE: 创建'EXTERNAL_SCRIPT'类型的定时任务需要管理员赋予相关的权限和证书,且需要数据库启动用户对该外部脚本有读取权限才可以正常生效。
-
DBE_SCHEDULER.DROP_JOB函数原型为:
| ``` DBE_SCHEDULER.drop_job( job_name text, force boolean default false, defer boolean default false, commit_semantics text default 'STOP_ON_FIRST_ERROR' )
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |  DBE_SCHEDULER.DROP_JOB可以指定一个或多个任务,也可以指定任务类进行定时任务删除。 | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :--------------- | :------ | :---- | :----- | :----------------------------------------------------------------------------------------------------------------------------- | | job_name | TEXT | IN | 否 | 定时任务或定时任务类名称,可以指定一个或多个,当指定多个定时任务时需要利用逗号隔开。 | | force | BOOLEAN | IN | 否 | 删除定时任务行为标记位:- TRUE:尝试先停止当前定时任务,再进行删除。 - FALSE:如果定时任务正在运行会删除失败。 | | defer | BOOLEAN | IN | 否 | 删除定时任务行为标记位:- TRUE:允许定时任务完成后再进行删除。 - FALSE:不允许定时任务继续执行,尝试进行删除。 | | commit_semantics | TEXT | IN | 否 | 提交规则:- 'STOP_ON_FIRST_ERROR':在第一个报错之前的删除操作会提交。 - 'TRANSACTIONAL':事物级提交,报错前的删除操作会回滚。 - 'ABSORB_ERRORS':尝试越过报错,将成功的删除操作提交。 | 示例: | ``` gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'STORED_PROCEDURE', 'select pg_sleep(1);', 3, false, 'test'); create_program ---------------- (1 row) gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule1', NULL, 'sysdate', NULL, 'test'); create_schedule ----------------- (1 row) gaussdb=# CALL DBE_SCHEDULER.create_job(job_name=>'job1', program_name=>'program1', schedule_name=>'schedule1'); create_job ------------ (1 row) gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR'); drop_job ---------- (1 row) gaussdb=# CALL DBE_SCHEDULER.drop_schedule('schedule1'); drop_schedule --------------- (1 row) gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false); drop_program -------------- (1 row) ``` | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | NOTICE: commit_semantic中的'TRANSACTIONAL'选项必须在force为false的情况下才会生效。
-
DBE_SCHEDULER.DROP_SINGLE_JOB函数原型为:
| ``` DBE_SCHEDULER.drop_single_job( job_name text, force boolean default false, defer boolean default false )
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :------- | :------ | :---- | :----- | :----------------------------------------------------------------- | | job_name | TEXT | IN | 否 | 定时任务或定时任务类名称。 | | force | BOOLEAN | IN | 否 | 删除定时任务行为标记位:- TRUE:尝试先停止当前定时任务,再进行删除。 - FALSE:如果定时任务正在运行会删除失败。 | | defer | BOOLEAN | IN | 否 | 删除定时任务行为标记位:- TRUE:允许定时任务完成后再进行删除。 - FALSE:不允许定时任务继续执行,尝试进行删除。 | 示例:gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'STORED_PROCEDURE', 'select pg_sleep(1);', 0, false, 'test'); create_program
(1 row)
gaussdb=# CALL DBE_SCHEDULER.create_job('job1', 'program1', '2021-07-20', 'interval ''3 minute''', '2121-07-20', 'DEFAULT_JOB_CLASS', false, false,'test', 'style', NULL, NULL); create_job
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_single_job('job1', false, false); drop_single_job
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false); drop_program
(1 row)
-
DBE_SCHEDULER.SET_ATTRIBUTE函数4种原型为:
| ``` DBE_SCHEDULER.set_attribute( name text, attribute text, value boolean ) DBE_SCHEDULER.set_attribute( name text, attribute text, value text ) DBE_SCHEDULER.set_attribute( name text, attribute text, value timestamp ) DBE_SCHEDULER.set_attribute( name text, attribute text, value timestamp with time zone ) DBE_SCHEDULER.set_attribute( name text, attribute text, value text, value2 text default NULL )
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |  name在这里可以指定任何DBE_SCHEDULER内部的对象。 | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :-------- | :--------------------------------------------------- | :---- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | name | TEXT | IN | 否 | 对象名。 | | attribute | TEXT | IN | 否 | 属性名。 | | value | BOOLEAN/DATE/TIMESTAMP/TIMESTAMP WITH TIME ZONE/TEXT | IN | 否 | 属性值,可选属性如下:- 定时任务相关:job_type,job_action,number_of_arguments,start_date,repeat_interval,end_date,ob_class,enabled,auto_drop,comments,credential_name,destination_name,program_name,schedule_name,job_style。 - 程序相关:program_action,program_type,number_of_arguments,comments。 - 调度相关:start_date,repeat_interval,end_date,comments。 | | value2 | TEXT | IN | 是 | 额外属性值。保留参数位,目前尚不支持拥有额外属性值的目标属性。 | 示例: | ``` gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'STORED_PROCEDURE', 'select pg_sleep(1);', 3, false, 'test'); create_program ---------------- (1 row) gaussdb=# CALL DBE_SCHEDULER.set_attribute('program1', 'number_of_arguments', 0); set_attribute --------------- (1 row) gaussdb=# CALL DBE_SCHEDULER.set_attribute('program1', 'program_type', 'STORED_PROCEDURE'); set_attribute --------------- (1 row) gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false); drop_program -------------- (1 row) ``` | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | NOTICE: 不要使用DBE_SCHEDULER.SET_ATTRIBUTE来将参数置空。 对象名不能通过DBE_SCHEDULER.SET_ATTRIBUTE来更改。 内联对象不能通过DBE_SCHEDULER.SET_ATTRIBUTE来更改。
-
DBE_SCHEDULER.RUN_JOB函数原型为:
| ``` DBE_SCHEDULER.run_job( job_name text, use_current_session boolean default true )
| ----------------------------------------------------------------------------------------------------- |  DBE_SCHEDULER.RUN_JOB主要用于立即运行定时作业,独立于定时任务本身的调度,甚至可以同时运行。 | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :------------------ | :------ | :---- | :----- | :------------------------------------------------------------------------------ | | job_name | TEXT | IN | 否 | 定时任务名称,可以指定一个或多个,当指定多个定时任务时需要利用逗号隔开。 | | use_current_session | BOOLEAN | IN | 否 | 运行定时任务标志位:- TRUE:使用当前会话运行,主要用于查看定时任务是否可以正常运行。 - FALSE:后台拉起定时任务,运行结果会打印到日志中。 | 示例: | ``` gaussdb=# SELECT dbe_scheduler.create_job('job1','PLSQL_BLOCK','begin insert into test1 values(12); end;',0,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null); create_job ------------ (1 row) gaussdb=# CALL DBE_SCHEDULER.run_job('job1', false); run_job --------- (1 row) gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR'); drop_job ---------- (1 row) ``` | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | NOTICE: use_current_session目前只作用于job_type为'EXTERNAL_SCRIPT'的定时任务上。
-
DBE_SCHEDULER.RUN_BACKEND_JOB函数原型为:
| ``` DBE_SCHEDULER.run_backend_job( job_name text )
| ------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :------- | :--- | :---- | :----- | :------ | | job_name | text | IN | 否 | 定时任务名称。 | 示例:gaussdb=# SELECT dbe_scheduler.create_job('job1','PLSQL_BLOCK','begin insert into test1 values(12); end;',0,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null); create_job
(1 row)
gaussdb=# CALL DBE_SCHEDULER.run_backend_job('job1'); run_backend_job
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR'); drop_job
(1 row)
-
DBE_SCHEDULER.RUN_FOREGROUND_JOB
仅支持运行external类型任务。
返回值:text。
DBE_SCHEDULER.RUN_FOREGROUND_JOB函数原型为:
| ``` DBE_SCHEDULER.run_foreground_job( job_name text )return text
| --------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :------- | :--- | :---- | :----- | :------ | | job_name | TEXT | IN | 否 | 定时任务名称。 | 示例:gaussdb=# create user test1 identified by ''; NOTICE: The encrypted password contains MD5 ciphertext, which is not secure. CREATE ROLE gaussdb=# select DBE_SCHEDULER.create_credential('cre_1', 'test1', ''); create_credential
(1 row)
gaussdb=# select DBE_SCHEDULER.create_job(job_name=>'job1', job_type=>'EXTERNAL_SCRIPT', job_action=>'/usr/bin/pwd', enabled=>true, auto_drop=>false, credential_name => 'cre_1'); create_job
(1 row)
gaussdb=# CALL DBE_SCHEDULER.run_foreground_job('job1'); run_foreground_job
Host key verification failed.\r+
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR'); drop_job
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_credential('cre_1', false); drop_credential
(1 row)
gaussdb=# drop user test1; DROP ROLE
-
DBE_SCHEDULER.STOP_JOB函数原型为:
| ``` DBE_SCHEDULER.stop_job( job_name text, force boolean default false, commit_semantics text default 'STOP_ON_FIRST_ERROR' )
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :--------------- | :------ | :---- | :----- | :-------------------------------------------------------------------------------------- | | job_name | TEXT | IN | 否 | 定时任务或定时任务类名称,可以指定一个或多个,当指定多个定时任务时需要利用逗号隔开。 | | force | BOOLEAN | IN | 否 | 删除定时任务行为标记位:- TRUE:调度器会发送终止信号立即结束任务线程。 - FALSE:调度器会尝试利用打断信号终止定时任务线程。 | | commit_semantics | TEXT | IN | 否 | 提交规则:- 'STOP_ON_FIRST_ERROR':在第一个报错之前的打断操作会提交。 - 'ABSORB_ERRORS':尝试越过报错,将成功的打断操作提交。 | 示例:gaussdb=# SELECT dbe_scheduler.create_job('job1','PLSQL_BLOCK','begin insert into test1 values(12); end;',0,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null); create_job
(1 row)
gaussdb=# CALL DBE_SCHEDULER.stop_job('job1', true, 'STOP_ON_FIRST_ERROR'); stop_job
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR'); drop_job
(1 row)
-
DBE_SCHEDULER.STOP_SINGLE_JOB函数原型为:
| ``` DBE_SCHEDULER.stop_single_job( job_name text, force boolean default false )
| -------------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :------- | :------ | :---- | :----- | :----------------------------------------------------------------------- | | job_name | TEXT | IN | 否 | 定时任务或定时任务类名称 | | force | BOOLEAN | IN | 否 | 删除定时任务行为标记位:- TRUE:调度器会发送终止信号立即结束任务线程。 - FALSE:调度器会尝试利用打断信号终止定时任务线程。 | 示例:gaussdb=# SELECT dbe_scheduler.create_job('job1','PLSQL_BLOCK','begin insert into test1 values(12); end;',0,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null); create_job
(1 row)
gaussdb=# CALL DBE_SCHEDULER.stop_single_job('job1', true); stop_single_job
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR'); drop_job
(1 row)
-
DBE_SCHEDULER.GENERATE_JOB_NAME
DBE_SCHEDULER.GENERATE_JOB_NAME函数原型为:
| ``` DBE_SCHEDULER.generate_job_name( prefix text default 'JOB$_' )return text
| -------------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :----- | :--- | :---- | :----- | :------------------------------------------------------------------ | | prefix | TEXT | IN | 否 | 生成名称的前缀,默认为'JOB$_',反复执行生成的定时任务名为:job$_1, job$_2, job$_3 ... | 示例:gaussdb=# CALL DBE_SCHEDULER.generate_job_name(); generate_job_name
JOB$_1 (1 row)
gaussdb=# CALL DBE_SCHEDULER.generate_job_name(); generate_job_name
JOB$_2 (1 row)
gaussdb=# CALL DBE_SCHEDULER.generate_job_name('job'); generate_job_name
job3 (1 row)
gaussdb=# CALL DBE_SCHEDULER.generate_job_name('job'); generate_job_name
job4 (1 row)
NOTICE: 首次执行DBE_SCHEDULER.GENERATE_JOB_NAME会在public下创建一个临时序列用于保存当前名称的序号。由于普通用户没有在public下create权限,因此如果普通用户为当前db下第一次调用该函数,会失败,需要授权该普通用户在public下的create权限,或者使用有该权限的用户调用该接口以创建临时序列。
-
DBE_SCHEDULER.CREATE_PROGRAM函数原型为:
| ``` DBE_SCHEDULER.create_program( program_name text, program_type text, program_action text, number_of_arguments integer default 0, enabled boolean default false, comments text default NULL )
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :------------------ | :------ | :---- | :----- | :------------------------------------------------------------------------------------------------ | | program_name | TEXT | IN | 否 | 程序名称。 | | program_type | TEXT | IN | 否 | 程序类型,可用类型为:- 'PLSQL_BLOCK':匿名存储过程快。 - 'STORED_PROCEDURE':保存的存储过程。 - 'EXTERNAL_SCRIPT':外部脚本。 | | program_action | TEXT | IN | 否 | 程序操作。 | | number_of_arguments | INTEGER | IN | 否 | 程序采用的参数数量。 | | enabled | BOOLEAN | IN | 否 | 程序启用状态。 | | comments | TEXT | IN | 是 | 备注 | 示例:gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'STORED_PROCEDURE', 'select pg_sleep(1);', 3, false, 'test'); create_program
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false); drop_program
(1 row)
-
DBE_SCHEDULER.DEFINE_PROGRAM_ARGUMENT
修正带默认值default_value字段的接口默认转换成小写行为,对字符大小写做出区分。
DBE_SCHEDULER.DEFINE_PROGRAM_ARGUMENT函数原型为:
| ``` DBE_SCHEDULER.define_program_argument( program_name text, argument_position integer, argument_name text default NULL, argument_type text, out_argument boolean default false ) -- 带有默认值 -- DBE_SCHEDULER.define_program_argument( program_name text, argument_position integer, argument_name text default NULL, argument_type text, default_value text, out_argument boolean default false )
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :---------------- | :------ | :---- | :----- | :---- | | program_name | TEXT | IN | 否 | 程序名称。 | | argument_position | INTEGER | IN | 否 | 参数位置。 | | argument_name | TEXT | IN | 否 | 参数名称。 | | argument_type | TEXT | IN | 否 | 参数类型。 | | default_value | TEXT | IN | 否 | 默认值。 | | out_argument | BOOLEAN | IN | 否 | 预留参数。 | 示例:gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'STORED_PROCEDURE', 'select pg_sleep(1);', 2, false, 'test'); create_program
(1 row)
gaussdb=# CALL DBE_SCHEDULER.define_program_argument('program1', 1, 'pa1', 'type1', false); define_program_argument
(1 row)
gaussdb=# CALL DBE_SCHEDULER.define_program_argument('program1', 1, 'pa1', 'type1', 'value1', false); define_program_argument
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false); drop_program
(1 row)
-
DBE_SCHEDULER.DROP_PROGRAM函数原型为:
| ``` DBE_SCHEDULER.drop_program( program_name text, force boolean default false )
| --------------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :----------- | :------ | :---- | :----- | :------------------------------------------------------------------------ | | program_name | TEXT | IN | 否 | 程序名称。 | | force | BOOLEAN | IN | 否 | 删除程序行为标记位:- TRUE:在删除程序之前,将禁用应用该程序的所有作业。 - FALSE:该程序不能被任何作业引用,否则会发送错误。 | 示例:gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'STORED_PROCEDURE', 'select pg_sleep(1);', 2, false, 'test'); create_program
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false); drop_program
(1 row)
-
DBE_SCHEDULER.DROP_SINGLE_PROGRAM
DBE_SCHEDULER.DROP_SINGLE_PROGRAM函数原型为:
| ``` DBE_SCHEDULER.drop_single_program( program_name text, force boolean default false )
| ---------------------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :----------- | :------ | :---- | :----- | :------------------------------------------------------------------------ | | program_name | TEXT | IN | 否 | 程序名称。 | | force | BOOLEAN | IN | 否 | 删除程序行为标记位:- TRUE:在删除程序之前,将禁用应用该程序的所有作业。 - FALSE:该程序不能被任何作业引用,否则会发送错误。 | 示例:gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'STORED_PROCEDURE', 'select pg_sleep(1);', 2, false, 'test'); create_program
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_single_program('program1', false); drop_single_program
(1 row)
-
DBE_SCHEDULER.SET_JOB_ARGUMENT_VALUE
设置定时任务参数值。argument_value字段支持赋空入参。仅任务被同步时同步操作。
DBE_SCHEDULER.SET_JOB_ARGUMENT_VALUE函数原型为:
| ``` DBE_SCHEDULER.set_job_argument_value( job_name text, argument_position integer, argument_value text ) DBE_SCHEDULER.set_job_argument_value( job_name text, argument_name text, argument_value text )
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :---------------- | :------ | :---- | :----- | :------ | | job_name | TEXT | IN | 否 | 定时任务名称。 | | argument_position | INTEGER | IN | 否 | 参数位置。 | | argument_name | TEXT | IN | 是 | 参数名称。 | | argument_value | TEXT | IN | 是 | 参数值。 | 示例:gaussdb=# CALL dbe_scheduler.create_job('job1','EXTERNAL_SCRIPT','begin insert into test1 values(12); end;',2,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null); create_job
(1 row)
gaussdb=# CALL DBE_SCHEDULER.set_job_argument_value('job1', 1, 'value1'); set_job_argument_value
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR'); drop_job
(1 row)
-
DBE_SCHEDULER.CREATE_SCHEDULE函数原型为:
| ``` DBE_SCHEDULER.create_schedule( schedule_name text, start_date timestamp with time zone default NULL, repeat_interval text, end_date timestamp with time zone default NULL, comments text default NULL )
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :-------------- | :----------------------- | :---- | :----- | :------ | | schedule_name | TEXT | IN | 否 | 调度名称。 | | start_date | TIMESTAMP WITH TIME ZONE | IN | 是 | 调度开始时间。 | | repeat_interval | TEXT | IN | 否 | 调度重复频率。 | | end_date | TIMESTAMP WITH TIME ZONE | IN | 是 | 调度结束时间。 | | comments | TEXT | IN | 是 | 备注 | 示例:gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule1', sysdate, 'sysdate + 3 / (24 * 60 * 60)', null, 'test1'); create_schedule
(1 row)
gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule2', sysdate, 'FREQ=DAILY; BYHOUR=6;', null, 'test1'); create_schedule
(1 row)
gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule3', sysdate, 'FREQ=DAILY; BYHOUR=6;'); create_schedule
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_schedule('schedule1'); drop_single_schedule
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_schedule('schedule2', false); drop_single_schedule
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_schedule('schedule3', true); drop_single_schedule
(1 row)
-
DBE_SCHEDULER.DROP_SCHEDULE函数原型为:
| ``` DBE_SCHEDULER.drop_schedule( schedule_name text, force boolean default false )
| ----------------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :------------ | :------ | :---- | :----- | :----------------------------------------------------------------------------- | | schedule_name | TEXT | IN | 否 | 调度名称。 | | force | BOOLEAN | IN | 否 | 删除调度行为标记位:- true:在删除调度之前,将禁用使用此调度的任何作业或窗口。 - false:调度不能被任何作业或窗口引用,否则会发生错误。 | 示例:gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule1', sysdate, 'sysdate + 3 / (24 * 60 * 60)', null, 'test1'); create_schedule
(1 row)
gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule2', sysdate, 'FREQ=DAILY; BYHOUR=6;', null, 'test1'); create_schedule
(1 row)
gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule3', sysdate, 'FREQ=DAILY; BYHOUR=6;'); create_schedule
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_schedule('schedule1'); drop_single_schedule
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_schedule('schedule2', false); drop_single_schedule
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_schedule('schedule3', true); drop_single_schedule
(1 row)
-
DBE_SCHEDULER.DROP_SINGLE_SCHEDULE
DBE_SCHEDULER.DROP_SINGLE_SCHEDULE函数原型为:
| ``` DBE_SCHEDULER.drop_single_schedule( schedule_name text, force boolean default false )
| ------------------------------------------------------------------------------------------------------------------------ | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :------------ | :------ | :---- | :----- | :----------------------------------------------------------------------------- | | schedule_name | TEXT | IN | 否 | 调度名称。 | | force | BOOLEAN | IN | 否 | 删除调度行为标记位:- TRUE:在删除调度之前,将禁用使用此调度的任何作业或窗口。 - FALSE:调度不能被任何作业或窗口引用,否则会发生错误。 | 示例:gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule1', sysdate, 'sysdate + 3 / (24 * 60 * 60)', null, 'test1'); create_schedule
(1 row)
gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule2', sysdate, 'FREQ=DAILY; BYHOUR=6;', null, 'test1'); create_schedule
(1 row)
gaussdb=# CALL DBE_SCHEDULER.create_schedule('schedule3', sysdate, 'FREQ=DAILY; BYHOUR=6;'); create_schedule
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_single_schedule('schedule1'); drop_single_schedule
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_single_schedule('schedule2', false); drop_single_schedule
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_single_schedule('schedule3', true); drop_single_schedule
(1 row)
-
DBE_SCHEDULER.CREATE_JOB_CLASS
DBE_SCHEDULER.CREATE_JOB_CLASS函数原型为:
| ``` DBE_SCHEDULER.create_job_class( job_class_name text, resource_consumer_group text default NULL, service text default NULL, logging_level integer default 0, log_history integer default NULL, comments text default NULL )
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :---------------------- | :------ | :---- | :----- | :------------- | | job_class_name | TEXT | IN | 否 | 定时任务类名称。 | | resource_consumer_group | TEXT | IN | 是 | 定时任务类内联资源消费组。 | | service | TEXT | IN | 是 | 定时任务类内联数据库服务。 | | logging_level | INTEGER | IN | 否 | 定时任务类记录信息个数。 | | log_history | INTEGER | IN | 是 | 定时任务类记录信息保留天数。 | | comments | TEXT | IN | 是 | 备注 | 示例:gaussdb=# CALL DBE_SCHEDULER.create_job_class(job_class_name => 'jc1', resource_consumer_group => '123'); create_job_class
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_job_class('jc1', false); drop_job_class
(1 row)
-
DBE_SCHEDULER.DROP_JOB_CLASS函数原型为:
| ``` DBE_SCHEDULER.drop_job_class( job_class_name text, force boolean default false )
| ------------------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :------------- | :------ | :---- | :----- | :----------------------------------------------------------------------------------------------- | | job_class_name | TEXT | IN | 否 | 定时任务类名称 | | force | BOOLEAN | IN | 否 | 删除定时任务类行为标记位:- TRUE:该类的作业将被禁用,并且其他类将设置为默认类,只有在成功的情况下,才会删除该类。 - FALSE:被删除的类不得被任何作业引用,否则会发生错误。 | 示例:gaussdb=# CALL DBE_SCHEDULER.create_job_class(job_class_name => 'jc1', resource_consumer_group => '123'); create_job_class
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_job_class('jc1', false); drop_job_class
(1 row)
-
DBE_SCHEDULER.DROP_SINGLE_JOB_CLASS
DBE_SCHEDULER.DROP_SINGLE_JOB_CLASS函数原型为:
| ``` DBE_SCHEDULER.drop_single_job_class( job_class_name text, force boolean default false )
| -------------------------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :------------- | :------ | :---- | :----- | :----------------------------------------------------------------------------------------------- | | job_class_name | TEXT | IN | 否 | 定时任务类名称。 | | force | BOOLEAN | IN | 否 | 删除定时任务类行为标记位:- TRUE:该类的作业将被禁用,并且其他类将设置为默认类,只有在成功的情况下,才会删除该类。 - FALSE:被删除的类不得被任何作业引用,否则会发生错误。 | 示例:gaussdb=# CALL DBE_SCHEDULER.create_job_class(job_class_name => 'jc1', resource_consumer_group => '123'); create_job_class
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_single_job_class('jc1', false); drop_single_job_class
(1 row)
-
DBE_SCHEDULER.GRANT_USER_AUTHORIZATION
为数据库用户提供定时任务权限。调用该函数的用户需要具有SYSADMIN权限。同步到所有CN节点。
DBE_SCHEDULER.GRANT_USER_AUTHORIZATION函数原型为:
| ``` DBE_SCHEDULER.grant_user_authorization( username text, privilege text )
| ------------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :-------- | :--- | :---- | :----- | :------- | | username | TEXT | IN | 否 | 数据库用户名称。 | | privilege | TEXT | IN | 否 | 定时任务权限。 | 示例:gaussdb=# create user user1 password '1*s*****'; NOTICE: The encrypted password contains MD5 ciphertext, which is not secure. CREATE ROLE gaussdb=# CALL DBE_SCHEDULER.grant_user_authorization('user1', 'create job'); grant_user_authorization
(1 row) gaussdb=# drop user user1; DROP ROLE
-
DBE_SCHEDULER.REVOKE_USER_AUTHORIZATION
撤销数据库用户的定时任务权限。调用该函数的用户需要具有SYSADMIN权限。仅赋权同步时同步操作。
DBE_SCHEDULER.REVOKE_USER_AUTHORIZATION函数原型为:
| ``` DBE_SCHEDULER.revoke_user_authorization( username text, privilege text )
| -------------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :-------- | :--- | :---- | :----- | :------- | | username | TEXT | IN | 否 | 数据库用户名称。 | | privilege | TEXT | IN | 否 | 定时任务权限。 | 示例:gaussdb=# create user user1 password '1*s*****'; NOTICE: The encrypted password contains MD5 ciphertext, which is not secure. CREATE ROLE gaussdb=# CALL DBE_SCHEDULER.grant_user_authorization('user1', 'create job'); grant_user_authorization
(1 row)
gaussdb=# CALL DBE_SCHEDULER.revoke_user_authorization('user1', 'create job'); revoke_user_authorization
(1 row) gaussdb=# drop user user1; DROP ROLE
-
DBE_SCHEDULER.CREATE_CREDENTIAL
创建授权证书。调用该函数的用户需要具有SYSADMIN权限。同步到所有CN节点。
DBE_SCHEDULER.CREATE_CREDENTIAL函数原型为:
| ``` DBE_SCHEDULER.create_credential( credential_name text, username text, password text default NULL, database_role text default NULL, windows_domain text default NULL, comments text default NULL )
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :-------------- | :--- | :---- | :----- | :------------ | | credential_name | TEXT | IN | 否 | 授权证书名称。 | | username | TEXT | IN | 否 | 数据库用户名称。 | | password | TEXT | IN | 是 | 用户密码。 | | database_role | TEXT | IN | 是 | 数据库系统权限。 | | windows_domain | TEXT | IN | 是 | Windows用户所属域。 | | comments | TEXT | IN | 是 | 备注 | 示例:gaussdb=# CALL DBE_SCHEDULER.create_credential('cre_1', 'user1', ''); create_credential
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_credential('cre_1', false); drop_credential
(1 row)
NOTICE: DBE_SCHEDULER.CREATE_CREDENTIAL的password字段请传NULL或者'******',该参数仅做兼容性,不代表实际含义。禁止使用安装用户对应的os用户名创建证书。
-
销毁授权证书。调用该函数的用户需要具有SYSADMIN权限。仅证书被同步时同步操作。
DBE_SCHEDULER.DROP_CREDENTIAL函数原型为:
| ``` DBE_SCHEDULER.drop_credential( credential_name text, force boolean default false )
| --------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :-------------- | :------ | :---- | :----- | :----------------------------------------------------------------------- | | credential_name | TEXT | IN | 否 | 授权证书名称。 | | force | BOOLEAN | IN | 否 | 删除授权证书行为标记位:- TRUE:无论是否有作业引用该证书,都会被删除。 - FALSE:任何作业都无法引用该证书,否则会发生错误。 | 示例:gaussdb=# CALL DBE_SCHEDULER.create_credential('cre_1', 'user1', ''); create_credential
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_credential('cre_1', false); drop_credential
(1 row)
-
DBE_SCHEDULER.ENABLE函数原型为:
| ``` DBE_SCHEDULER.enable( name text, commit_semantics text default 'STOP_ON_FIRST_ERROR' )
| ----------------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :--------------- | :--- | :---- | :----- | :------------------------------------------------------------------------------------------------------------------------------------ | | name | TEXT | IN | 否 | 对象名称,可以指定一个或多个,当指定多个程序时需利用逗号隔开。 | | commit_semantics | TEXT | IN | 否 | 提交规则。支持以下类型:- 'STOP_ON_FIRST_ERROR':在第一个报错之前的启用操作会提交。 - 'TRANSACTIONAL':事物级提交,报错前的启用操作会回滚。 - 'ABSORB_ERRORS':尝试越过报错,将成功的启用操作提交。 | 示例:gaussdb=# CALL dbe_scheduler.create_job('job1','PLSQL_BLOCK','begin insert into test1 values(12); end;',0,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null); lse, 'test'); create_job
(1 row)
gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'stored_procedure', 'insert into tb_job_test(key) values(null);', 0, false, ''); create_program
(1 row)
gaussdb=# CALL DBE_SCHEDULER.enable('job1'); enable
(1 row)
gaussdb=# CALL DBE_SCHEDULER.enable('program1', 'STOP_ON_FIRST_ERROR'); enable
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR'); drop_job
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false); drop_program
(1 row)
-
DBE_SCHEDULER.ENABLE_SINGLE函数原型为:
| ``` DBE_SCHEDULER.enable_single( name text )
| ------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :--- | :--- | :---- | :----- | :---- | | name | TEXT | IN | 否 | 对象名称。 | 示例:gaussdb=# CALL dbe_scheduler.create_job('job1','PLSQL_BLOCK','begin insert into test1 values(12); end;',0,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null); lse, 'test'); create_job
(1 row)
gaussdb=# CALL DBE_SCHEDULER.enable_single('job1'); enable_single
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR'); drop_job
(1 row)
-
禁用多个对象,name为逗号分隔的字符串,每个逗号分隔的字符串为一个对象。仅启用操作同步时同步操作。
DBE_SCHEDULER.DISABLE函数原型为:
| ``` DBE_SCHEDULER.disable( name text, force boolean default false, commit_semantics text default 'STOP_ON_FIRST_ERROR' )
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :--------------- | :------ | :---- | :----- | :------------------------------------------------------------------------------------------------------------------------------------ | | name | TEXT | IN | 否 | 对象名称。 | | force | BOOLEAN | IN | 否 | 禁用对象行为标记位:- TRUE:无论是否有其他对象依赖于该对象,也会被禁用。 - FALSE:任何对象都无法依赖于该对象,否则会发生错误。 | | commit_semantics | TEXT | IN | 否 | 提交规则。支持以下类型:- 'STOP_ON_FIRST_ERROR':在第一个报错之前的禁用操作会提交。 - 'TRANSACTIONAL':事物级提交,报错前的禁用操作会回滚。 - 'ABSORB_ERRORS':尝试越过报错,将成功的禁用操作提交。 | 示例:gaussdb=# CALL dbe_scheduler.create_job('job1','PLSQL_BLOCK','begin insert into test1 values(12); end;',0,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null); create_job
(1 row)
gaussdb=# CALL DBE_SCHEDULER.create_program('program1', 'stored_procedure', 'insert into tb_job_test(key) values(null);', 0, false, ''); create_program
(1 row)
gaussdb=# CALL DBE_SCHEDULER.disable('job1'); disable
(1 row)
gaussdb=# CALL DBE_SCHEDULER.disable('program1', false, 'STOP_ON_FIRST_ERROR'); disable
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR'); drop_job
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_program('program1', false); drop_program
(1 row)
-
DBE_SCHEDULER.DISABLE_SINGLE函数原型为:
| ``` DBE_SCHEDULER.disable_single( name text, force boolean default false )
| --------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :---- | :------ | :---- | :----- | :------------------------------------------------------------------------- | | name | TEXT | IN | 否 | 对象名称。 | | force | BOOLEAN | IN | 否 | 禁用对象行为标记位:- TRUE:无论是否有其他对象依赖于该对象,也会被禁用。 - FALSE:任何对象都无法依赖于该对象,否则会发生错误。 | 示例:gaussdb=# CALL dbe_scheduler.create_job('job1','PLSQL_BLOCK','begin insert into test1 values(12); end;',0,null,null,null,'DEFAULT_JOB_CLASS',false,false,null,null,null); create_job
(1 row)
gaussdb=# CALL DBE_SCHEDULER.disable_single('job1', false); disable_single
(1 row)
gaussdb=# CALL DBE_SCHEDULER.drop_job('job1', true, false, 'STOP_ON_FIRST_ERROR'); drop_job
(1 row)
-
DBE_SCHEDULER.EVAL_CALENDAR_STRING
返回值类型:timestamp with time zone
DBE_SCHEDULER.EVAL_CALENDAR_STRING函数原型为:
| ``` DBE_SCHEDULER.evaluate_calendar_string( IN calendar_string text, IN start_date timestamp with time zone, IN return_date_after timestamp with time zone )return timestamp with time zone
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :---------------- | :----------------------- | :---- | :----- | :--------- | | calendar_string | TEXT | IN | 否 | 定时任务日期字符串。 | | start_date | TIMESTAMP WITH TIME ZONE | IN | 否 | 定时任务开始时间。 | | return_date_after | TIMESTAMP WITH TIME ZONE | IN | 否 | 定时任务返回日期。 | 示例:gaussdb=# CALL DBE_SCHEDULER.eval_calendar_string('FREQ=DAILY; BYHOUR=6;', sysdate, sysdate); eval_calendar_string
2023-09-15 06:47:24+08 (1 row)
-
DBE_SCHEDULER.EVALUATE_CALENDAR_STRING
返回值类型:timestamp with time zone
DBE_SCHEDULER.EVALUATE_CALENDAR_STRING函数原型为:
| ``` DBE_SCHEDULER.evaluate_calendar_string( IN calendar_string text, IN start_date timestamp with time zone, IN return_date_after timestamp with time zone, OUT next_run_date timestamp with time zone )return timestamp with time zone
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 参数 | 类型 | 入参/出参 | 是否可以为空 | 描述 | | :---------------- | :----------------------- | :---- | :----- | :----------- | | calendar_string | TEXT | IN | 否 | 定时任务日期字符串。 | | start_date | TIMESTAMP WITH TIME ZONE | IN | 否 | 定时任务开始时间。 | | return_date_after | TIMESTAMP WITH TIME ZONE | IN | 否 | 定时任务返回日期。 | | next_run_date | TIMESTAMP WITH TIME ZONE | OUT | 否 | 定时任务返回下一个日期。 | 示例:gaussdb=# CREATE OR REPLACE PROCEDURE pr1(calendar_str text) as DECLARE start_date timestamp with time zone; return_date_after timestamp with time zone; next_run_date timestamp with time zone; BEGIN start_date := '2003-2-1 10:30:00.111111+8'::timestamp with time zone; return_date_after := start_date; DBE_SCHEDULER.evaluate_calendar_string( calendar_str, start_date, return_date_after, next_run_date); DBE_OUTPUT.PRINT_LINE('next_run_date: ' || next_run_date); return_date_after := next_run_date; END; / CREATE PROCEDURE
gaussdb=# CALL pr1('FREQ=hourly;INTERVAL=2;BYHOUR=6,10;BYMINUTE=0;BYSECOND=0'); next_run_date: 2003-02-02 06:00:00+08 pr1
(1 row)
更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…