GaussDB-DBE_SCHEDULER

94 阅读23分钟

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创建定时任务。
DBE_SCHEDULER.DROP_JOB删除定时任务。
DBE_SCHEDULER.DROP_SINGLE_JOB删除单个定时任务。
DBE_SCHEDULER.SET_ATTRIBUTE设置对象属性。
DBE_SCHEDULER.RUN_JOB运行定时任务。
DBE_SCHEDULER.RUN_BACKEND_JOB后台运行定时任务。
DBE_SCHEDULER.RUN_FOREGROUND_JOB前台运行定时任务。
DBE_SCHEDULER.STOP_JOB停止定时任务。
DBE_SCHEDULER.STOP_SINGLE_JOB停止单个定时任务。
DBE_SCHEDULER.GENERATE_JOB_NAME生成定时任务名。
DBE_SCHEDULER.CREATE_PROGRAM创建程序。
DBE_SCHEDULER.DEFINE_PROGRAM_ARGUMENT定义程序参数。
DBE_SCHEDULER.DROP_PROGRAM删除程序。
DBE_SCHEDULER.DROP_SINGLE_PROGRAM删除单个程序。
DBE_SCHEDULER.SET_JOB_ARGUMENT_VALUE设置定时任务参数值。
DBE_SCHEDULER.CREATE_SCHEDULE创建调度。
DBE_SCHEDULER.DROP_SCHEDULE删除调度。
DBE_SCHEDULER.DROP_SINGLE_SCHEDULE删除单个调度。
DBE_SCHEDULER.CREATE_JOB_CLASS创建定时任务类。
DBE_SCHEDULER.DROP_JOB_CLASS删除定时任务类。
DBE_SCHEDULER.DROP_SINGLE_JOB_CLASS删除单个定时任务类。
DBE_SCHEDULER.GRANT_USER_AUTHORIZATION赋予用户特殊权限。
DBE_SCHEDULER.REVOKE_USER_AUTHORIZATION撤销用户特殊权限。
DBE_SCHEDULER.CREATE_CREDENTIAL创建证书。
DBE_SCHEDULER.DROP_CREDENTIAL销毁证书。
DBE_SCHEDULER.ENABLE启用对象。
DBE_SCHEDULER.ENABLE_SINGLE启用单个对象。
DBE_SCHEDULER.DISABLE停用对象。
DBE_SCHEDULER.DISABLE_SINGLE停用单个对象。
DBE_SCHEDULER.EVAL_CALENDAR_STRING分析调度任务周期。
DBE_SCHEDULER.EVALUATE_CALENDAR_STRING分析调度任务周期。
  • DBE_SCHEDULER.CREATE_JOB

    创建一个定时任务,同步任务到所有CN节点。

    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 )

    | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
    
    ![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/06ce0741f56c45038e5b50814ac2bc4f~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771295392&x-signature=85dklhIGucLy9f55D3FP6o4jqRM%3D)
    
    利用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) 
    ``` |
    | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
    ![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/094ff7cff249463fa7ed28e81f7b17d9~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771295392&x-signature=AyFvYMNmikJoT9m34zT86oDheQA%3D)NOTICE:
    
    创建'EXTERNAL_SCRIPT'类型的定时任务需要管理员赋予相关的权限和证书,且需要数据库启动用户对该外部脚本有读取权限才可以正常生效。
    
  • DBE_SCHEDULER.DROP_JOB

    删除定时任务。仅任务被同步时同步操作。

    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' )

    | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
    
    ![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/98a29c4b0af94f29a81a759913f7dbe6~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771295392&x-signature=4jTYiLz0hvFFTSeE6W1fPUpqZH4%3D)
    
    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) 
    ``` |
    | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
    ![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/c32047ac552e4f278433ecf061ee9823~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771295392&x-signature=M0HH9o8yhENVO8io2VrtzjdLTG8%3D)NOTICE:
    
    commit_semantic中的'TRANSACTIONAL'选项必须在force为false的情况下才会生效。
    
  • DBE_SCHEDULER.DROP_SINGLE_JOB

    删除一个定时任务。仅任务被同步时同步操作。

    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

    修改定时任务属性。仅任务被同步时同步操作。

    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 )

    | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
    ![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/89b7d94253fe449ba4ae4dc2889e82dd~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771295392&x-signature=oyIf1RLfBiN5GksWT9712g6Ps08%3D)
    
    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) 
    ``` |
    | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
    ![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/2226f6dd80d94e2a8fd461ad0313d4f6~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771295392&x-signature=3sel0XJC66bMlGFo%2Bh1Drwm60L4%3D)NOTICE:
    
    不要使用DBE_SCHEDULER.SET_ATTRIBUTE来将参数置空。
    
    对象名不能通过DBE_SCHEDULER.SET_ATTRIBUTE来更改。
    
    内联对象不能通过DBE_SCHEDULER.SET_ATTRIBUTE来更改。
    
  • DBE_SCHEDULER.RUN_JOB

    运行定时任务。

    DBE_SCHEDULER.RUN_JOB函数原型为:

    | ``` DBE_SCHEDULER.run_job( job_name text, use_current_session boolean default true )

    | ----------------------------------------------------------------------------------------------------- |
    
    ![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/732644a3224a416eaee4a2084bef758d~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771295392&x-signature=44TaVm%2BtjrIeZSN6y1U%2BDB0dz0E%3D)
    
    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) 
    ``` |
    | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    
    ![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/e1841277c00f476b80059b19774aa7f8~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771295392&x-signature=UloMgb3HZi%2B%2BV90xH1tzBggd674%3D)NOTICE:
    
    use_current_session目前只作用于job_type为'EXTERNAL_SCRIPT'的定时任务上。
    
  • DBE_SCHEDULER.RUN_BACKEND_JOB

    后台运行定时任务。

    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函数原型为:

    | ``` 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函数原型为:

    | ``` 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)

    
    ![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/b60909722c1447caa4046f9b88245594~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771295392&x-signature=ROvS6R5RKC5KWkuMaqnuMGVuvfs%3D)NOTICE:
    
    首次执行DBE_SCHEDULER.GENERATE_JOB_NAME会在public下创建一个临时序列用于保存当前名称的序号。由于普通用户没有在public下create权限,因此如果普通用户为当前db下第一次调用该函数,会失败,需要授权该普通用户在public下的create权限,或者使用有该权限的用户调用该接口以创建临时序列。
    
  • DBE_SCHEDULER.CREATE_PROGRAM

    创建程序,同步到所有CN节点 。

    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函数原型为:

    | ``` 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

    创建调度。同步到所有CN节点。

    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函数原型为:

    | ``` 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

    创建定时任务类。同步到所有CN节点。

    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函数原型为:

    | ``` 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)

    
    ![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/69ebadb56bb840d6bcbf43a2e4443922~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771295392&x-signature=3wLRcp%2FokekSdENDgL%2BP6n90Hp8%3D)NOTICE:
    
    DBE_SCHEDULER.CREATE_CREDENTIAL的password字段请传NULL或者'******',该参数仅做兼容性,不代表实际含义。禁止使用安装用户对应的os用户名创建证书。
    
  • DBE_SCHEDULER.DROP_CREDENTIAL

    销毁授权证书。调用该函数的用户需要具有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

    启用对象。同步到所有CN节点。

    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

    启用单个对象。同步到所有CN节点。

    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)

  • DBE_SCHEDULER.DISABLE

    禁用多个对象,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函数原型为:

    | ``` 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…