手册概述
本手册旨在为数据库管理员和技术人员提供一套完整、清晰的操作指南,用于检查和验证达梦(Dameng)数据库的备份情况。通过遵循本手册的步骤,您可以有效地确认自动备份策略、核查备份执行状态、定位备份文件,并验证备份文件的有效性,从而确保数据的安全与可恢复性。
核心内容
达梦数据库的自动备份通常通过其 代理作业 (Agent Job) 功能实现。因此,检查是否配置了自动备份,关键在于查看是否存在相应的代理作业。
操作步骤:
结果判断:
DB_BAK_FULL
(全量备份) 或 DB_BAK_INC
(增量备份) 的作业名称,这通常意味着自动备份已经配置。深入验证作业类型:
为确保该作业确实是备份任务,可以按以下步骤进行确认:
DB_BAK_FULL
)。确认备份作业存在后,下一步是检查其历史执行记录,确保它们按计划成功运行。
DB_BAK_FULL
)。您也可以通过查询系统视图来获取作业历史记录,这种方法适用于无法使用图形化界面或需要自动化脚本检查的场景。
执行以下SQL语句:
-- 查询作业历史记录,按开始时间降序排列,只显示最近20条
SELECT *
FROM SYSJOB.SYSJOBHISTORIES2
ORDER BY START_TIME DESC
LIMIT 20;
结果解读:
ERRORCODE
和 ERRINFO
字段。如果值为 NULL
或 0
,代表该次执行成功。了解备份文件的存储位置对于后续的文件管理和验证至关重要。
执行以下SQL查询作业步骤的详细信息:
-- 查询所有作业步骤的详细信息
SELECT * FROM SYSJOB.SYSJOBSTEPS;
结果解读:
COMMAND
字段的内容。该字段包含了备份命令的详细参数,其中就包括了备份文件的完整路径。
D:\dmdms\data\bak\full
。D:\dmdms\data\bak\full|D:\dmdms\data\bak\inc'
。仅仅确认备份成功执行是不够的,还需要验证生成的备份文件本身是完整且可用的。
⚠️ 重要提示: 备份校验是一项占用大量磁盘I/O的操作,可能会对正在运行的业务系统性能产生影响。强烈建议在业务低峰期或维护窗口进行此项操作。
您可以使用系统提供的 SF_BAKSET_CHECK
函数来通过SQL命令校验备份。
执行以下SQL语句:
-- 校验指定的备份集文件
-- 将 'D:\dmdms\data\bak\inc\DB_DAMENG_INCREMENT_...' 替换为您实际的备份集路径
SELECT SF_BAKSET_CHECK('DISK', 'D:\dmdms\data\bak\inc\DB_DAMENG_INCREMENT_2025_03_04_08_58_14');
结果解读:
1
,则表示备份集校验通过,文件有效。使用说明:直接将以下SQL语句复制到disql、达梦管理工具等查询工具中执行即可
-- ===================================================================
-- 脚本名称: DM数据库定时备份策略巡检脚本
-- 功能描述: 本脚本用于 DM8 查询达梦数据库中所有通过内置作业系统配置的
-- 定时备份任务。查询结果以关键信息优先的顺序展示,包括
-- 作业名称、状态、执行计划及最近运行状态,便于DBA快速审计。
-- 作者: JC
-- 版本: 3.6 (优化版)
-- 最后修改: 2025-08-01
-- ===================================================================
WITH job_history AS (
SELECT
jobid, start_time, end_time, errcode, errinfo, ep_seqno,
ROW_NUMBER() OVER (PARTITION BY jobid ORDER BY start_time DESC) as rn
FROM sysjob.sysjobhistories2
),
schedule_info AS (
SELECT
jobid,
name,
describe,
-- 优化调度描述生成逻辑
CASE type
WHEN 0 THEN '仅执行一次于 ' || starttime
WHEN 1 THEN '每 ' || freq_interval || ' 天, 于 ' || starttime || ' 执行'
WHEN 2 THEN
'每 ' || freq_interval || ' 周的 ' ||
-- 使用DECODE简化周几的判断
RTRIM(
DECODE(BITAND(freq_sub_interval, 1), 0, '', '周日 ') ||
DECODE(BITAND(freq_sub_interval, 2), 0, '', '周一 ') ||
DECODE(BITAND(freq_sub_interval, 4), 0, '', '周二 ') ||
DECODE(BITAND(freq_sub_interval, 8), 0, '', '周三 ') ||
DECODE(BITAND(freq_sub_interval, 16), 0, '', '周四 ') ||
DECODE(BITAND(freq_sub_interval, 32), 0, '', '周五 ') ||
DECODE(BITAND(freq_sub_interval, 64), 0, '', '周六 ')
) || ' 于 ' || starttime || ' 执行'
WHEN 3 THEN '每 ' || freq_interval || ' 个月的第 ' || freq_sub_interval || ' 天, 于 ' || starttime || ' 执行'
WHEN 4 THEN '每 ' || freq_interval || ' 个月的第一周的星期' || (freq_sub_interval-1) || ', 于 ' || starttime || ' 执行'
WHEN 5 THEN '每 ' || freq_interval || ' 个月的第二周的星期' || (freq_sub_interval-1) || ', 于 ' || starttime || ' 执行'
WHEN 6 THEN '每 ' || freq_interval || ' 个月的第三周的星期' || (freq_sub_interval-1) || ', 于 ' || starttime || ' 执行'
WHEN 7 THEN '每 ' || freq_interval || ' 个月的第四周的星期' || (freq_sub_interval-1) || ', 于 ' || starttime || ' 执行'
WHEN 8 THEN '每 ' || freq_interval || ' 个月的最后一周的星期' || (freq_sub_interval-1) || ', 于 ' || starttime || ' 执行'
WHEN 9 THEN '由 DBMS_JOB 定义'
ELSE '未知调度类型'
END ||
-- 优化重复间隔的表示
DECODE(freq_minute_interval, 0, '', NULL, '', ' (且日内每 ' || freq_minute_interval || ' 分钟重复)')
AS schedule_desc
FROM sysjob.sysjobschedules
)
SELECT
j.name AS "作业名称",
DECODE(j.enable, 1, '启用', '禁用') AS "作业状态",
s.name AS "作业步骤名称",
CASE
WHEN INSTR(s.command, '|') > 0 THEN '增量备份'
ELSE '全量备份'
END AS "推断备份类型",
sch.name AS "调度计划名称",
sch.schedule_desc AS "执行计划描述",
lh.start_time AS "最近运行开始时间",
DECODE(lh.errcode, 0, '成功', NULL, '未运行', '失败') AS "最近运行状态",
lh.errinfo AS "最近错误信息",
lh.errcode AS "最近错误码",
j.username AS "作业所有者",
s.command AS "备份命令详情",
DECODE(s.type,
6, '备份程序 V2.0',
5, '备份程序 V1.0 (带选项)',
1, '备份程序 V1.0',
'其他') AS "备份程序"
FROM
sysjob.sysjobs j
INNER JOIN sysjob.sysjobsteps s ON j.id = s.jobid
INNER JOIN schedule_info sch ON j.id = sch.jobid
LEFT JOIN job_history lh ON j.id = lh.jobid AND lh.rn = 1
WHERE
s.type IN (1, 5, 6)
ORDER BY j.username, j.name, s.seqno;
总结
定期对数据库备份进行检查与验证是保障数据安全的关键环节。本手册通过图形化界面和SQL命令两种方式,详细介绍了从确认备份策略到验证备份文件有效性的全过程。建议您将这些步骤纳入日常的数据库维护流程中,以确保在意外发生时,能够快速、可靠地恢复数据。
文章
阅读量
获赞