项目简介
DMDUL 是一个面向达梦数据库的数据文件离线分析与数据抽取工具。
项目目标是在数据库无法正常打开、实例无法正常启动、系统表空间或用户表空间需要离线分析时,通过读取达梦数据库相关文件,辅助完成对象识别、表结构分析、数据页扫描和数据导出。
项目地址:
- GitHub:https://github.com/greatfinish/dmdul
- Release 下载:https://github.com/greatfinish/dmdul/releases
适用场景
DMDUL 主要适用于以下场景:
- 达梦数据库实例无法正常打开;
- 需要离线分析数据文件中的对象信息;
- 需要辅助识别表、字段、索引、页类型等内部结构;
- 需要在恢复、取证、测试或研究环境中抽取部分数据;
- 需要验证达梦数据文件页级结构和系统字典信息。
注意:DMDUL 是离线分析和辅助恢复工具,不应替代正式备份恢复方案。生产环境操作前,请优先保留原始数据文件副本。
功能特性
当前工具重点能力包括:
| 功能 | 说明 |
|---|---|
| 控制文件分析 | 读取达梦控制文件中的部分结构信息 |
| 表空间识别 | 辅助识别 SYSTEM、ROLL、MAIN 等表空间信息 |
| 系统字典扫描 | 离线扫描系统字典对象 |
| 表结构识别 | 辅助识别表、字段、对象号等信息 |
| 页级扫描 | 识别数据页、索引页和候选对象 |
| 数据抽取 | 从候选数据页中抽取可识别记录 |
| 交互模式 | 提供 REPL 风格的交互式操作 |
| 文档说明 | 提供安装、使用、配置、开发和离线扫描说明 |
安装方式
下载 Release
前往 GitHub Release 页面下载对应版本:
https://github.com/greatfinish/dmdul/releases
Windows 环境可以下载编译好的 dmdul.exe。
源码编译
git clone https://github.com/greatfinish/dmdul.git cd dmdul go test ./... go build -o bin/dmdul.exe ./cmd/dmdul
Linux 环境可以编译为:
go build -o bin/dmdul ./cmd/dmdul
基本使用
查看帮助:
dmdul --help
进入交互模式:
dmdul
示例操作流程:
1. 指定控制文件和数据文件路径 2. 扫描表空间和系统字典 3. 识别对象和表结构 4. 确认目标表对象号 5. 扫描候选数据页 6. 导出识别到的数据
推荐工作流程
生产故障场景下,建议采用以下流程:
原始文件只读保留 ↓ 复制数据文件到分析环境 ↓ 使用 DMDUL 离线扫描 ↓ 识别表空间和系统字典 ↓ 定位目标表对象 ↓ 页级扫描和样例验证 ↓ 导出可恢复数据
风险提示
使用 DMDUL 前请注意:
- 不要直接在生产原始文件上操作;
- 先复制控制文件、数据文件到独立分析目录;
- 工具输出结果需要结合实际数据库版本和文件状态判断;
- 对损坏页、未识别页、索引页、LOB 页等场景需要谨慎验证;
- 离线抽取结果不等价于完整一致性恢复结果。
项目定位
DMDUL 当前定位是:
达梦数据库离线数据文件分析与数据抽取辅助工具
它更适合用于:
- 数据恢复辅助;
- 数据库内部结构学习;
- 故障场景验证;
- 页级结构分析;
- DBA 工具实验。
不建议将其作为常规备份恢复手段。
后续计划
后续计划逐步增强:
- 更多页类型识别;
- 更完善的字段类型解析;
- 更友好的导出格式;
- 更完整的字典对象映射;
- 更丰富的异常文件兼容能力;
- Linux / Windows 双平台 Release 自动构建。
参与项目
欢迎通过 GitHub 提交 Issue、建议或 Pull Request:
https://github.com/greatfinish/dmdul
如果你在达梦数据库恢复、数据文件分析、页级结构识别方面有测试案例,也欢迎一起完善这个工具。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




