SYSJOBS 表存储用户定义的作业信息。每一个作业对应此表中的一条记录。每一条记录 都有一个自增 ID,用来唯一表示这个作业,同时这个作业还具有一个聚集关键字 NAME,这 意味着作业不可以同名。
SYSJOBSTEPS 存储作业包括的所有步骤信息。每一行存储了某个作业的某个步骤的所 有属性。这个表的聚集关键字为 JOBID 和步骤名,意味着在一个指定的作业下,不能有两 个同名的步骤。
一个作业可以有多个调度,调度用来指定一个作业的执行情况,可以指定作业的执行方 式及时间范围。SYSJOBSCHEDULES 表存储作业的调度信息,聚集关键字为 JOBID 及调度 名,意味着对于一个指定的作业,不能具有同名的调度。
SYSJOBHISTORIES2 存储作业的执行情况的日志。当一个作业执行完成后,会向这个表 中插入一条作业执行情况的记录。 这个表中的所有记录都是由作业在运行过程中系统自动插入的,不是由用户来操作的。
SYSSTEPHISTORIES2 存储作业步骤的执行情况的日志
创建和删除作业相关系统表可以通过以下两种方式来实现。
一是通过系统过程 SP_INIT_JOB_SYS 来实现;
开启:
call SP_INIT_JOB_SYS(1);
关闭:
call SP_INIT_JOB_SYS(0);
二是通过图形化客户端 MANAGER 管理工具实现。
·
图1
开启方式:右键“代理”-启动代理环境
关闭方式:右键“代理”-清理代理环境
| 每周六1点全备 每周日到周五1点差异增量备份 每天2点删除30天以前的备份 |
全备脚本:
| call SP_CREATE_JOB('full_bak',1,0,'',0,0,'',0,'每周六1点全备'); call SP_JOB_CONFIG_START('full_bak'); call SP_JOB_SET_EP_SEQNO('full_bak', 0); call SP_ADD_JOB_STEP('full_bak', 'full_bak', 6, '00000000D:\dmdata\bak', 1, 1, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('full_bak', 'full_bak', 1, 2, 1, 64, 0, '01:00:00', NULL, '2022-06-21 21:25:15', NULL, ''); call SP_JOB_CONFIG_COMMIT('full_bak'); |
增量脚本:
| call SP_CREATE_JOB('inc_bak',1,0,'',0,0,'',0,'每周日到周五1点差异增量备份'); call SP_JOB_CONFIG_START('inc_bak'); call SP_ADD_JOB_STEP('inc_bak', 'inc_bak', 6, '10000000D:\dmdata\bak|D:\dmdata\bak', 1, 1, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('inc_bak', 'inc_bak', 1, 2, 1, 63, 0, '01:00:00', NULL, '2022-06-21 21:26:45', NULL, ''); call SP_JOB_CONFIG_COMMIT('inc_bak'); |
删除策略脚本:
| call SP_CREATE_JOB('del_bak',1,0,'',0,0,'',0,'每天2点删除30天以前的备份'); call SP_JOB_CONFIG_START('del_bak'); call SP_JOB_SET_EP_SEQNO('del_bak', 0); call SP_ADD_JOB_STEP('del_bak', 'del_bak', 0, 'CALL SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''D:\dmdata\bak''); CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'',SYSDATE-30);', 1, 1, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('del_bak', 'del_bak', 1, 1, 1, 0, 0, '02:00:00', NULL, '2022-06-21 21:28:33', NULL, ''); call SP_JOB_CONFIG_COMMIT('del_bak'); |
1). 示例中的路径”D:\dmdata\bak”需提前创建
2). 如果设置的全量备份时间是星期六,但设置当天并非星期六。最简单的方法是通过管理工具,修改作业调度的时间为当天最近的时间点,执行一次全量备份,再将定时的时间恢复为原本设置的时间。




3). 通过SF_BAKSET_CHECK函数对备份集进行校验,举例说明:
全库备份:
SQL>BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_check';
校验备份集:
SQL>SELECT SF_BAKSET_CHECK('DISK','/home/dm_bak/db_bak_for_check');
执行返回为1,表示备份集目录存在且合法;否则报错。
4). 删除作业使用SP_DROP_JOB函数

5). 关于作业步骤中的SP_ADD_JOB_SCHEDULE函数每个参数的说明,详细参考达梦官方文档《DM8作业系统使用手册.pdf》;或者直接访问达梦在线服务平台地址:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台 关键字搜索即可。