注册
DM8入门实战:5个必用作业模板,新手直接抄
培训园地/ 文章详情 /

DM8入门实战:5个必用作业模板,新手直接抄

ZE 2025/11/07 164 0 0

做达梦数据库运维时,手动执行清理、备份这些重复操作不仅累,还容易忘!用「作业(Job)」就能实现自动化。

今天整理了5个生产环境最常用的作业模板,复制替换参数就能跑,新手也能轻松上手!

所有模板支持「DM Manager 图形化」和「SQL 命令行」,图形化操作只需填名称、粘 SQL、设调度时间即可。

记住这个黄金流程:创建作业 → 开启配置 → 加步骤 → 加调度 → 提交配置 → 启动作业

5个必用作业模板(完整可执行)

模板1:每日清理3个月前业务日志(最常用)

业务日志表会越存越大,拖慢查询速度,每天凌晨低峰期清理历史数据是必备操作。

-- 1. 创建空作业 call SP_CREATE_JOB('JOB_CLEAN_OPER_LOG', 1, 0, '', 0, 0, '', 0, '清理3个月前操作日志'); -- 2. 开启作业配置模式 call SP_JOB_CONFIG_START('JOB_CLEAN_OPER_LOG'); -- 3. 添加清理步骤(0=执行SQL语句) call SP_ADD_JOB_STEP('JOB_CLEAN_OPER_LOG', 'TASK_CLEAN', 0, 'DELETE FROM DMHR.USER_OPER_LOG WHERE OPER_TIME < ADD_MONTHS(SYSDATE, -3); COMMIT;', -- 清理3个月前日志并提交事务 0, 0, 0, 0, NULL, 0); -- 4. 添加调度(每日凌晨2点执行:1=循环调度,1=日周期) call SP_ADD_JOB_SCHEDULE('JOB_CLEAN_OPER_LOG', 'SCHEDULE_DAILY_2AM', 1, 1, 1, 0, 0, '02:00:00', NULL, SYSDATE, NULL, ''); -- 5. 提交配置(让配置生效) call SP_JOB_CONFIG_COMMIT('JOB_CLEAN_OPER_LOG'); -- 6. 启动作业(开始执行调度) call SP_JOB_CONFIG_START('JOB_CLEAN_OPER_LOG');

提示:如果日志表数据量极大,建议加 LIMIT 分批删除,避免锁表影响业务。

模板2:每周全量+每日增量备份(核心运维)

数据备份是运维底线!全量备份+增量备份组合,既保证数据完整,又节省存储空间。

子模板2.1:每周日凌晨3点全量备份

-- 1. 创建作业 call SP_CREATE_JOB('JOB_FULL_BACKUP', 1, 0, '', 0, 0, '', 0, '每周日全量备份'); -- 2. 开启配置 call SP_JOB_CONFIG_START('JOB_FULL_BACKUP'); -- 3. 添加备份步骤(调用达梦内置备份存储过程) call SP_ADD_JOB_STEP('JOB_FULL_BACKUP', 'TASK_FULL', 0, 'CALL SP_DATABASE_BACKUP(''BACKUP_PATH=/dm/backup'', -- 备份存放在这个路径 ''BACKUP_TYPE=FULL'', -- 全量备份类型 ''COMPRESS=1'');', -- 开启压缩节省空间 0, 0, 0, 0, NULL, 0); -- 4. 调度:每周日3点(1=循环调度,1=日周期,通过条件限定周日) call SP_ADD_JOB_SCHEDULE('JOB_FULL_BACKUP', 'SCHEDULE_WEEKLY_SUN', 1, 1, 1, 0, 0, '03:00:00', NULL, SYSDATE, NULL, 'TO_CHAR(SYSDATE,''D'')=''1'''); -- 5. 提交+启动 call SP_JOB_CONFIG_COMMIT('JOB_FULL_BACKUP'); call SP_JOB_CONFIG_START('JOB_FULL_BACKUP');

子模板2.2:每日凌晨2点增量备份(排除周日)

-- 1. 创建作业 call SP_CREATE_JOB('JOB_INCR_BACKUP', 1, 0, '', 0, 0, '', 0, '每日增量备份'); -- 2. 开启配置 call SP_JOB_CONFIG_START('JOB_INCR_BACKUP'); -- 3. 增量备份步骤 call SP_ADD_JOB_STEP('JOB_INCR_BACKUP', 'TASK_INCR', 0, 'CALL SP_DATABASE_BACKUP(''BACKUP_PATH=/dm/backup'', ''BACKUP_TYPE=INCR'', -- 增量备份 ''COMPRESS=1'');', 0, 0, 0, 0, NULL, 0); -- 4. 调度:每日2点,周日不执行(条件:TO_CHAR(SYSDATE,''D'')<>''1'') call SP_ADD_JOB_SCHEDULE('JOB_INCR_BACKUP', 'SCHEDULE_DAILY_2AM', 1, 1, 1, 0, 0, '02:00:00', NULL, SYSDATE, NULL, 'TO_CHAR(SYSDATE,''D'')<>''1'''); -- 5. 提交+启动 call SP_JOB_CONFIG_COMMIT('JOB_INCR_BACKUP'); call SP_JOB_CONFIG_START('JOB_INCR_BACKUP');

模板3:主备集群心跳(监控同步延时)

主备集群是高可用核心,通过1秒一次的心跳事务,能实时监控主备同步延迟,延迟过高及时告警。

