下面用一个简单的示例,通过使用系统过程来展示管理作业是如何操作的。分为两部分:一是配置管理作业,二是查看监控结果。
7.1 配置作业管理
配置作业管理,分为 6 大步骤。
- 数据准备:一张表 MYJOB,A 列为主键。
DROP TABLE MYJOB;
CREATE TABLE MYJOB(
A INT primary key,
B VARCHAR(8188)
);
- 创建作业环境:十张作业相关系统表。
SP_INIT_JOB_SYS(1);
- 创建操作员 TOM。可以通过表 SYSOPERATORS 查看已创建操作员的相关信息。
SP_CREATE_OPERATOR('TOM', 1, 'tom@dameng.shanghai', '192.168.0.38');
-
开始配置作业。
1)创建作业 TEST。可以通过表 SYSJOBS 看到作业相关信息。
SP_CREATE_JOB('TEST', 1, 1, 'TOM', 2, 1, 'TOM', 2, '一个测试作业');
2)开始配置作业。
SP_JOB_CONFIG_START('TEST');
3)为作业增加一个步骤。
向表 MYJOB 中插入数据,因为 A 列是主键,所以第三条数据 A 列值重复会被报错,错误码-6602。可以通过表 SYSJOBSTEPS 查看到步骤相关信息。
SP_ADD_JOB_STEP('TEST', 'STEP', 0, 'insert into myjob values(1000,''STEP 1000'');insert into myjob values(1001, ''STEP 1001'');insert into myjob
values(1001, ''STEP 1001'');', 0, 1, 1, 1,'', 0);
4)为作业增加一个调度。可以通过表 SYSJOBSCHEDULES 查看到调度相关信息。
SP_ADD_JOB_SCHEDULE('TEST', 'SCHEDULE', 1, 1, 1, 0, 1, CURTIME, '23:59:59',CURDATE, NULL, '一个测试调度');
5)提交配置。
SP_JOB_CONFIG_COMMIT('TEST');
- 创建并关联警报
- 创建警报 ALERT1,指定错误码-6602。可以在表 SYSALERTS 中查看到警报的相关信息。
SP_CREATE_ALERT('ALERT1', 1, 0,12, -6602, 1, 'DDL警报测试');
- 关联警报,将警报 ALERT1 发送给关联的操作员 TOM。可以在表 SYSALERTNOTIFICATIONS 中查看到警报与操作员的关联信息。
SP_ALERT_ADD_OPERATOR('ALERT1','TOM',1,1);
- 监控作业
- 添加监控服务 DMJMON 管理员。可以通过表 SYSMAILINFO 查看监控服务器管理员信息。
SP_ADD_MAIL_INFO('SYSDBA','DMdba_123','192.168.0.212','admin@dameng.shanghai','admin@dameng.shanghai','888888');
- 开启监控服务。参考 6.2 节。
7.2 查看监控结果
- 通过表 SYSJOBHISTORIES2 查看作业的执行情况。
SQL> select * from sysjob.SYSJOBHISTORIES2;
行号EXEC_ID NAME START_TIME END_TIMEERRCODE ERRINFO HAS_NOTIFIED
----------------------------------------------------------------------------
1 280478578 TEST 2017-06-22 14:24:43.809 2017-06-22 14:24:44.841
-6602 [JOBTESTSCHEDULE] 违反表[MYJOB]唯一性约束 1
......
- 通过表 SYSALERTHISTORIES 查看警报发生的历史记录。
例如,当用户插入"insert into MYJOB values(1000,'STEP
1000');"一条语句时,表 SYSALERTHISTORIES 的查询结果如下:
SQL> select * from sysjob.SYSALERTHISTORIES;
行号 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
2017-06-22 15:09:30 违反表[MYJOB]唯一性 约束 -6602 1