达梦8查看是否建立定时作业调度
一、创建十进制数转换为二进制函数
CREATE OR REPLACE FUNCTION NUMBER_TO_BIT (V_NUM NUMBER,v_type varchar(50))
RETURN VARCHAR IS
V_ZHOU VARCHAR(7); --注意返回列长度
V_YUE VARCHAR(31);--注意返回列长度
V_N1 NUMBER;
V_N2 NUMBER;
BEGIN
--返回二进制长度
if v_type =='周' then
V_N1 := V_NUM;
LOOP
V_N2 := MOD(V_N1, 2);
V_N1 := ABS(TRUNC(V_N1 / 2));
V_zhou := TO_CHAR(V_N2) || V_ZHOU;
EXIT
WHEN V_N1 = 0;
END LOOP;
SELECT lpad(V_ZHOU, 7, 0) INTO V_ZHOU FROM dual;
return V_ZHOU;
ELSIF V_TYPE =='月' then
V_N1 := V_NUM;
LOOP
V_N2 := MOD(V_N1, 2);
V_N1 := ABS(TRUNC(V_N1 / 2));
V_YUE := TO_CHAR(V_N2) || V_YUE;
EXIT
WHEN V_N1 = 0;
END LOOP;
SELECT lpad(V_YUE, 31, 0) INTO V_YUE FROM dual;
return V_YUE;
END IF ;
end;
二、查询已建立的作业调度
SELECT A.ID "作业iD",A.NAME "作业名称",
case A.ENABLE WHEN 0 THEN '不启用' when 1 THEN '启用' end "作业是否用",
B.name "步骤名称",
case B.TYPE
when 0 then '执行一段SQL语句或者是语句块'
when 1 then '执行基于V1.0版本的备份还原(没有WITHOUT LOG和PARALLEL选项)'
when 2 then '重组数据库'
when 3 then '更新数据库的统计信息'
when 4 then '执行DTS(数据迁移)'
when 5 then '执行基于V1.0版本的备份还原(有WITHOUT LOG和PARALLEL选项)'
when 6 then '执行基于V2.0版本的备份还原'
end "步骤的类型",
B.COMMAND "运行时执行语句",
case C.ENABLE
WHEN 0 THEN '不启用'
when 1 THEN '启用'
end "调度是否用",
case C.TYPE
when 0 then '只执行一次块'
when 1 then '按天的频率来执行'
when 2 then '按周的频率来执行'
when 3 then '在一个月的某一天执行'
when 4 then '在一个月的第一周第几天执行'
when 5 then '在一个月的第二周的第几天执行'
when 6 then '在一个月的第三周的第几天执行'
when 7 then '在一个月的第四周的第几天执行'
when 8 then '表示在一个月的最后一周的第几天执行'
end "调度类型",c.name "调度名称",
case C.TYPE
when 0 then C.FREQ_INTERVAL
when 1 then '每隔' ||C.FREQ_INTERVAL ||'天执行'
when 2 then '每隔' ||C.FREQ_INTERVAL ||'个星期执行'
when 3 then '每隔' ||C.FREQ_INTERVAL ||'个月中的某一天执行'
else '每隔' ||C.FREQ_INTERVAL'个月的某一周执行' end "执行频率" ,
case C.TYPE
when 0 then '值无效,系统不会做检查'
when 1 then '值无效,系统不会做检查'
when 2 then
NUMBER_TO_BIT(C.FREQ_SUB_INTERVAL, '周')
when 3 then C.FREQ_SUB_INTERVAL
end "更精细的执行频率", c.FREQ_MINUTE_INTERVAL "间隔分钟"
FROM SYSJOB.SYSJOBS A,SYSJOB.SYSJOBSTEPS B,SYSJOB.SYSJOBSCHEDULES C
WHERE A.ID =B.JOBID AND A.ID =C.JOBID ;
注意:DM 数据库系统内部用七位二进制来表示选中的日子。从最低位开始算起,依次表示周日、周一...周五、周六。选中周几,就将该位置 1,否则 0。例如,选中周二和周六,7 位二进制就是 1000100,转化成十进制就是 68,所以 FREQ_SUB_INTERVAL 就取值 68。
select * from SYSJOB.SYSJOBS A;--作业信息表
select * from SYSJOB.SYSJOBSTEPS B;--作业步骤信息表
select * from SYSJOB.SYSJOBSCHEDULES C;--作业调度信息表
更多资讯请上达梦技术社区了解: https://eco.dameng.com