注册
作业系统学习
专栏/技术分享/ 文章详情 /

作业系统学习

🌊Amaharashi 2026/08/28 94 0 0
摘要

1 测试环境

操作系统:CentOS Linux 7;
数据库软件:达梦数据库DM8;

2 实验环境

虚拟平台:VMware Workstation Pro;
CPU架构:x86_64。

3 应用实例

3.1 准备测试表

image.png

3.2 创建不同类型作业

一次性作业(只执行一次,5 秒后执行)
DECLARE
job_id INT;
BEGIN
DBMS_JOB.SUBMIT(
job_id,
‘SP_JOB_TEST(’‘一次性作业执行成功’’);’,
SYSDATE + 5/86400, – 5秒后执行
NULL – NULL 表示只执行一次
);
COMMIT;
PRINT job_id;
END;
/
循环作业(每30秒执行一次)
DECLARE
job_id INT;
BEGIN
DBMS_JOB.SUBMIT(
job_id,
‘SP_JOB_TEST(’‘每30秒循环作业’’);’,
SYSDATE,
‘SYSDATE + 30/86400’ – 每30秒执行
);
COMMIT;
PRINT job_id;
END;
/
image.png
循环作业持续执行
image.png
每天固定时间执行的作业(每天9:00)
DECLARE
job_id INT;
BEGIN
DBMS_JOB.SUBMIT(
job_id,
‘SP_JOB_TEST(’‘每天9点作业’’);’,
TRUNC(SYSDATE) + 9/24,
‘TRUNC(SYSDATE+1) + 9/24’
);
COMMIT;
PRINT job_id;
END;
/
每月 1 号执行的作业
DECLARE
job_id INT;
BEGIN
DBMS_JOB.SUBMIT(
job_id,
‘SP_JOB_TEST(’‘每月1号作业’’);’,
TRUNC(SYSDATE),
‘TRUNC(ADD_MONTHS(SYSDATE,1),’‘MM’’)’
);
COMMIT;
PRINT job_id;
END;
/
image.png

3.3 作业管控

禁用作业
BEGIN
DBMS_JOB.BROKEN(job_id, TRUE);
COMMIT;
END;
/
image.png
启用作业
BEGIN
DBMS_JOB.BROKEN(job_id, FALSE);
COMMIT;
END;

立即手动执行
BEGIN
DBMS_JOB.RUN(job_id);
COMMIT;
END;
/
image.png
修改作业调度规则(改为每 60 秒)
BEGIN
DBMS_JOB.CHANGE(job_id, NULL, SYSDATE, ‘SYSDATE + 60/86400’);
COMMIT;
END;
/
image.png
删除作业
BEGIN
DBMS_JOB.REMOVE(job_id);
COMMIT;
END;
/
image.png

3.4 作业监控

image.png

3.5 SP_CREATE_JOB配置作业管理

准备数据表
DROP TABLE MYJOB;

CREATE TABLE MYJOB(
A INT PRIMARY KEY,
B VARCHAR(8188)
);
创建操作员
SP_CREATE_OPERATOR(‘TOM’, 1, ‘tom@dameng.shanghai’, ‘192.168.0.38’);
SELECT * FROM SYSJOB.SYSOPERATORS_$ORG;
image.png
创建作业

SP_CREATE_JOB(‘TEST’, 1, 1, ‘TOM’, 2, 1, ‘TOM’, 2, ‘一个测试作业’);
SELECT ID, NAME, ENABLE FROM SYSJOB.SYSJOBS_$ORG WHERE NAME = ‘TEST’;
image.png

3.6 配置作业

开始配置
SP_JOB_CONFIG_START(‘TEST’);
– 添加步骤(故意插入重复主键,触发 -6602 错误以演示告警)
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);
image.png
添加调度(立即开始,每天 23:59:59 截止)
SP_ADD_JOB_SCHEDULE(‘TEST’, ‘SCHEDULE’, 1, 1, 1, 0, 1, CURTIME, ‘23:59:59’, CURDATE, NULL, ‘一个测试调度’);
image.png
提交配置
SP_JOB_CONFIG_COMMIT(‘TEST’);
image.png

3.7 创建警报并关联操作员

创建警报(错误码 -6602 = 主键冲突)
SP_CREATE_ALERT(‘ALERT1’, 1, 0, 12, -6602, 1, ‘主键冲突警报’);
image.png
关联警报到操作员 TOM
SP_ALERT_ADD_OPERATOR(‘ALERT1’, ‘TOM’, 1, 1);

image.png

3.8 配置监控邮件

SP_ADD_MAIL_INFO(‘SYSDBA’, ‘DMdba_123’, ‘192.168.0.212’, ‘admin@dameng.shanghai’, ‘admin@dameng.shanghai’, ‘888888’);
image.png

3.9 运行作业触发告警

BEGIN
DBMS_JOB.RUN(1785721084);
COMMIT;
END;
/
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服