-- 第一步:先创建心跳表(主库执行,主备自动同步) CREATE TABLE DMHR.DM_HA_HEARTBEAT ( ID INT PRIMARY KEY DEFAULT 1, MASTER_TIME TIMESTAMP(6), -- 主库事务提交时间(毫秒级) SLAVE_TIME TIMESTAMP(6) -- 备库重演时间(备库触发器更新) ); / -- 第二步:主库创建心跳作业(高频调度实现每秒执行) -- 1. 创建作业 call SP_CREATE_JOB('JOB_HA_HEARTBEAT', 1, 0, '', 0, 0, '', 0, '主备心跳事务(每秒执行)'); -- 2. 开启配置模式 call SP_JOB_CONFIG_START('JOB_HA_HEARTBEAT'); -- 3. 核心步骤:仅执行心跳更新(不包含延迟,通过调度频率控制间隔) call SP_ADD_JOB_STEP('JOB_HA_HEARTBEAT', 'TASK_HEART_BEAT', 0, 'BEGIN -- 仅主库执行心跳更新(DATABASE_STATUS=0为主库状态) IF (SELECT DATABASE_STATUS FROM V$INSTANCE) = 0 THEN MERGE INTO DMHR.DM_HA_HEARTBEAT HB USING (SELECT 1 AS ID, SYSTIMESTAMP AS MASTER_TIME FROM DUAL) T ON (HB.ID = T.ID) WHEN MATCHED THEN UPDATE SET HB.MASTER_TIME = T.MASTER_TIME WHEN NOT MATCHED THEN INSERT (ID, MASTER_TIME) VALUES (T.ID, T.MASTER_TIME); COMMIT; END IF; END;', 0, 0, 0, 0, NULL, 0); -- 4. 调度配置(每秒调度1次) -- 参数说明:1=循环调度,1=日周期,00:00:01=起始时间,无结束时间 call SP_ADD_JOB_SCHEDULE('JOB_HA_HEARTBEAT', 'SCHEDULE_1S_LOOP', 1, 1, 1, 0, 0, '00:00:01', NULL, SYSTIMESTAMP, NULL, ''); -- 5. 提交配置并启动作业 call SP_JOB_CONFIG_COMMIT('JOB_HA_HEARTBEAT'); call SP_JOB_CONFIG_START('JOB_HA_HEARTBEAT'); -- 第三步:备库执行触发器 CREATE TRIGGER TRG_HA_HEARTBEAT_SLAVE BEFORE UPDATE ON DMHR.DM_HA_HEARTBEAT FOR EACH ROW BEGIN :NEW.SLAVE_TIME := SYSTIMESTAMP; END; /

模板4:每日收集统计信息(优化查询性能)

数据库执行计划依赖统计信息,如果统计信息过时,会导致查询变慢。每日收集一次最省心。

-- 1. 创建作业 call SP_CREATE_JOB('JOB_ANALYZE_STATS', 1, 0, '', 0, 0, '', 0, '收集表统计信息'); -- 2. 开启配置 call SP_JOB_CONFIG_START('JOB_ANALYZE_STATS'); -- 3. 收集统计信息步骤 call SP_ADD_JOB_STEP('JOB_ANALYZE_STATS', 'TASK_ANALYZE', 0, 'BEGIN -- 调用达梦内置存储过程收集所有用户表统计信息 CALL SP_ANALYZE_TABLE_ALL(''USER_TABLES''); END;', 0, 0, 0, 0, NULL, 0); -- 4. 调度:每日凌晨1点(业务低峰期) call SP_ADD_JOB_SCHEDULE('JOB_ANALYZE_STATS', 'SCHEDULE_DAILY_1AM', 1, 1, 1, 0, 0, '01:00:00', NULL, SYSDATE, NULL, ''); -- 5. 提交+启动 call SP_JOB_CONFIG_COMMIT('JOB_ANALYZE_STATS'); call SP_JOB_CONFIG_START('JOB_ANALYZE_STATS');

模板5:清理7天前归档日志(避免磁盘占满)

归档日志会持续占用磁盘空间,不清理容易导致磁盘满挂,建议保留7天足够故障恢复。

-- 1. 创建作业 call SP_CREATE_JOB('JOB_CLEAN_ARCH', 1, 0, '', 0, 0, '', 0, '清理归档日志'); -- 2. 开启配置 call SP_JOB_CONFIG_START('JOB_CLEAN_ARCH'); -- 3. 清理步骤(3=执行操作系统命令,Linux环境) call SP_ADD_JOB_STEP('JOB_CLEAN_ARCH', 'TASK_CLEAN_ARCH', 3, 'find /dm/arch -name "*.arc" -mtime +7 -delete;', -- 删除7天前.arc归档文件 0, 0, 0, 0, NULL, 0); -- 4. 调度:每日凌晨2点30分 call SP_ADD_JOB_SCHEDULE('JOB_CLEAN_ARCH', 'SCHEDULE_DAILY_230AM', 1, 1, 1, 0, 0, '02:30:00', NULL, SYSDATE, NULL, ''); -- 5. 提交+启动 call SP_JOB_CONFIG_COMMIT('JOB_CLEAN_ARCH'); call SP_JOB_CONFIG_START('JOB_CLEAN_ARCH');

Windows环境替换步骤命令:forfiles /p "D:\dm\arch" /m *.arc /d -7 /c "cmd /c del @path"

作业状态查询与问题排查

配置完作业后,一定要验证是否正常运行,这两个命令帮你快速排查问题:

  1. 查看所有作业信息:
    SELECT * FROM SYSOBJECTS;

  2. 查看作业执行历史(看是否成功,失败原因是什么):
    SELECT * FROM SYSJOBHISTORY;

总结

这5个作业覆盖了达梦数据库运维的核心场景,记住**"创建→开启配置→加步骤→加调度→提交→启动"**的固定流程。实际使用时,只需替换表名、路径、时间等参数,新手也能实现自动化运维,解放双手!

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服