1.功能简介
利用达梦数据库作业管理工具可以完成定期备份数据库,定期生成数据统计报表等比较固定的日常工作,这些重复任务利用作业能够自动化完成,方便数据库管理员提高工作效率。
DM 的作业系统为用户提供了创建作业,并对作业进行调度执行以完成相应管理任务的功能。作业系统大致包含作业、警报和操作员三部分。用户需要为作业配置步骤和调度。还可以创建警报,当发生警报时,将警报信息通知操作员,以便操作员能够及时做出响应。 通过为作业创建灵活的调度方案可以满足在不同时刻运行作业的要求。
通常作业的管理是由 DBA 来维护,普通用户没有操作作业的权限,为了让普通用户可以创建、配置和调度作业,需要赋予普通用户管理作业权限:ADMIN JOB。
例如,授权 ADMIN JOB 给用户 NORMAL_USER。
GRANT ADMIN JOB TO NORMAL_USER;
默认 DBA 拥有全部的作业权限;ADMIN JOB 权限可以添加、配置、调度和删除作业等,但没有作业环境初始化SP_INIT_JOB_SYS(1)和作业环境销毁 SP_INIT_JOB_SYS(0)的权限。
2.创建作业环境
要进行作业管理,需要先创建作业环境,即创建一些系统表来存储作业相关的对象、历史记录等信息。
这些系统表有 SYSJOBS、SYSJOBSTEPS、SYSJOBSCHEDULES、SYSMAILINFO、
SYSJOBHISTORIES2、SYSSTEPHISTORIES2、SYSALERTHISTORIES、SYSOPERATORS、
SYSALERTS、SYSALERTNOTIFICATIONS 共十张,均位于SYSJOB 模式下。
3.配置作业管理
过程具体参数可参考达梦数据库相关文档。
1)数据准备:
一张表 MYJOB_TEST,A 列为主键。
DROP TABLE MYJOB_TEST;
CREATE TABLE MYJOB(
A INT PRIMARY KEY,
B VARCHAR(8188)
);
2)创建作业环境:
生成作业相关系统表。
SP_INIT_JOB_SYS(1);
3)创建操作员 TOM。
可以通过表 SYSOPERATORS 查看已创建操作员的相关信息。
SP_CREATE_OPERATOR('TOM', 1, 'test_dba@163.com', '\*.\*.\*.\*');
4)创建并配置作业
a.创建作业 TEST。可以通过表 SYSJOBS 看到作业相关信息。
SP_CREATE_JOB('TEST', 1, 1, 'TOM', 2, 1, 'TOM', 2, '一个测试作业');
b.开始配置作业。
SP_JOB_CONFIG_START('TEST');
c.为作业增加一个步骤。
向表 MYJOB_TEST 中插入数据,因为 A 列是主键,所以第三条数据 A 列值重复会被报错,错
误码-6602。可以通过表 SYSJOBSTEPS 查看到步骤相关信息。
SP_ADD_JOB_STEP('TEST', 'STEP', 0, 'insert into myjob_test values(1000, ''step 1000'');
insert into myjob_test values(1001, ''step 1001'');
insert into myjob_test values(1001, ''step 1001'');', 1, 2, 0, 0, NULL, 0);
d.为作业增加一个调度。可以通过表 SYSJOBSCHEDULES 查看到调度相关信息。
SP_ADD_JOB_SCHEDULE('TEST', 'SCHEDULE', 1, 1, 1, 0, 0, '13:40:40', NULL, '2021-10-26 13:40:40', NULL, '一个测试调度');
e.提交配置。
SP_JOB_CONFIG_COMMIT('TEST');
5) 创建并关联警报
a.创建警报 ALERT1,指定错误码-6602。可以在表 SYSALERTS 中查看到警报的相 关信息。
SP_CREATE_ALERT('ALERT1', 1, 0,12, -6602, 1, 'DDL 警报测试');
b.关联警报 ,将警报 ALERT1 发送给关联的操作员 TOM 。 可以在表
SYSALERTNOTIFICATIONS 中查看到警报与操作员的关联信息。
SP_ALERT_ADD_OPERATOR('ALERT1','TOM',1,1);
4.查看监控结果
1)通过表 SYSJOBHISTORIES2 查看作业的执行情况。
select * from sysjob.SYSJOBHISTORIES2;
LINEID EXEC_ID NAME START_TIME END_TIME ERRCODE
---------- ----------- ---- ------------------- ------------------- -----------
ERRINFO HAS_NOTIFIED
----------------------------------------------------------- ------------
1 991275118 TEST 2021-10-26 13:41:11 2021-10-26 13:41:11 -6602
[JOBTESTSCHEDULE] Violate unique constraint on [MYJOB_TEST] 0
used time: 0.849(ms). Execute id is 74.
2)通过表 SYSALERTHISTORIES 查看警报发生的历史记录。
例如,当用户插入"INSERT INTO MYJOB VALUES(1000,‘STEP 1000’);"一条语
句时,表 SYSALERTHISTORIES 的查询结果如下:
select * from sysjob.SYSALERTHISTORIES;
LINEID ID ALERTNAME EVENT_TYPE SUB_TYPE USERNAME DB_NAME OPTIME OPUSER SCH_NAME
---------- ----------- --------- ----------- ----------- -------- ------- ------------------- ------ --------
OBJ_NAME OBJ_TYPE GRANTEE_NAME ERRCODE HAS_NOTIFIED
----------------------------------------- -------- ------------ ----------- ------------
1 1 ALERT1 0 0 SYSDBA DAMENG 2021-10-26 13:45:05
Violate unique constraint on [MYJOB_TEST] -6602 0
used time: 0.208(ms). Execute id is 85.