dm作业系统
1.简介
DM的作业系统为用户提供了创建作业,并对作业进行调度执行以完成相应管理任务的功能。可以让这些重复的数据库任务自动完成,实现日常工作自动化。
2.作业系统相关系统表
要进行作业管理,需要先创建作业环境,即创建一些系统表来存储作业相关的对象,历史记录等信息。
用户通过调用系统过程SP_INIT_JOB_SYS(1)来创建这些系统表,这些表被建在SYSJOB模式下。
2.1 SYSJOBS
SYSJOBS表存储用户定义的作业信息。每一个作业对应此表中的每一条记录。每一条记录都有一个自增ID,用来唯一表示这个作业,同时这个作业还具有一个聚集关键字NAME,这意味着作业不可以同名。
2.2 SYSJOBSTEPS
SYSJOBSTEPS存储作业包括的所有步骤信息。每一行记录存储了某个作业的某个步骤的所有属性。这个表的聚集关键字为JOBID和步骤名,意味着在一个指定的作业下,不能有两个同名的步骤。
2.3 SYSJOBSCHEDULES
SYSJOBSCHEDULES用于存储作业的调度信息,聚集关键字为JOBID及调度名,即对于一个指定的作业,不能具有同名的调度。
2.4 SYSJOBHISTORIES2
SYSJOBHISTORIES2存储作业的执行情况的日志。每执行完一个作业后,便会向该表插入一条记录。
2.5 SYSSTEPHISTORIES2
SYSSTEPHISTORIES2存储作业步骤的执行情况的日志。
2.6 SYSOPERATORS
SYSOPERATORS存储作业管理系统中所有已定义操作员的信息,以NAME为聚集索引,即不能具有同名的操作员。
2.7 SYSALERTS
SYSALERTS存储作业管理系统中已定义的警报信息,聚集索引为NAME,即不能定义同名的警报。
2.8 SYSALERTNOTIFICATIONS
SYSALERTNOTIFICATIONS存储警报需要通知的操作员的信息,即警报和操作员的关联信息。以ALERTNAME和OPERID为聚集关键字,即对于一个指定的警报和指定的操作员,它们只能有一个关联关系。
2.9 SYSALERTHISTORIES
SYSALERTHISTORIES用于存储警报发送的历史记录的日志。每个警报发生时都会向这个表中插入相应的记录,然后DMJMON服务再通过扫描这个表将信息发给关联的操作员。
2.10 SYSMAILINFO
SYSMAILINFO存储作业管理系统管理员的信息。每一个作业管理系统管理员对应这个表中一条记录。该表聚集关键字为LOGIN_NAME,即登录用户名是唯一的。
3.操作员
操作员是负责维护DM服务器运行实例的个人。在预期的警报/事件发生时,可以通过电子邮件或网络发送的方式将内容通知到操作员。
3.1 创建操作员
用户可以调用系统过程SP_CREATE_OPERATOR来创建操作员,语法如下
SP_CREATE_OPERATOR(OPR_NAME VARCHAR(128),ENABLED INT,EMAILADDR VARCHAR(128),NETSEND_IP VARCHAR(128));
OPR_NAME 操作员名称
ENABLED 是否启用该操作员。1是;0否
EMAILADDR 操作员的邮箱地址
NETSEND_IP 操作员的IP地址
3.2 修改操作员
用户可以调用系统过程SP_ALTER_OPERATOR来修改操作员,语法如下
SP_ALTER_OPERATOR(OPR_NAME VARCHAR(128),ENABLED INT,EMAILADDR VARCHAR(128),NETSEND_IP VARCHAR(128));
OPR_NAME 不可修改参数,用于指定要修改的操作员名称,若该操作员不存在,则系统报错
ENABLED 可修改参数,修改是否启用该操作员。1是;0否
EMAILADDR 可修改参数,修改操作员的邮箱地址
NETSEND_IP 可修改参数,修改操作员的IP地址
3.3 删除操作员
用户可以调用系统过程SP_DROP_OPERATOR来删除操作员,语法如下
SP_DROP_OPERATOR(OPR_NAME VARCHAR(128));
OPR_NAME 用于指定要删除的操作员名称,若该操作员不存在,则系统报错
4.作业
作业是由DM代理程序按顺序执行的一系列指定的操作。作业可以执行更广泛的活动,包括运行sql脚本,定期备份数据库,对数据库进行检查等。
4.1 创建作业
通过SP_CREATE_JOB来创建作业,语法如下
SP_CREATE_JOB(JOB_NAME VARCHAR(128),ENABLED INT,ENABLED_EMAIL INT,EMAIL_OPTR_NAME VARCHAR(128),EMAIL_TYPE INT,ENABLED_NETSEND INT,NETSEND_OPTR_NAME VARCHAR(128),NETSEND_TYPE INT,DESCRIBE VARCHAR(8187));
JOB_NAME 作业名称
ENABLED 作业是否启用。1启用;0不启用
ENABLED_EMAIL 是否开启邮件系统,1开启,0不开启,不开启就不会发送邮件
EMAIL_OPTR_NAME 指定操作员名称。如果开启了邮件通知功能,邮件会发送给该操作员。
EMAIL_TYPE 指定邮件的发送时机,0表示作业执行成功后发送,1表示在作业执行失败后发送,2表示在作业结束后发送。
ENABLED_NETSEND 作业是否开启网络发送,1开启,0不开启,不开启则不通知
NETSEND_OPTR_NAME 指定操作员名称。如果开启网络发送通知功能,则会通过网络发送来通知该操作员。
NETSEND_TYPE 指定邮件的发送时机,0表示作业执行成功后发送,1表示在作业执行失败后发送,2表示在作业结束后发送。
DESCRIBE 作业描述信息
创建一个作业后,系统就会在SYSJOBS中插入一条相应的记录,但是这个作业不会做任何事情,如果需要让它执行,还需要配置这个作业。
4.2 修改作业
通过SP_ALTER_JOB来创建作业,语法如下
SP_ALTER_JOB(JOB_NAME VARCHAR(128),ENABLED INT,ENABLED_EMAIL INT,EMAIL_OPTR_NAME VARCHAR(128),EMAIL_TYPE INT,ENABLED_NETSEND INT,NETSEND_OPTR_NAME VARCHAR(128),NETSEND_TYPE INT,DESCRIBE VARCHAR(8187))
SP_ALTER_JOB和SP_CREATE_JOB参数完全相同,除了JOB_NAME用于指定修改的作业名外,其它的属性均可修改,指定新的参数值就修改,指定原值则不修改。作业修改属性后,需要重新配置作业,使修改生效。
4.3 删除作业
调用SP_DROP_JOB删除作业,语法如下
SP_DROP_JOB(JOB_NAME VARCHAR(128));
JOB_NAME 需要删除的作业名
4.4 配置作业
创建作业后,作业还不能执行任何操作,只有只是一个空的作业,如果想要这个作业能执行一些指定的操作,还需要对这个作业进行配置。
4.4.1 开始配置作业
用系统过程SP_JOB_CONFIG_START指定对一个作业配置的开始。
SP_JOB_CONFIG_START(JOB_NAME VARCHAR(128));
JOB_NAME 指定作业名。
4.4.2 设置作业执行节点
用系统过程SP_JOB_SET_EP_SEQNO指定作业执行节点。
SP_JOB_SET_EP_SEQNO(JOB_NAME VARCHAR(128),EP_SEQNO INT);
JOB_NAME 要配置的作业名称。
EP_SEQNO DSC 集群环境中执行该作业的节点号,取值范围 [0,15]。
作业配置过程中,此系统过程的调用为可选。未调用此过程设置作业执行节点号,默认作业在控制节点上执行。
4.4.3 作业步骤
增加、删除作业步骤必须是在配置作业开始后才能进行,否则系统会报错。
4.4.3.1 增加步骤
增加作业的步骤通过系统过程SP_ADD_JOB_STEP实现。
SP_ADD_JOB_STEP (JOB_NAME VARCHAR(128),STEP_NAME VARCHAR(128),TYPE INT,COMMAND VARCHAR(8187),SUCC_ACTION INT,FAIL_ACTION INT,RETRY_ATTEMPTS INT,RETRY_INTERVAL INT,OUTPUT_FILE_PATH VARCHAR(256),APPEND_FLAG INT)
JOB_NAME 作业名称
STEP_NAME 表示增加的步骤名
TYPE 步骤的类型。0表示sql语句或者是语句块;1表示执行基于v1.0版本的备份还原;2表示重组数据库;3表示更新数据库的统计信息;4表示执行DTS;5表示基于v1.0版本的备份还原(有WITHOUT LOG 和 PARALLEL选项);6表示执行基于v2.0的备份还原。
COMMAND 略
SUCC_ACTION 指定步骤执行成功后,下一步该做什么。0表示不报告步骤执行成功,并结束作业。1表示报告步骤执行成功,并结束作业。2表示不报告步骤执行成功,并执行下一步。3表示报告步骤执行成功,并执行下一步。
FAIL_ACTION 指定步骤执行失败后,下一步该做什么。0表示不报告步骤执行失败,并结束作业。1 表示报告步骤执行失败,并结束作业。2表示不报告步骤执行失败,并执行下一步。3表示报告步骤执行失败,并执行下一步。
RETRY_ATTEMPTS 表示当步骤执行失败后,需要重试的次数。取值范围 0~100 次。
RETRY_INTERVAL 表示在每两次步骤执行重试之间的间隔时间。不能大于 10 秒钟。
OUTPUT_FILE_PATH 表示步骤执行时输出文件的路径。该参数已废弃,没有实际意义。
APPEND_FLAG 输出文件的追写方式。如果指定输出文件,那么这个参数表示在写入文件时是否从文件末尾开始追写。1 是;0 否。如果是 0,那么从文件指针当前指向的位置开始追写。
4.4.3.2 修改步骤
修改作业的步骤通过系统过程 SP_ALTER_JOB_STEP 实现。
SP_ALTER_JOB_STEP (JOB_NAME VARCHAR(128),STEP_NAME VARCHAR(128),TYPE INT,COMMAND VARCHAR(8187),SUCC_ACTION INT,FAIL_ACTION INT,RETRY_ATTEMPTS INT,RETRY_INTERVAL INT,OUTPUT_FILE_PATH VARCHAR(256),APPEND_FLAG INT)
所有参数与SP_ADD_JOB_STEP一致,此处不再赘述。
4.4.3.3 删除步骤
通过SP_DROP_JOB_STEP删除步骤
SP_DROP_JOB_STEP(JOB_NAME VARCHAR(128),STEP_NAME VARCHAR(128))
JOB_NAME 作业名称
STEP_NAME 步骤名称
4.4.4 作业调度
增加、删除调度必须是在配置作业开始后才能进行,否则系统会报错。
4.4.4.1 增加调度
增加调度通过调度系统过程 SP_ADD_JOB_SCHEDULE 实现。
SP_ADD_JOB_SCHEDULE (JOB_NAME VARCHAR(128),SCHEDULE_NAME VARCHAR(128),ENABLE INT,TYPE INT,FREQ_INTERVAL INT,FREQ_SUB_INTERVAL INT,FREQ_MINUTE_INTERVAL INT,STARTTIME VARCHAR(128),ENDTIME VARCHAR(128),DURING_START_DATE VARCHAR(128),DURING_END_DATE VARCHAR(128),DESCRIBE VARCHAR(500))
JOB_NAME 作业名称
SCHEDULE_NAME 调度名称
ENABLE 是否启用调度
TYPE 指定调度类型。0表示指定作业只执行一次。1按天的频率来执行。2按周的频率来执行。3在一个月的某一天执行。4在一个月的第一周第几天执行。5在一个月的第二周的第几天执行。6在一个月的第三周的第几天执行。7在一个月的第四周的第几天执行。8在一个月的最后一周的第几天执行。当 TYPE=0 时,其执行时间由下面的参数 DURING_START_DATE 指定。
FREQ_INTERVAL 与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,分别表示从周一到周日。
FREQ_MINUTE_INTERVAL 表示一天内每隔多少分钟执行一次。有效值范围 0~1439,单位分钟,0 表示一天内执行一次。
STARTTIME 指定作业被调度的起始时间,非空。
ENDTIME 指定作业被调度的结束时间,可以为空。
DURING_START_DATE 指定调度的起始日期,非空。
DURING_END_DATE 指定调度的结束日期,可以为空,若DURING_END_DATE和ENDTIME同时为空,调度会一直持续下去。
DESCRIBE 调度描述信息
4.4.4.2 修改调度
修改调度通过调度系统过程 SP_ALTER_JOB_SCHEDULE 实现。
SP_ALTER_JOB_SCHEDULE (JOB_NAME VARCHAR(128),SCHEDULE_NAME VARCHAR(128),ENABLE INT,TYPE INT,FREQ_INTERVAL INT,FREQ_SUB_INTERVAL INT,FREQ_MINUTE_INTERVAL INT,STARTTIME VARCHAR(128),ENDTIME VARCHAR(128),DURING_START_DATE VARCHAR(128),DURING_END_DATE VARCHAR(128),DESCRIBE VARCHAR(500))
所有参数与 SP_ADD_JOB_SCHEDULE 的参数一样,此处不赘述。
4.4.4.3 删除调度
调用SP_DROP_JOB_SCHEDULE删除作业,语法如下
SP_DROP_JOB_SCHEDULE (JOB_NAME VARCHAR(128),SCHEDULE_NAME VARCHAR(128))
JOB_NAME 作业名
SCHEDULE_NAME 调度名
4.4.5 结束作业配置
在配置完成后,用户需要对前面所做的配置进行提交,表示对作业的配置已经完成,同时将这个作业加入到运行队列。这一步可以通过系统过程 SP_JOB_CONFIG_COMMIT 实现。
SP_JOB_CONFIG_COMMIT(JOB_NAME VARCHAR(128));
JOB_NAME 作业名
调用这个过程时,系统会检测当前会话是否处于作业配置状态,如果不处于配置状态,则系统会报“非法的作业配置操作”的错误。
在成功执行该过程后,系统会将前面所做的所有操作提交,同时将这个作业加入到运行队列,运行的内容包括这个作业下定义的所有步骤的执行内容,执行方式就是根据这个作业下定义的所有的调度定义的执行方式来执行。
4.5 查看作业日志记录
创建的每一个作业信息都存储在作业表 SYSJOBS 中。通过查看表 SYSJOBS,可以看到所有已经创建的作业。
4.6 清除作业日志记录
因为日志记录会不断增加,越来越庞大,所以用户需要及时清理过时的日志。
可以通过系统过程 SP_JOB_CLEAR_HISTORIES 清除迄今为止某个作业的所有日志记录,即删除表 SYSJOBHISTORIES2、SYSSTEPHISTORIES2 中的相关记录。
SP_JOB_CLEAR_HISTORIES (JOB_NAME VARCHAR(128))
JOB_NAME 作业名
5.警报
警报是系统中发生的某种事件,如发生了特定的数据库操作,或出错信号,或者是作业的启动、执行完毕等事件。警报主要用于通知指定的操作员,以便其迅速了解系统中发生的状况。
5.1 创建警报
创建一个警报可以通过系统过程 SP_CREATE_ALERT 实现。
SP_CREATE_ALERT (NAME VARCHAR(128),ENABLED INT,TYPE INT,ERRTYPE INT,ERRCODE INT,DELAYTIME INT,DESCRIBE VARCHAR(8187))
NAME 警报名
ENABLE 是否启用警报,1启动,0不启动
TYPE 警报的类型,0表示发生错误时警报,1表示发生某些数据库事件时警报。
ERRTYPE 触发警报的错误和数据库事件。与TYPE相关。当 TYPE=0 时,ERRTYPE 表示触发警报的错误类型。取值 1~12。具体含义分别为:1常规错误;2 启动错误;3 系统错误;4 服务器配置错误;5 分析阶段错误;6 权限错误;7运行时错误;8 备份恢复错误;9 作业管理错误;10 数据库复制错误;11 其它错误;12 指定错误码。当 TYPE=1 时,ERRTYPE 表示触发警报的数据库事件。取值 1~4。具体含义分别为:1DDL 事件;2 授权回收事件;3 连接或断开数据库事件;4 数据库备份恢复事件。
ERRCODE 指定错误码,错误码取值和参数 TYPE、ERRTYPE 相关。当 TYPE=0、ERRTYPE 取 1~12 时,指定各种错误类型相关的错误码,ERRCODE 必须是小于 0 的整数。当 TYPE=1、ERRTYPE=1 时,指定 DDL 事件的错误码,ERRCODE 取值 1~15。如何取值,请参考如下规则:因为 DDL 事件包含 CREATE、ALTER、DROP 和 TRUNC 四种,所以此处的错误码是四种当中的任意几个组合值。ERRCODE 在 DM 数据库系统内部用四位二进制来表示它们的组合,从低位到高位依次是:CREATE、ALTER、DROP、TRUNCATE。1 表示指定,0 表示不指定。用户输入的 ERRCODE 值需要转化为十进制。例如,指定 CREATE 和 DROP,内部二进制表示为 0101,转化为十进制为 5,所以 ERRCODE 值就是 5。当 TYPE=1、ERRTYPE=2 时,指定授权回收事件的错误码,ERRCODE 取值 1、2、3。1 表示 GRANT 的错误码;2 表示 REVOKE 的错误码;3 表示 GRANT 和 REVOKE 的错误码。当 TYPE=1、ERRTYPE=3 时,指定连接事件的错误码,取值 1、2、3。1 表示 LOGIN的错误码;2 表示 LOGOUT 的错误码;3 表示 LOGIN 和 LOGOUT 的错误码。当 TYPE=1、ERRTYPE=4 时,指定数据库备份恢复事件的错误码,取值 1、2、3。1 表示 BACKUP 的错误码;2 表示 RESTORE 的错误码;3 表示 BACKUP 和 RESTORE 的错误码。
DELAYTIME 表示警报发生后推迟多久通知操作员,0~3600s
DESCRIBE 注释
5.2 修改警报
修改警报可以通过系统过程 SP_ALTER_ALERT 来实现。
SP_ ALTER _ALERT (NAME VARCHAR(128),ENABLED INT,TYPE INT,ERRTYPE INT,ERRCODE INT,DELAYTIME INT,DESCRIBE VARCHAR(8187))
参数和 SP_CREATE_ALERT 的参数完全相同,除了 NAME 不可修改外,其他的属性都可修改。对于可修改参数,如果要修改,则指定新值;如果不修改,则指定原值即可。
5.3 删除警报
删除警报通过调用系统过程 SP_DROP_ALERT 实现。
SP_DROP_ALERT (NAME VARCHAR(128))
NAME 警报名
5.4 关联
如果想要将警报的执行结果通知给指定操作员,需要将这个警报关联要通知到的操作员,关联操作员通过系统 SP_ALERT_ADD_OPERATOR 实现。一个警报可以关联多个操作员。
SP_ALERT_ADD_OPERATOR (ALERTNAME VARCHAR(128),OPR_NAME VARCHAR(128),ENABLEMAIL INT,ENABLENETSENT INT)
ALERTNAME 关联警报名
OPR_NAME 关联操作员名
ENABLEMAIL 表示指定警报的执行结果是否用邮件的方式通知指定的操作员。1 是;0 否。
ENABLENETSENT 表示指定警报的执行结果是否用网络发送的方式通知指定的操作员。1 是;0 否。这个功能只有在 WINDOWS 下才起作用。
5.5 取消
当不再需要某个警报与操作员的关联,可以通过系统过程 SP_ALERT _DROP_OPERATOR 来取消关联。
SP_ALERT_DROP_OPERATOR (ALERTNAME VARCHAR(128),OPR_NAME VARCHAR(128))
ALERTNAME 要取消关联的警报名
OPR_NAME 要取消关联的操作员
5.6 清除警告日志记录
清除某个警报的所有日志记录,即删除表 SYSALERTHISTORIES 中的相关记录。可以通过系统过程 SP_ALERT_DROP_HISTORIES 来实现。
SP_ALERT_DROP_HISTORIES (ALERTNAME VARCHAR(128))
ALERTNAME 待清除日志的警报名。
https://eco.dameng.com

浙公网安备 33010602011771号