网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
云化数据中心 CloudDC
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务
本文导读

展开导读

DBE_SCHEDULER

更新时间:2025-01-20 GMT+08:00
分享

接口介绍

高级功能包DBE_SCHEDULER支持通过调度(schedule)和程序(program)更加灵活地创建定时任务。支持的所有接口请见表1

须知:

DBE_SCHEDULER支持CN节点间同步定时任务,不支持不同CN节点间创建同名任务。

由于505.0.0之前版本未实现同步功能,所有同步接口都只针对505.0.0及之后版本的数据进行同步操作。

升级前会对旧版本CN是否存在同名job进行检查,如果旧版本CN间同名数据库下存在名称相同、且job创建节点不相同的job,报错提示用户删除job后尝试重新升级。

表1 DBE_SCHEDULER

接口名称

描述

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种:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    -- 内联调度和程序的定时任务
    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查询当前任务的执行状态。

    表2 DBE_SCHEDULER.CREATE_JOB接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

    job_name

    TEXT

    IN

    定时任务名称。非ilm特性调度场景下,无法创建前缀为"ilmadowind$_"和"ilmjob$_"的job。

    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执行。否则按原有逻辑处理。

    示例:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    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)
    
    须知:

    创建'EXTERNAL_SCRIPT'类型的定时任务需要管理员赋予相关的权限和证书,且需要数据库启动用户对该外部脚本有读取权限才可以正常生效。

  • DBE_SCHEDULER.DROP_JOB

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

    DBE_SCHEDULER.DROP_JOB函数原型为:

    1
    2
    3
    4
    5
    6
    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可以指定一个或多个任务,也可以指定任务类进行定时任务删除。

    表3 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':尝试越过报错,将成功的删除操作提交。
    示例:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    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)
    
    须知:

    commit_semantic中的'TRANSACTIONAL'选项必须在force为false的情况下才会生效。

  • DBE_SCHEDULER.DROP_SINGLE_JOB

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

    DBE_SCHEDULER.DROP_SINGLE_JOB函数原型为:

    1
    2
    3
    4
    5
    DBE_SCHEDULER.drop_single_job(
    job_name text,
    force boolean                           default false,
    defer boolean                           default false
    )
    
    表4 DBE_SCHEDULER.DROP_SINGLE_JOB接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    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内部的对象。

    表5 DBE_SCHEDULER.SET_ATTRIBUTE接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

    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

    额外属性值。保留参数位,目前尚不支持拥有额外属性值的目标属性。

    示例:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    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)
    
    须知:

    不要使用DBE_SCHEDULER.SET_ATTRIBUTE来将参数置空。

    对象名不能通过DBE_SCHEDULER.SET_ATTRIBUTE来更改。

    内联对象不能通过DBE_SCHEDULER.SET_ATTRIBUTE来更改。

  • DBE_SCHEDULER.RUN_JOB

    运行定时任务。

    DBE_SCHEDULER.RUN_JOB函数原型为:

    1
    2
    3
    4
    DBE_SCHEDULER.run_job(
    job_name text,
    use_current_session boolean             default true
    )
    

    说明:

    DBE_SCHEDULER.RUN_JOB主要用于立即运行定时作业,独立于定时任务本身的调度,甚至可以同时运行。

    表6 DBE_SCHEDULER.RUN_JOB接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

    job_name

    TEXT

    IN

    定时任务名称,可以指定一个或多个,当指定多个定时任务时需要利用逗号隔开。

    use_current_session

    BOOLEAN

    IN

    运行定时任务标志位:
    • TRUE:使用当前会话运行,主要用于查看定时任务是否可以正常运行。
    • FALSE:后台拉起定时任务,运行结果会打印到日志中。
    示例:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    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)
    
    须知:

    use_current_session目前只作用于job_type为'EXTERNAL_SCRIPT'的定时任务上。

  • DBE_SCHEDULER.RUN_BACKEND_JOB

    后台运行定时任务。

    DBE_SCHEDULER.RUN_BACKEND_JOB函数原型为:

    1
    2
    3
    DBE_SCHEDULER.run_backend_job(
    job_name text
    )
    
    表7 DBE_SCHEDULER.RUN_BACKEND_JOB接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    DBE_SCHEDULER.run_foreground_job(
    job_name text
    )return text
    
    表8 DBE_SCHEDULER.RUN_FOREGROUND_JOB接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    5
    DBE_SCHEDULER.stop_job(
    job_name text,
    force boolean                           default false,
    commit_semantics text                   default 'STOP_ON_FIRST_ERROR'
    )
    
    表9 DBE_SCHEDULER.STOP_JOB接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    DBE_SCHEDULER.stop_single_job(
    job_name text,
    force boolean                           default false
    )
    
    表10 DBE_SCHEDULER.STOP_SINGLE_JOB接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    DBE_SCHEDULER.generate_job_name(
    prefix text                             default 'JOB$_'
    )return text
    
    表11 DBE_SCHEDULER.GENERATE_JOB_NAME接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

    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)
    
    须知:

    首次执行DBE_SCHEDULER.GENERATE_JOB_NAME会在public下创建一个临时序列用于保存当前名称的序号。由于普通用户没有在public下create权限,因此如果普通用户为当前db下第一次调用该函数,会失败,需要授权该普通用户在public下的create权限,或者使用有该权限的用户调用该接口以创建临时序列。

  • DBE_SCHEDULER.CREATE_PROGRAM

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

    DBE_SCHEDULER.CREATE_PROGRAM函数原型为:

    1
    2
    3
    4
    5
    6
    7
    8
    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
    )
    
    表12 DBE_SCHEDULER.CREATE_PROGRAM接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    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
    )
    
    表13 DBE_SCHEDULER.DEFINE_PROGRAM_ARGUMENT接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    DBE_SCHEDULER.drop_program(
    program_name text,
    force boolean                           default false
    )
    
    表14 DBE_SCHEDULER.DROP_PROGRAM接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    DBE_SCHEDULER.drop_single_program(
    program_name text,
    force boolean                           default false
    )
    
    表15 DBE_SCHEDULER.DROP_SINGLE_PROGRAM接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    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
    )
    
    表16 DBE_SCHEDULER.SET_JOB_ARGUMENT_VALUE接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    5
    6
    7
    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
    )
    
    表17 DBE_SCHEDULER.CREATE_SCHEDULE接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    DBE_SCHEDULER.drop_schedule(
    schedule_name text,
    force boolean                           default false
    )
    
    表18 DBE_SCHEDULER.DROP_SCHEDULE接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    DBE_SCHEDULER.drop_single_schedule(
    schedule_name text,
    force boolean                           default false
    )
    
    表19 DBE_SCHEDULER.DROP_SINGLE_SCHEDULE接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    5
    6
    7
    8
    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
    )
    
    表20 DBE_SCHEDULER.CREATE_JOB_CLASS接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    DBE_SCHEDULER.drop_job_class(
    job_class_name text,
    force boolean                           default false
    )
    
    表21 DBE_SCHEDULER.DROP_JOB_CLASS接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    DBE_SCHEDULER.drop_single_job_class(
    job_class_name text,
    force boolean                           default false
    )
    
    表22 DBE_SCHEDULER.DROP_SINGLE_JOB_CLASS接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    DBE_SCHEDULER.grant_user_authorization(
    username                text,
    privilege               text
    )
    
    表23 DBE_SCHEDULER.GRANT_USER_AUTHORIZATION接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    DBE_SCHEDULER.revoke_user_authorization(
    username                text,
    privilege               text
    )
    
    表24 DBE_SCHEDULER.REVOKE_USER_AUTHORIZATION接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    5
    6
    7
    8
    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
    )
    
    表25 DBE_SCHEDULER.CREATE_CREDENTIAL接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

    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)
    须知:

    DBE_SCHEDULER.CREATE_CREDENTIAL的password字段请传NULL或者'******',该参数仅做兼容性,不代表实际含义。禁止使用安装用户对应的os用户名创建证书。

  • DBE_SCHEDULER.DROP_CREDENTIAL

    销毁授权证书。调用该函数的用户需要具有SYSADMIN权限。仅证书被同步时同步操作。

    DBE_SCHEDULER.DROP_CREDENTIAL函数原型为:

    1
    2
    3
    4
    DBE_SCHEDULER.drop_credential(
    credential_name         text,
    force boolean default false
    )
    
    表26 DBE_SCHEDULER.DROP_CREDENTIAL接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    DBE_SCHEDULER.enable(
    name text,
    commit_semantics text                   default 'STOP_ON_FIRST_ERROR'
    )
    
    表27 DBE_SCHEDULER.ENABLE接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    DBE_SCHEDULER.enable_single(
    name text
    )
    
    表28 DBE_SCHEDULER.ENABLE_SINGLE接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    5
    DBE_SCHEDULER.disable(
    name text,
    force boolean                           default false,
    commit_semantics text                   default 'STOP_ON_FIRST_ERROR'
    )
    
    表29 DBE_SCHEDULER.DISABLE接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    DBE_SCHEDULER.disable_single(
    name text,
    force boolean                           default false
    )
    
    表30 DBE_SCHEDULER.DISABLE_SINGLE接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    5
    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
    
    表31 DBE_SCHEDULER.EVAL_CALENDAR_STRING接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

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

    1
    2
    3
    4
    5
    6
    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
    
    表32 DBE_SCHEDULER.EVALUATE_CALENDAR_STRING接口参数说明

    参数

    类型

    入参/出参

    是否可以为空

    描述

    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)
提示

您即将访问非华为云网站,请注意账号财产安全

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容