操作系统:CentOS Linux 7;
数据库软件:达梦数据库DM8;
虚拟平台:VMware Workstation Pro;
CPU架构:x86_64。
一次性作业(只执行一次,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;
/
循环作业持续执行
每天固定时间执行的作业(每天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;
/
禁用作业
BEGIN
DBMS_JOB.BROKEN(job_id, TRUE);
COMMIT;
END;
/
启用作业
BEGIN
DBMS_JOB.BROKEN(job_id, FALSE);
COMMIT;
END;
立即手动执行
BEGIN
DBMS_JOB.RUN(job_id);
COMMIT;
END;
/
修改作业调度规则(改为每 60 秒)
BEGIN
DBMS_JOB.CHANGE(job_id, NULL, SYSDATE, ‘SYSDATE + 60/86400’);
COMMIT;
END;
/
删除作业
BEGIN
DBMS_JOB.REMOVE(job_id);
COMMIT;
END;
/
准备数据表
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;
创建作业
SP_CREATE_JOB(‘TEST’, 1, 1, ‘TOM’, 2, 1, ‘TOM’, 2, ‘一个测试作业’);
SELECT ID, NAME, ENABLE FROM SYSJOB.SYSJOBS_$ORG WHERE NAME = ‘TEST’;
开始配置
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);
添加调度(立即开始,每天 23:59:59 截止)
SP_ADD_JOB_SCHEDULE(‘TEST’, ‘SCHEDULE’, 1, 1, 1, 0, 1, CURTIME, ‘23:59:59’, CURDATE, NULL, ‘一个测试调度’);
提交配置
SP_JOB_CONFIG_COMMIT(‘TEST’);
创建警报(错误码 -6602 = 主键冲突)
SP_CREATE_ALERT(‘ALERT1’, 1, 0, 12, -6602, 1, ‘主键冲突警报’);
关联警报到操作员 TOM
SP_ALERT_ADD_OPERATOR(‘ALERT1’, ‘TOM’, 1, 1);
SP_ADD_MAIL_INFO(‘SYSDBA’, ‘DMdba_123’, ‘192.168.0.212’, ‘admin@dameng.shanghai’, ‘admin@dameng.shanghai’, ‘888888’);
BEGIN
DBMS_JOB.RUN(1785721084);
COMMIT;
END;
/
文章
阅读量
获赞
