一、常用定时任务的部分系统表

1.1 SYSJOBS

SYSJOBS 表存储用户定义的作业信息。每一个作业对应此表中的一条记录。每一条记录 都有一个自增 ID,用来唯一表示这个作业,同时这个作业还具有一个聚集关键字 NAME,这 意味着作业不可以同名。

1.2 SYSJOBSTEPS

SYSJOBSTEPS 存储作业包括的所有步骤信息。每一行存储了某个作业的某个步骤的所 有属性。这个表的聚集关键字为 JOBID 和步骤名,意味着在一个指定的作业下,不能有两 个同名的步骤。

1.3 SYSJOBSCHEDULES

一个作业可以有多个调度,调度用来指定一个作业的执行情况,可以指定作业的执行方 式及时间范围。SYSJOBSCHEDULES 表存储作业的调度信息,聚集关键字为 JOBID 及调度 名,意味着对于一个指定的作业,不能具有同名的调度。

1.4 SYSJOBHISTORIES2

SYSJOBHISTORIES2 存储作业的执行情况的日志。当一个作业执行完成后,会向这个表 中插入一条作业执行情况的记录。 这个表中的所有记录都是由作业在运行过程中系统自动插入的,不是由用户来操作的。

1.5 SYSSTEPHISTORIES2

SYSSTEPHISTORIES2 存储作业步骤的执行情况的日志

二、管理系统表

创建和删除作业相关系统表可以通过以下两种方式来实现。

一是通过系统过程 SP_INIT_JOB_SYS 来实现;

开启:

call SP_INIT_JOB_SYS(1);

关闭:

call SP_INIT_JOB_SYS(0);

二是通过图形化客户端 MANAGER 管理工具实现。

java配置达梦数据源_SYS

·

图1

开启方式:右键“代理”-启动代理环境

关闭方式右键“代理”-清理代理环境

三、以生产备份策略为例实操

3.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). 如果设置的全量备份时间是星期六,但设置当天并非星期六。最简单的方法是通过管理工具,修改作业调度的时间为当天最近的时间点,执行一次全量备份,再将定时的时间恢复为原本设置的时间。

java配置达梦数据源_python_02

java配置达梦数据源_java_03

java配置达梦数据源_servlet_04

java配置达梦数据源_python_05

 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函数

java配置达梦数据源_servlet_06

5). 关于作业步骤中的SP_ADD_JOB_SCHEDULE函数每个参数的说明,详细参考达梦官方文档《DM8作业系统使用手册.pdf》