注册
达梦作业创建详解
专栏/技术分享/ 文章详情 /

达梦作业创建详解

NULL 2026/07/10 328 0 0
摘要

一、SP_CREATE_JOB(创建作业)

语法:
SP_CREATE_JOB(
JOB_NAME, – 作业名
ENABLED, – 是否启用
ENABLE_EMAIL, – 是否开启邮件通知
EMAIL_OPTR_NAME, – 邮件通知的操作员
EMAIL_TYPE, – 邮件发送时机
ENABLED_NETSEND, – 是否开启网络发送
NETSEND_OPTR_NAME, – 网络发送的操作员
NETSEND_TYPE, – 网络发送时机
DESCRIBE – 作业描述
)
以全备作业为例:
CALL SP_CREATE_JOB(‘JOB_FULL_BACKUP’, 1, 0, ‘’, 0, 0, ‘’, 0, ‘每周日01:00全量备份’);

参数 你的传值 含义
JOB_NAME 'JOB_FULL_BACKUP' 作业名称,全局唯一,不能重名
ENABLED 1 启用作业。1=启用(到了调度时间会自动跑),0=禁用
ENABLE_EMAIL 0 不开启邮件通知。若设为1,作业执行结果会发邮件给指定操作员
EMAIL_OPTR_NAME ''(空串) 邮件接收的操作员名称(必须提前用SP_CREATE_OPERATOR创建),没开启邮件则传空串
EMAIL_TYPE 0 邮件发送时机:0=成功时发,1=失败时发,2=无论成功失败都发
ENABLED_NETSEND 0 不开启网络发送(仅Windows早期版本支持)
NETSEND_OPTR_NAME '' 网络发送的操作员名称,未开启则传空串
NETSEND_TYPE 0 网络发送时机(取值同上EMAIL_TYPE
DESCRIBE '每周日01:00全量备份' 作业注释/描述信息,最长500字节

二、SP_JOB_CONFIG_START(开始配置作业)

语法:
SP_JOB_CONFIG_START(JOB_NAME)
示例:
CALL SP_JOB_CONFIG_START(‘JOB_FULL_BACKUP’);

参数 传值示例 含义
JOB_NAME 'JOB_FULL_BACKUP' 指定要配置的作业名称。执行后当前会话进入"作业配置状态",后续添加步骤/调度必须在此之后才能操作

三、SP_ADD_JOB_STEP(添加作业步骤)

语法:
SP_ADD_JOB_STEP(
JOB_NAME, – 作业名
STEP_NAME, – 步骤名
TYPE, – 步骤类型(最关键)
COMMAND, – 步骤执行的具体命令(最关键)
SUCC_ACTION, – 成功后的动作
FAIL_ACTION, – 失败后的动作
RETRY_ATTEMPTS, – 失败重试次数
RETRY_INTERVAL, – 重试间隔(秒)
OUTPUT_FILE_PATH, – 输出文件路径(已废弃)
APPEND_FLAG – 追加方式(已废弃)
)

针对全备步骤:TYPE=6 的备份步骤
CALL SP_ADD_JOB_STEP(‘JOB_FULL_BACKUP’, ‘STEP_FULL’, 6,
‘01020000/dmdata/dmbak’, 1, 1, 0, 0, NULL, 0);

参数 传值 详细解释
JOB_NAME 'JOB_FULL_BACKUP' 属于哪个作业
STEP_NAME 'STEP_FULL' 步骤名称,同一作业内不可重名
TYPE 6 使用达梦V2.0备份还原语法(支持并行、压缩片大小等高级选项)
COMMAND '01020000/dmdata/dmbak' 备份指令字符串,由9部分组成,见下方拆解
SUCC_ACTION 1 成功时:1=报告成功并结束作业(0=不报告结束,2=不报告继续下一步,3=报告继续下一步)
FAIL_ACTION 1 失败时:1=报告失败并结束作业(取值含义同上)
RETRY_ATTEMPTS 0 失败后重试0次(不重试)
RETRY_INTERVAL 0 重试间隔0秒(不重试则无意义)
OUTPUT_FILE_PATH NULL 已废弃,固定传NULL
APPEND_FLAG 0 已废弃,固定传0

COMMAND = '01020000/dmdata/dmbak' 逐位拆解(TYPE=6固定9位格式)

位序 字符 对应参数 含义
第1位 0 备份模式 0=完全备份;1=差异增量;3=归档备份;4=累积增量
第2位 1 压缩级别 0=不压缩;1~9=压缩级别(1最低,9最高)
第3位 0 备份日志 0=备份日志;1=不备份日志
第4位 2 并行数 0=不并行;1=默认4个并行;2~9=指定并行数
第5位 0 USE PWR 0=不使用;1=使用(仅语法支持,实际无用)
第6位 0 MAXPIECESIZE 0=默认(32位2G/64位4G);1=128M,2=256M…9=32G
第7位 0 备份后删除归档 0=不删除;1=删除已备份的归档
第8位 0 保留位 固定填0
第9部分 /dmdata/dmbak 备份路径 备份集存放的目录(全备不需要\|分隔符)

针对增备步骤:同样是 TYPE=6
CALL SP_ADD_JOB_STEP(‘JOB_INCR_BACKUP’, ‘STEP_INCR’, 6,
‘41010000/dmdata/dmbak|/dmdata/dmbak’, 1, 1, 0, 0, NULL, 0);
所有参数与全备相同,只有 COMMAND 不同:
COMMAND = ‘41010000/dmdata/dmbak|/dmdata/dmbak’ 逐位拆解

位序 字符 含义
第1位 4 累积增量备份
第2位 1 压缩级别1
第3位 0 备份日志
第4位 1 并行度=默认4(1代表默认值)
第5位 0 不使用USE PWR
第6位 0 默认备份片大小
第7位 0 不删除归档
第8位 0 保留位
第9部分 /dmdata/dmbak\|/dmdata/dmbak 管道符\|左边是基备份搜索路径(全备所在目录),右边是增量备份集存放路径(此处相同)

针对清理步骤:TYPE=0 的SQL步骤
CALL SP_ADD_JOB_STEP(‘JOB_CLEAN_BACKUP’, ‘STEP_CLEAN’, 0,
‘SF_BAKSET_BACKUP_DIR_ADD(’‘DISK’’,’’/dmdata/dmbak’’);
CALL SP_DB_BAKSET_REMOVE_BATCH(’‘DISK’’, NOW()-30);’,
1, 1, 0, 0, NULL, 0);

参数 传值 详细解释
TYPE 0 执行SQL语句或语句块(多条SQL用分号;隔开)
COMMAND 'SF_...; CALL ...;' 具体执行的SQL。这里两条:①添加备份目录;②删除30天前备份集
其余参数 同上 SUCC_ACTION=1FAIL_ACTION=1,均报告结果并结束

四、SP_ADD_JOB_SCHEDULE(添加作业调度)

语法:
SP_ADD_JOB_SCHEDULE(
JOB_NAME, – 作业名
SCHEDULE_NAME, – 调度名
ENABLE, – 是否启用调度
TYPE, – 调度类型(按天/周/月/一次)
FREQ_INTERVAL, – 频率间隔
FREQ_SUB_INTERVAL, – 子频率(周几/月哪天)
FREQ_MINUTE_INTERVAL, – 每天内分钟间隔
STARTTIME, – 每天起始时间
ENDTIME, – 每天结束时间(跨天用)
DURING_START_DATE, – 有效起始日期
DURING_END_DATE, – 有效结束日期
DESCRIBE – 描述
)

全备调度:每周日 01:00
CALL SP_ADD_JOB_SCHEDULE(‘JOB_FULL_BACKUP’, ‘SCHED_FULL’, 1, 2, 1, 1, 0,
‘01:00:00’, NULL, CURDATE, NULL, ‘每周日01:00’);

参数 传值 含义
JOB_NAME 'JOB_FULL_BACKUP' 属于哪个作业
SCHEDULE_NAME 'SCHED_FULL' 调度名称,同一作业内不可重名
ENABLE 1 启用该调度
TYPE 2 按周执行
FREQ_INTERVAL 1 每1周执行一次
FREQ_SUB_INTERVAL 1 周几执行?1=周日(二进制最低位为1,对应周日)
FREQ_MINUTE_INTERVAL 0 一天内执行一次(在STARTTIME时刻执行)
STARTTIME '01:00:00' 每天01:00触发
ENDTIME NULL 每天无结束时间(只执行一次)
DURING_START_DATE CURDATE 从当前日期开始生效
DURING_END_DATE NULL 无结束日期(永久有效)
DESCRIBE '每周日01:00' 调度注释

补充 FREQ_SUB_INTERVAL 计算规则:7位二进制,从低位到高位依次代表 周日、周一、周二、周三、周四、周五、周六。选中哪几天,对应位设为1,再转十进制。1 = 二进制 0000001 = 仅选中周日。

增备调度:每天 02:00(含周日)
CALL SP_ADD_JOB_SCHEDULE(‘JOB_INCR_BACKUP’, ‘SCHED_INCR’, 1, 1, 1, 0, 0,
‘02:00:00’, NULL, CURDATE, NULL, ‘每天02:00’);

参数 传值 含义
TYPE 1 按天执行
FREQ_INTERVAL 1 每1天执行一次
FREQ_SUB_INTERVAL 0 TYPE=1时该参数无效,随便填
FREQ_MINUTE_INTERVAL 0 一天内执行一次
STARTTIME '02:00:00' 每天02:00触发
其余 同上 同全备调度

清理调度:每月1日 03:00
CALL SP_ADD_JOB_SCHEDULE(‘JOB_CLEAN_BACKUP’, ‘SCHED_CLEAN’, 1, 3, 1, 1, 0,
‘03:00:00’, NULL, CURDATE, NULL, ‘每月1日03:00’);

参数 传值 含义
TYPE 3 每月某一天执行
FREQ_INTERVAL 1 每1个月执行一次
FREQ_SUB_INTERVAL 1 每月第1天执行(取值1~31)
FREQ_MINUTE_INTERVAL 0 一天内执行一次
STARTTIME '03:00:00' 每月1日03:00触发

五、SP_JOB_CONFIG_COMMIT(结束配置并提交)

语法:
SP_JOB_CONFIG_COMMIT(JOB_NAME)
示例:
CALL SP_JOB_CONFIG_COMMIT(‘JOB_FULL_BACKUP’);

参数 含义
JOB_NAME 结束该作业的配置。提交后,系统会校验作业完整性(必须有步骤和调度),校验通过后将作业加入运行队列,同时创建后台触发器,到达调度时间自动执行。此操作会提交当前事务。

https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服