一 功能及概念介绍
1 操作员
操作员是负责维护 DM 服务器运行实例的个人。
2 作业
作业是由 DM 代理程序按顺序执行的一系列指定的操作。作业可以执行更广泛的活动,包括运行 DMPL/SQL 脚本、定期备份数据库、对数据库数据进行检查等。可以创建作业来执行经常重复和可调度的任务,作业按照一个或多个调度的安排在服务器上执行。
3 警报
警报是系统中发生的某种事件,如发生了特定的数据库操作,或出错信号,或者是作业的启动、执行完毕等事件。警报主要用于通知指定的操作员,以便其迅速了解系统中发生的
状况。
4 调度
调度是用户定义的一个时间安排,在给定的时刻到来时,系统会启动相关的作业,按作业定义的步骤依次执行。调度可以是一次性的,也可以是周期性的。
5 作业权限
通常作业的管理是由 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)的权限。
二 创建作业的步骤
1 创建作业环境
创建作业的第一步就是创建作业环境,即创建一些系统表来存储作业相关的对象、历史记录等信息。
这些表总共有10张,都是在SYSJOB模式下,分别为有 SYSJOBS、SYSJOBSTEPS、SYSJOBSCHEDULES、SYSMAILINFO、SYSJOBHISTORIES2、SYSSTEPHISTORIES2、SYSALERTHISTORIES、SYSOPERATORS、SYSALERTS、SYSALERTNOTIFICATIONS
(1)通过命令行模式创建代理环境
创建:
可以通过调用系统过程SP_INIT_JOB_SYS()来创建这些表
语法如下:
SP_INIT_JOB_SYS(1);
这样子代理环境就创建好了
删除:
SP_INIT_JOB_SYS(0);
(2)通过DM管理工具创建代理环境
创建:
打开DM管理工具,连接数据库后,找到代理
右键代理,点击创建代理环境
创建成功
删除:
右键代理,点击清理代理环境
删除成功
2 创建作业
(1)命令行模式
创建;
通过系统过程实现:
1.创建作业通过系统过程 SP_CREATE_JOB 实现。
语法如下:
SP_CREATE_JOB (
JOB_NAME VARCHAR(128), -- 作业名称
ENABLED INT, -- 作业是否启用,1 启用 0 不启用
ENABLE_EMAIL INT, -- 作业是否开启邮件系统 1 启用 0 不启用
EMAIL_OPTR_NAME VARCHAR(128), -- 指定操作员姓名,开启邮件才发送
EMAIL_TYPE INT, -- 开启邮件后,什么时候发送 0 作业执行成功后发送 1 作业执行失败后发送 2 作业执行结束后发送
ENABLED_NETSEND INT, -- 作业是否开启网络发送 1 是 0 否
NETSEND_OPTR_NAME VARCHAR(128), -- 指定操作员姓名
NETSEND_TYPE INT, -- 开启网络发送后,什么时候发送
DESCRIBE VARCHAR(8187) -- 作业描述信息
)
例子:创建一个名为back_full的作业,不指定操作员,不开启邮件和网络系统
call SP_CREATE_JOB(‘back_full’,1,0,’’,0,0,’’,0,‘back_full’);
删除:
调用系统过程
SP_DROP_JOB 实现。
语法如下:
SP_DROP_JOB (
JOB_NAME VARCHAR(128) -- 作业名称
)
例如: 删除名为back_full的作业
call SP_DROP_JOB(‘back_full’);
3 配置作业
3.1 开始作业配置
用系统过程 SP_JOB_CONFIG_START 来指定对一个作业配置的开始。
语法如下:
SP_JOB_CONFIG_START (
JOB_NAME VARCHAR(128) -- 作业名称
)
例如: 开始对back_full作业进行配置
call SP_JOB_CONFIG_START(‘back_full’);
3.2 作业步骤
(1) 增加作业步骤
增加作业的步骤通过系统过程 SP_ADD_JOB_STEP 实现。
语法如下:
SP_ADD_JOB_STEP (
JOB_NAME VARCHAR(128), -- 作业名称
STEP_NAME VARCHAR(128), -- 表示增加的步骤名
TYPE INT, -- 表示步骤的类型,一般为6
COMMAND VARCHAR(8187), -- 当type为6时,'01000000/data/dmbak' 第一个数字为0或1 ,0表示完全备份,1表示增量备份具体查看手册
SUCC_ACTION INT, -- 指定步骤执行成功后,下一步该做什么事。取 值 0 或 1。说明如下:
0 表示执行下一步。
1 表示报告执行成功,并执行下一步。
FAIL_ACTION INT, -- 指定步骤执行失败后,下一步该做什么事。取 值 0 或 2。说明如下:
0 表示执行下一步。
2 表示报告执行失败,并结束作业。
RETRY_ATTEMPTS INT, -- 表示当步骤执行失败后,需要重试的次数。取值范 围0~100 次。
RETRY_INTERVAL INT, -- 表示在每两次步骤执行重试之间的间隔时间。不能 大于 10 秒钟。
OUTPUT_FILE_PATH VARCHAR(256), -- 表示步骤执行时输出文件的路径。该参数已废 弃,没有实际意义。
APPEND_FLAG INT --输出文件的追写方式。如果指定输出文件,那么这个参 数表示在写入文件时是否从文件末尾开始追写。1 是; 0 否。如果是 0,那么从文件指针当前指向的位置开始 追写。
)
例如:为作业back_full添加步骤 back_full01,备份为全备,路径为/dm7
call SP_ADD_JOB_STEP(‘back_full’, ‘back_full01’, 6, ‘01000000/dm7’, 1, 2, 0, 0, NULL, 0);
(2)删除步骤:
通过系统过程 SP_DROP_JOB_STEP 删除这个步骤。
语法如下:
SP_DROP_JOB_STEP (
JOB_NAME VARCHAR(128), -- 作业名称
STEP_NAME VARCHAR(128) -- 步骤名称
)
例如,为作业 back_full删除步骤back_full01。
Call SP_DROP_JOB_STEP(‘back_full’, ‘back_full01’);
3.3 作业调度
(1) 增加调度
增加调度通过调度系统过程 SP_ADD_JOB_SCHEDULE 实现。
语法如下:
SP_ADD_JOB_SCHEDULE (
JOB_NAME VARCHAR(128), -- 作业名称
SCHEDULE_NAME VARCHAR(128), -- 待创建的调度名称
ENABLE INT, -- 是否启用 1 启用 0 不启用
TYPE INT, -- 指定调度类型 0-8
FREQ_INTERVAL INT, -- 当type为0时,这个参数才起作用
FREQ_SUB_INTERVAL INT, -- 与type跟freq_interval有关
FREQ_MINUTE_INTERVAL INT, -- 表示一天内每隔多少分钟执行一次
STARTTIME VARCHAR(128), -- 作业被调度的起始时间
ENDTIME VARCHAR(128), -- 定义作业被调度的结束时间
DURING_START_DATE VARCHAR(128), -- 指定作业被调度的起始日期
DURING_END_DATE VARCHAR(128), -- 指定作业被调度的结束日期
DESCRIBE VARCHAR(500) -- 调度的注释信息
)
具体参数含义:
TYPE:
指定调度类型。取值 0、1、2、3、4、5、6、7、8。分别介绍如下:
0 表示指定作业只执行一次。
1 按天的频率来执行。
2 按周的频率来执行。
3 在一个月的某一天执行。
4 在一个月的第一周第几天执行。
5 在一个月的第二周的第几天执行。
6 在一个月的第三周的第几天执行。
7 在一个月的第四周的第几天执行。
8 在一个月的最后一周的第几天执行。
FREQ_INTERVAL:
当TYPE=0时该参数生效
与 TYPE 有关。表示不同调度类型下的发生频率。说明如下:
当 TYPE=0 时,这个值无效,系统不做检查。
当 TYPE=1 时,表示每几天执行,取值范围为 1~100。
当 TYPE=2 时,表示的是每几个星期执行,取值范围没有限制。
当 TYPE=3 时,表示每几个月中的某一天执行,取值范围没有限制。
当 TYPE=4 时,表示每几个月的第一周执行,取值范围没有限制。
当 TYPE=5 时,表示每几个月的第二周执行,取值范围没有限制。
当 TYPE=6 时,表示每几个月的第三周执行,取值范围没有限制。
当 TYPE=7 时,表示每几个月的第四周执行,取值范围没有限制。
当 TYPE=8 时,表示每几个月的最后一周执行,取值范围没有限制。
FREQ_SUB_INTERVAL:
与 TYPE 和 FREQ_INTERVAL 有关。表示不同 TYPE 的执行频率,在 FREQ_INTERVAL
基础上,继续指定更为精准的频率。
当 TYPE=0 或 1 时,这个值无效,系统不做检查。
当 TYPE=2 时,表示的是某一个星期的星期几执行,可以同时选中七天中的任意几天。
取值范围 1~127。具体如何取值,请用户参考如下规则。因为每周有七天,所以 DM 数据库系统内部用七位二进制来表示选中的日子。从最低位开始算起,依次表示周日、周一...周 五、周六。选中周几,就将该位置 1,否则 0。例如,选中周二和周六,7 位二进制就是 1000100, 转化成十进制就是 68,所以 FREQ_SUB_INTERVAL 就取值 68。
当 TYPE=3 时,表示将在一个月的第几天执行。取值范围 1~31。
当 TYPE 为 4、5、6、7 或 8 时,都表示将在某一周内第几天执行。取值范围 1~7,分别表示从周一到周日。
例子: 在作业back_full上创建一个back_full02的调度,每天执行一次,执行时间为01:37:00,开始时间为2020-03-27 16:35:56,没有结束时间
call SP_ADD_JOB_SCHEDULE(‘back_full’, ‘back_full02’, 1, 1, 1, 8, 0, ‘01:37:00’, NULL, ‘2020-03-27 16:35:56’, NULL, ‘’);
(2) 删除调度
删除调度必须是在配置作业开始后才能进行,否则系统会报错
调用的函数为
SP_DROP_JOB_SCHEDULE。
语法如下:
SP_DROP_JOB_SCHEDULE (
JOB_NAME VARCHAR(128), -- 作业名称
SCHEDULE_NAME VARCHAR(128) -- 调度名称
)
删除back_full中名为back_full02的调度
Call SP_DROP_JOB_SCHEDULE(‘back_full’, ‘back_full02’);
3.4 结束作业配置
在配置完成后,用户需要对前面所做的配置进行提交,表示对作业的配置已经完成,同时将这个作业加入到运行队列。这一步可以通过系统过程 SP_JOB_CONFIG_COMMIT 实现。
语法如下:
SP_JOB_CONFIG_COMMIT (
JOB_NAME VARCHAR(128) -- 作业名称
)
例子: 提交上面创建的作业back_full
call SP_JOB_CONFIG_COMMIT(‘back_full’);