DM数据库作业管理基础
一、作业概述
DM的作业系统为用户提供了创建作业,并对作业进行调度执行以完成相应管理任务的功能。可以让这些重复的数据库任务自动完成,实现日常工作自动化。
部分 | 说明 |
---|---|
操作员 | 操作员是负责维护DM服务器运行实例的个人 |
作业 | 作业是由DM代理程序按顺序执行的一系列指定的操作 |
警报 | 警报是系统中发生的某种事件后,会通知指定的操作员 |
调度 | 调度是用户定义的一个时间安排,在给定的时刻到来时,系统会启动相关的作业 |
本文通过图形化和命令行两种方式对DM作业管理板块的功能进行了总结,并在最后集结了需要用到的函数,基本包含了整个作业系统。以此来加深对作业部分的理解!
二、图形化创建作业环境
2.1创建代理环境
在DM MANAGER管理工具中,右击代理。如下所示:
点击创建代理环境,即可创建代理环境成功。创建成功后,会增加SYSJOB模式(含系统表);同时,代理下拉菜单中出现:作业、警报和操作员。如下所示:
创建成功的代理界面
点击清理代理环境,是创建代理环境的相反步骤。会删除和作业相关的一切信息。
2.2创建、修改、删除操作员
2.2.1创建操作员
点击代理中的操作员。可以看到新建操作员、设置过滤、清除过滤和刷新按钮。如下所示:
选中新建操作员。会出现如下界面:
常规页面,用来添加操作员
2.2.2修改操作员
选中要修改的操作员。如下所示:
点击修改,即可出现如下界面。例如,将TOM的邮箱修改为tom@dameng.guangzhou。如下所示:
2.2.3 删除操作员
选中要删除的操作员名称,点击删除即可。如下所示:
2.3创建、修改、删除作业
点击代理中的作业。可以看到新建作业、设置过滤和清除过滤、查看作业历史信息和清理作业历史信息、刷新按钮。如下所示:
2.3.1创建作业
点击新建作业按钮,会出现作业对话框。作业对话框用于实现作业的创建与配置,包含常规、作业步骤、作业调度、DDL 四部分。
填写作业名,启用点击确定,一个空作业便成功创建了。
2.3.2修改(配置)作业
右击新建的作业,点击修改。
可以修改作业名等信息,也配置作业步骤和作业调度
添加作业步骤:点击添加
会出现如下详情页面,可在如下页面填写步骤名称,选择步骤类型,以及填写sql语句或者打开sql脚本文件。
也可以在高级页面设置作业步骤完成时的操作,设置完毕之后,点击确定。
接下来可以添加作业调度,点击新建:
填写调度名称,选择调度类型和发生频率等信息,点击确定:
修改完信息之后就可以确定修改了。
2.3.3 删除作业
在作业处右击删除即可
2.4创建、修改、删除警报
2.4.1创建警报
在警报处右击,可以进行新建警报
进入警报界面,填好警报名,选择警报类型和错误类型等基本信息之后,就可以进入通知信息界面的设置
通知信息界面如下所示,界面中包含了可选择电子邮件通知操作员或者网络消息通知操作员,选择完毕之后点击确定,警报便创建完成!
2.4.2修改警报
在已有的警报下右击,点击修改,即可进行修改该警报
2.4.3 删除警报
在已有的警报下右击,点击删除,即可进行删除该警报
2.5监控作业
2.5.1为监控服务配置管理员
右击代理,选中配置代理属性:
进入如下页面,点击添加按钮,即可添加管理员
进入如下页面,填写登录名,登录密码,Email地址和服务器,如果不勾选SMTP服务器要求身份验证,则用户名和密码不起作用。
创建好之后,点击确定,管理员就配置完成了。
在以上界面中,还可修改和删除管理员!
2.5.2开启监控服务
控制台进入tool工具下的dmservice.sh工具,查看服务
右击该服务,点击属性,即可查看该服务。
点击数据库连接串,输入将要用到的主库名、端口号、监控服务管理员的用户名和密码。此处的管理员必须6.1节中添加成功的管理员,即表SYSMAILINFO中可以查询到的。例如,主库名192.168.0.38,端口号5236,用户名SYSDBA,密码SYSDBA。
三、命令行创建作业环境
3.1创建代理环境
创建SYSJOB模式(创建代理)及系统表的语句,语法如下:
SP_INIT_JOB_SYS(1);
删除SYSJOB模式(删除代理)及系统表的语句,语法如下:
SP_INIT_JOB_SYS(0);
3.2创建、修改、删除操作员
3.2.1创建操作员
在数据库中创建了前述作业管理表后,就可以进行作业的配置了。由于在创建一个作业时必须要指定操作员,所以需要创建一个操作员。
创建操作员可以直接通过调用系统过程来实现,过程名为SP_CREATE_OPERATOR,所创建的操作员信息都会存储于表SYSOPERATORS中。表结构如下:
SP_CREATE_OPERATOR (
opr_name varchar(128), #操作员名称
enabled int, #是否启用这个操作员
emailaddr varchar(128), #操作员的EMAIL地址
netsend_ip varchar(128) #操作员的IP地址
)
例如,创建一个名为TOM的操作员。
SP_CREATE_OPERATOR('TOM', 1, 'tom\@dameng.shanghai', '192.168.0.38');
3.2.2修改操作员
如果DBA希望修改某一个操作员的某些信息,DM也提供了相应的系统过程,函数名为SP_ALTER_OPERATOR。表结构如下:
SP_ALTER_OPERATOR (
opr_name varchar(128), #操作员名称
enabled int, #是否启用这个操作员
emailaddr varchar(128), #操作员的EMAIL地址
netsend_ip varchar(128) #操作员的IP地址
)
例如,修改操作员TOM的信息,修改了TOM的IP地址,并将TOM置为不可用。
SP_ALTER_OPERATOR('TOM', 0, 'tom\@dameng.shanghai', '192.168.0.38');
3.2.3 删除操作员
可以通过调用系统过程来删除一个操作员,过程名为 SP_DROP_OPERATOR。表结构如下:
SP_DROP_OPERATOR (
opr_name varchar(128)
)
例如,删除名为TOM的操作员。
SP_DROP_OPERATOR('TOM');
3.3创建、修改、删除作业
3.3.1创建作业
在创建操作员之后,就可以创建作业了。创建作业通过系统过程 SP_CREATE_JOB 实现。表结构如下:
SP_CREATE_JOB (
job_name varchar(128), #作业名称
enabled int, #作业是否启用
enable_email int, #作业是否开启邮件系统
email_optr_name varchar(128), #指定操作员名称
email_type int, #在什么情况下发送邮件
enabled_netsend int, #作业是否开启网络发送
netsend_optr_name varchar(128), #指定操作员名称
netsend_type int, #在什么情况下发送网络信息
describe varchar(8187) #作业描述信息
)
例如,创建一个名为 TEST 的作业。
SP_CREATE_JOB('TEST', 1, 1, 'TOM', 2, 1, 'TOM', 2, '每一个测试作业');
创建完成这个作业后,系统就会在 SYSJOBS 中插入一条相应的记录,但是这个作业不会做任何事情,只是一个空的作业,如果需要让它执行,还需要配置这个作业。
3.3.2修改作业
如果 DBA 发现某一个作业中的信息不合理需要修改,可以调用系统过程 SP_ALTER_JOB 来实现。语法如下:
SP_CREATE_JOB (
job_name varchar(128), #作业名称
enabled int, #作业是否启用
enable_email int, #作业是否开启邮件系统
email_optr_name varchar(128), #指定操作员名称
email_type int, #在什么情况下发送邮件
enabled_netsend int, #作业是否开启网络发送
netsend_optr_name varchar(128), #指定操作员名称
netsend_type int, #在什么情况下发送网络信息
describe varchar(8187) #作业描述信息
)
例如,下面的语句修改了作业 TEST 的一些信息。作业属性修改后,需要重新配置作业,使修改生效。
SP_ALTER_JOB('TEST', 0, 1, 'DBA', 2, 1, 'DBA', 2, '修改一个作业');
SP_JOB_CONFIG_START('TEST');
SP_JOB_CONFIG_COMMIT('TEST');
3.3.3 删除作业
如果一个作业已经执行完成,或者由于其它什么原因需要删除作业,可以调用系统过程 SP_DROP_JOB 实现。语法如下:
SP_DROP_JOB (
job_name varchar(128) #作业名称
)
例如,删除作业 TEST。
SP_DROP_JOB('TEST');
3.3.4配置作业
上面所述的内容都是最基本的一些操作,所创建的作业都还不能执行任何操作,只是一个空的作业,如果想要这个作业能执行一些指定的操作,还需要对这个作业进行配置。
配置一个作业主要包括以下几个步骤:
- 开始作业配置;
- 指定要开始配置一个作业;
- 为指定的作业增加步骤;
- 为指定的作业增加调度;
- 结束作业配置。
只有在结束作业配置后,这个作业才算配置完成。
用系统过程 SP_JOB_CONFIG_START 指定对一个作业配置的开始。语法如下:
SP_JOB_CONFIG_START (
job_name varchar(128) #作业的名称
)
例如,开始对作业 TEST 进行配置。
SP_JOB_CONFIG_START('TEST');
增加作业的步骤通过系统过程 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 #输出文件的追写方式
)
例如,下面的语句为作业 TEST 增加了步骤 STEP1。
SP_ADD_JOB_STEP('TEST', 'STEP1', 0, 'insert into myinfo values(1000, ''Hello
World''); ', 0, 0, 2, 1, NULL, 0);
#STEP1指定的是执行SQL语句,其COMMAND参数指定的是向MYINFO表中插入一条记录,
#执行成功和失败的下一步动作都是不报告步骤执行结果并结束作业,
#同时指定了失败后只重试两次,时间间隔为1秒钟。
修改作业的步骤通过系统过程 SP_ALTER_JOB_STEP 实现,其参数和SP_ADD_JOB_STEP一样。
如果用户发现一个作业中的某个步骤不需要了,可以通过系统过程 SP_DROP_JOB_STEP 删除这个步骤。语法如下:
SP_DROP_JOB_STEP (
job_name varchar(128), #作业名
step_name varchar(128) #步骤名
)
例如,为作业 TEST 删除步骤 STEP1。
SP_DROP_JOB_STEP('TEST', 'STEP1');
3.4创建、修改、删除警报
3.4.1创建警报
创建一个警报可以通过系统过程 SP_CREATE_ALERT 实现。警报的定义信息都存储在系统表 SYSALERTS 中。语法如下:
SP_CREATE_ALERT (
name varchar(128), #警报名
enabled int, #警报是否开启
type int, #警报类型
errtype int, #触发警报的错误和数据库事件
errcode int, #指定错误码
delaytime int, #警报发生后,推迟多长时间通知操作员
describe varchar(8187) #警报的注释
)
例如,创建一个名为 ALERT1 的警报。
SP_CREATE_ALERT('ALERT1',1, 0, 1, -600, 1, '错误码的测试');
#创建了一个名为 ALERT1 的警报,ENABLE 为 1 表示开启,TYPE 为 0 表示发生错误时警报,
#ERRTYPE 指定的是 1 表示常规错误,表示只有发生常规错误时警报才发生,
#DELEYTIME 指定可以推迟 1 秒钟通知操作员。
#警报发生后,系统会将对应信息存储到上面提到的 SYSALERTHISTORIES 表中。
3.4.2修改警报
修改警报可以通过系统过程 SP_ALTER_ALERT 来实现。其参数和SP_CREATE_ALERT是一样的。
例如,下面的语句修改警报 ALERT1。
SP_ALTER_ALERT('ALERT1', 1, 1, 1, 15, 1, 'DDL警报测试');
#修改警报ALERT1,ENABLE还是原来的值,没有被修改;
#TYPE修改为1,表示对事件的捕获;ERRTYPE 修改为 1,表示的是对事件中的 DDL 进行捕获;
#ERRCODE修改为15,四种类型CREATE、ALTER、DROP、TRUNC,15为二进制1111,就是选中了这四个操作;
#DELAYTIME 没有被修改;ADDITION_TXT 被修改为'DDL 警报测试'。
#修改后的警报只要系统做了DDL操作就会被激发,同时会将信息存储到SYSALERTHISTORIES表中。
3.4.3 删除警报
删除警报通过调用系统过程 SP_DROP_ALERT 实现。语法如下:
SP_DROP_ALERT (
name varchar(128), #警报名
)
例如 , 下面的语句删除警报 ALERT1。
SP_DROP_ALERT('ALERT1');
3.4.4为警报关联操作员
一个警报可以关联多个操作员。语法如下:
SP_ALERT_ADD_OPERATOR (
alertname varchar(128), #警报名
opr_name varchar(128), #操作员名
enablemail int, #是否用邮件的方式通知指定的操作员
enablenetsent int #是否用网络发送的方式通知指定的操作员
)
例如,下面的语句指定 ALERT1 警报的执行结果用邮件和网络两种方式通知操作员 TOM。
SP_ALERT_ADD_OPERATOR('ALERT1','TOM',1,1);
当不再需要某个警报与操作员的关联,可以通过系统过程 SP_ALERT_DROP_OPERATOR 来取消关联。语法如下:
SP_ALERT_DROP_OPERATOR (
alertname varchar(128),
opr_name varchar(128)
)
3.5监控作业
监控作业是指把作业的运行情况通过电子邮件发送给作业操作员。邮件成功发送的前提有两个:
一是为监控服务配置管理员;二是开启监控服务。
3.5.1为监控服务配置管理员
可以通过SP_ADD_MAIL_INFO来添加监控服务管理员。语法如下:
SP_ADD_MAIL_INFO (
login_name varchar(128), #监控服务管理员名称,必须是有效的数据库登录用户
login_pwd varchar(128), #登录时的密码
smtp_server varchar(128), #邮件SMTP服务器
email varchar(128), #用户的电子邮件地址
user_name varchar(128), #邮件用户名(和邮件地址写法要完全一样)
user_pwd varchar(128) #邮箱登录密码
)
例如,增加一个DMJMON操作员的信息。
SP_ADD_MAIL_INFO('SYSDBA','SYSDBA','192.168.0.212','gyf@dameng.shanghai',
'gyf@dameng.shanghai','******');
修改某个作业操作员的信息,可以通过SP_ALTER_MAIL_INFO来实现,其参数和SP_ADD_MAIL_INFO是一样的。
删除一个作业操作员,可以通过SP_DROP_MAIL_INFO来实现,则该操作员失效,不会再向该操作员发送信息。语法如下:
SP_DROP_MAIL_INFO (
login_name varchar(128) #待删除操作员的名称
)
例如,删除操作员SYSDBA的信息。
SP_DROP_MAIL_INFO ('SYSDBA');
3.5.2开启监控服务
进入DM安装目录下的bin目录,直接打开应用程序dmjmon就可以启动监控服务。
例如,开启作业监控服务器。
./dmjmon userid=SYSDBA/SYSDBA@192.168.0.38:5236
四、总结
以下是我总结的DM作业管理常用函数,除了最后一个启动作业监控服务是在DM的bin目录下执行外,其余函数全在disql或者manager中去执行。
以上就是有关DM作业管理的基础内容啦,清楚了整套作业管理系统后,是不是觉得对于一些定期要做的基础性的操作会更省力了呢?后续我会继续更新有关DM作业管理的实战内容。以上内容如有问题,欢迎相互交流沟通!
达梦在线服务平台: https://eco.dameng.com