一、基本功能
作业系统大致包含作业,警报,操作员三部分。
作业可运行DMPL/SQL脚本,定期备份数据库,检查等。可定时执行,也可通过警报触发执行,可产生警报通知用户状态。一个作业由多个步骤组成,对应数据库动作。
普通用户配置作业需要ADMIN JOB权限。
GRANT ADMIN JOB TO T_USER;
注意: ADMIN JOB 没有作业环境初始化SP_INIT_JOB_SYS(1)和作业环境销毁 SP_INIT_JOB_SYS(0)的权限。
1.1 创建作业环境
要使用作业,需要先创建作业环境。创建环境会在SYSJOB模式下创建十张表用来存储作业相关的对象,历史记录等。
SYSJOBS(保存作业信息)
SYSJOBSTEPS(保存步骤信息)
SYSJOBSCHEDULES(保存调度信息)
SYSMAILINFO(作业管理系统管理员信息)
SYSJOBHISTORIES2(保存作业的执行情况日志)
SYSSTEPHISTORIES2(保存作业步骤的执行情况)
SYSALERTHISTORIES(存储警报发生的历史记录日志)
SYSOPERATORS(已定义的操作员信息)
SYSALERTS(已定义的报警信息)
SYSALERTNOTIFICATIONS(警报需要通知的操作员信息,即警报与操作员的关联信息,只能有一个关联信息)
管理系统表
创建/删除作业相关系统表有两种方式:使用SP_INIT_JOB_SYS或用MANAGER工具。
使用系统过程创建表:
SP_INIT_JOB_SYS(1);
查看创建的系统表:
SELECT NAME AS "表名" FROM SYSOBJECTS WHERE SUBTYPE$='UTAB' AND SCHID IN (SELECT A.ID FROM SYSOBJECTS A,ALL_USERS B WHERE A.TYPE$='SCH' AND A.PID=B.USER_ID AND A.NAME='SYSJOB');
删除作业环境系统表,查看:
SP_INIT_JOB_SYS(0);
通过图形化创建时,直接在“代理”上右键,“创建代理环境”即可。
1.2 操作员
创建作业时必须指定操作员。创建操作员同样可以使用系统过程或图形化工具实现。
分别使用SP_CREATE_OPERATOR、 SP_ALTER_OPERATOR 和 SP_DROP_OPERATOR 三个过程来完成操作员的创建、修改和删除.
1.2.1 创建操作员
创建操作员TEST,指定邮箱和IP。
SP_CREATE_OPERATOR('TEST',1,'邮箱','IP');
SELECT *FROM SYSJOB.SYSOPERATORS;
1.2.2 修改操作员
操作员名称不可修改。其余内容修改使用系统过程SP_ALTER_OPERATOR();
SP_ALTER_OPERATOR('TEST',1,'邮箱','IP');
SELECT *FROM SYSJOB.SYSOPERATORS;
1.2.3 删除操作员
使用系统过程SP_DROP_OPERATOR();
SP_DROP_OPERATOR('TEST');
SELECT *FROM SYSJOB.SYSOPERATORS;
1.3 作业
通过系统过程创建,修改,删除作业。
1.3.1 创建作业
SP_CREATE_JOB();
创建作业FULL_BAK,启用,关闭邮件系统,邮件通知操作员名称为空,EMAIL_TYPE为0,关闭网络发送,网络信息通知操作员名称为空, NESTEND为0,描述为测试作业
SP_CREATE_JOB('FULL_BAK',1,0,'',0,0,'',0,'FULL BAKUP DATABASE');
创建完成后会在SYSJOBS表中插入记录。
1.3.2 修改作业
除作业名不可修改外,其他参数可使用SP_ALTER_JOB修改。
SP_ALTER_JOB('FULL_BAK',1,0,'',0,0,'',0,'ECN BACKUP DATABASE');
1.3.3 删除作业
SP_DROP_JOB();
删除作业FULL_BAK
SP_DROP_JOB('FULL_BAK');
1.4 配置作业
作业创建完成后需要配置才能执行,配置主要包括一下步骤:
开始配置
指定要配置的作业
增加步骤
增加调度
结束配置
使用SP_JOB_CONFIG_START();
开始配置到结束配置期间,当前会话处于作业配置状态,不允许对作业对象做修改,创建,删除操作。
1.4.1 开始配置
SP_JOB_CONFIG_START('FULL_BAK');
1.4.2 增加步骤
给FULL_BAK增加步骤,步骤名SETP_FULL_BAK, 类型为6,执行语句01000900/home/dmdba/dmdbms/data/DAMENG/bak/all,执行成功后报告成功,失败后报告并结束,不重试
SP_ADD_JOB_STEP('FULL_BAK', 'SETP_FULL_BAK', 6, '01000900/home/dmdba/dmdbms/data/DAMENG/bak/all', 1, 2, 0, 0, NULL, 0);
1.4.3 修改步骤
使用SP_ALTER_JOB_STEP()函数,参数设置同创建。
删除步骤
SP_DROP_JOB_SETP();
删除FULL_BAK作业的SETP_FULL_BAK步骤。
SP_DROP_JOB_STEP('FULL_BAK','SETP_FULL_BAK');
1.4.4 作业调度
必须再配置开始后进行。
增加调度
增加调度FULL_BAK_ONE,启用,只执行一次
SP_ADD_JOB_SCHEDULE('FULL_BAK', 'FULL_BAK_ONE', 1, 0, 0, 0, 0, NULL, NULL, '2021-04-19 17:38:00', NULL, '');
修改调度
修改使用SP_ALTER_JOB_SCHEDULE函数,参数同创建。
删除调度
SP_DROP_JOB_SCHEDULE();
删除FULL_BAK_ONE
SP_DROP_JOB_SCHEDULE('FULL_BAK','FULL_BAK_ONE');
结束配置
配置完成后,结束作业配置。这时提交前面所作的操作,并将这个作业加入到运行队列。
SP_JOB_CONFIG_COMMIT('FULL_BAK');
注意:不支持在设置了DML自动提交的会话上配置作业(如DISQL设置SET AUTO ON)
查看,清除作业日志
查看表SYSJOBS可以看到作业信息。
SELECT *FROM SYSJOB.SYSJOBS;
清除作业日志记录
SP_JOB_CLEAR_HISTORIES('FULL_BAK');
1.5 警报
警报信息通过SP_CREATE_ALTERT定义,存储在SYSALTERTS表中。
定义一个错误码警报
SP_CREATE_ALERT('ALERT_01',1, 0, 1, -600, 1, '错误码测试');
修改警报
使用SP_ALTER_ALERT();
SP_ALTER_ALERT('ALERT_01', 1, 1, 1, 15, 1, '修改警报测试');
删除警报
使用SP_DROP_ALERT();
删除AERT_01
SP_DROP_ALERT('ALERT_01');