
最近调了一套迁移到达梦数据库DM8的存量业务日常运维和排错基本都靠 DM Manager管理工具。这个工具给我的第一感受是功能很全但新手刚上手时容易懵因为界面和 MySQL 系、SQL Server 系的客户端差异不小。这篇文章我按实际使用经验把 DM Manager 从连接到建表、从数据导入到备份恢复的完整操作串一遍顺带把大家问得最多的连接失败、Excel 导入、权限分配这类问题都讲清楚。如果你刚接触达梦数据库或者正在从 Oracle、MySQL 迁移过来这篇可以当快速上手手册直接用。1. 达梦数据库与DM Manager的整体认知1.1 达梦数据库是什么DM Manager在生态中的位置达梦数据库是国内常见的商业关系型数据库管理系统我接触到的是 DM8 版本。它的整体语法风格和 Oracle 很接近比如模式Schema、表空间、序列、同义词甚至 PL/SQL 风格的存储过程如果你写过 Oracle几乎可以无缝上手同时它也提供了 MySQL 等兼容模式用于承接现有应用。实际生产环境里很多项目选择达梦核心诉求就是希望平滑替换既有关系型数据库的业务场景。DM Manager 是达梦官方自带的图形化管理工具在 Windows 安装包中默认集成登录方式类似 SQL Server Management Studio输入主机、端口、用户名、口令连接成功后进入主界面。它和命令行工具 disql 的区别在于DM Manager 把所有常见操作图形化了创建数据库、建表建索引、编写 SQL、导入导出、备份恢复、用户权限、会话监控等基本都能通过鼠标完成。为什么我会专门把它拿出来讲因为一个月前我第一次打开达梦环境时遇到的第一个问题就是不知道怎么登录第二个问题是登录后找不到建表入口第三个问题是导入 Excel 时找不对按钮。市面上讲达梦 SQL 语法的文章很多但踏踏实实讲清楚这个管理工具的教程不多尤其讲清每个按钮背后操作逻辑的更少所以我结合自己踩过的坑写这篇希望帮你少走点弯路。1.2 DM8 的体系与 DM 相关工具家族先帮大家捋清楚达梦生态下几个容易混淆的工具和组件。除了 DM Manager你还会经常遇到工具类型主要用途DM Manager图形化管理工具日常库表管理、SQL 开发、授权、备份恢复DTS数据迁移工具图形化数据迁移工具从 Oracle / MySQL / SQL Server 等库迁移结构和数据到 DMdisql命令行工具脚本批量执行、自动化运维、服务器环境操作DEM 监控工具监控告警组件实例性能监控、告警通知、集群状态查看我的建议是日常开发维护用 DM Manager做大批量数据迁移时优先用 DTS跑定时脚本或服务器上操作时再用 disql。工具之间并不冲突比如我用 DM Manager 配置好备份任务后仍然会写 disql 脚本做异地备份。分清工具定位能省下大量试错时间。2. DM Manager 的环境准备与连接配置2.1 安装与工具获取DM Manager 一般随达梦数据库安装包一起安装。在 Windows 环境下安装完数据库服务端或客户端后开始菜单里会出现“达梦数据库”程序组里面能找到 DM 管理工具DM Manager。如果你只安装了客户端工具也可以用来连接远程达梦服务实例。启动 DM Manager 前建议先确认达梦实例是否正常运行。Windows 环境可以打开“达梦服务查看器”检查类似 DMSERVER 的实例服务状态是否已启动Linux 环境可以用systemctl status DmServiceXXX或ps -ef | grep dmserver来确认。这个顺序很重要因为很多人第一次打开 DM Manager 就报“连接失败”其实不是工具问题而是服务还没起来。装好数据库后第一件事先启动实例再开管理工具能避免一大堆误判。2.2 本地连接与远程连接打开 DM Manager 后出现登录界面需要填连接信息。本地连接最常用的配置如下登录项本地开发环境建议值说明主机名/IPlocalhost 或 127.0.0.1实例所在机器地址端口5236达梦默认监听端口安装时可改用户名SYSDBA数据库系统管理员安装时设置口令登录口令安装时的口令首次登录后可修改远程连接时主机名/IP 填服务器地址端口同样默认 5236。除了正确输入用户名密码远程连接最容易被忽略的是两件事一是服务器上达梦实例是否开启了监听一般默认开启但要注意绑定的网卡和端口二是防火墙或安全组是否放行了 5236 端口。我遇到过一台云服务器本地连库正常远程死活连不上最后发现是安全组没放行 TCP 5236放行之后秒连。2.3 连接参数详解与连接失败排查如果连接失败DM Manager 会给出错误提示但提示信息比较简略实际排查请按优先级逐个验证先确认服务启动再确认端口可达最后确认账号口令。现象可能原因排查指令/操作提示无法连接到服务器实例服务未启动服务查看器里启动 DMSERVER或systemctl start DmServiceXXX连接超时或拒绝连接端口不通、防火墙拦截telnet IP 5236检查安全组和防火墙放行无效的用户名或口令用户名密码错误确认账号大小写SYSDBA 口令是安装时设置的网络错误类提示监听 IP 配置不对检查 dm.ini 中的监听相关参数确认实例绑定真实地址另外提醒一句SYSDBA 权限很高日常开发不要都用 SYSDBA 登录。我通常会用 DM Manager 先创建一个低权限的业务账号再拿这个账号连库操作降低误操作风险。小项目无所谓稍微多几个人的团队权限控制混乱的后果就会很明显。3. 界面布局与核心功能区拆解3.1 导航树对象管理的入口登录成功后DM Manager 的主界面左侧会展示一棵对象导航树默认按“目录 - 模式 - 对象”的层次组织。展开一个连接节点可以看到类似这样的结构模式、表空间、用户、角色、索引、视图、存储过程/函数、序列、触发器、包、同义词、作业等节点。刚开始用的时候我习惯像 Navicat 那样去找数据库实例、找表但达梦的逻辑是把所有对象按模式来组织只要记住自己账号对应的模式基本就能快速定位目标对象。这里要和第一次使用的人说清楚达梦里的“模式”Schema可以理解为一个用户下的对象集合默认情况下你创建的用户名和模式名是对应的。比如我用账号 APP 创建的表默认归属 APP 这个模式SQL 里写SELECT * FROM APP.T_USER就能查到。在导航树上我们建表前必须先确定放在哪个模式下或者干脆右键目标模式下的“表”节点新建。3.2 工作区、SQL 编辑器与结果区DM Manager 主界面整体是典型的 IDE 布局左侧导航树中间工作区下方是结果区/消息区。工作区支持多标签页双击导航树里的表会在标签页中打开该表的数据浏览窗口双击存储过程可以看到其源码。SQL 编辑器默认在主界面中央你也可以通过菜单“新建查询”打开一个新的 SQL 窗口。SQL 编辑器的核心玩法是支持选中执行。比如我写了一段包含多条语句的脚本只想看中间某条 SELECT 的结果就选中那一段再点击执行按钮工具只执行选中部分非常实用。结果区会返回查询结果集行列展示支持右键复制、导出结果到 CSV 等。状态栏会显示当前连接用户、当前模式、数据库版本等信息执行 SQL 时也会显示耗时毫秒数定位慢 SQL 时先看这里记录的时间心里能有个大致判断。4. 核心对象管理实操建库、建表、批量操作4.1 模式、表空间与用户的关系在达梦里表空间是存放数据文件的逻辑存储单位模式是用户对象的命名空间用户则用于连接和权限控制。三者的关系可以这样理解用户登录后默认在所归属的表空间中创建对象同时这些对象放在同名模式下。实际工作中“当前用户建不了表”“表建到了奇怪的表空间”这类问题基本都是没搞清这三者的关联导致的。在 DM Manager 中新建表空间右键“表空间”节点选择“新建表空间”填写表空间名称指定数据文件路径、初始大小、是否自动扩展。比如数据盘在 D 盘可以设置初始大小 512M自动扩展按 10% 增长最大扩展到 8G。创建后再把业务用户的默认表空间改到这个新表空间避免业务数据全部堆在 SYSTEM 或 MAIN 表空间里。表空间规划这种习惯哪怕在测试环境也建议养成后面做容量管理和数据文件迁移会轻松很多。4.2 可视化建表与字段、索引设计建表的核心入口是导航树展开目标模式右键“表”节点选择“新建表”。弹出的表编辑器中逐字段填写字段名、数据类型、长度、精度、默认值、是否允许 NULL。达梦的数据类型很接近 Oracle但和 MySQL 差异明显这里列几个最容易踩坑的点业务场景建议用 DM 类型注意整数 IDINT / BIGINT自增字段用 IDENTITY 属性不是 MySQL 的 AUTO_INCREMENT金额NUMBER(18,2)不要用 FLOAT避免精度问题短文本VARCHAR(50)varchar 长度按字符计算注意中文占位长文本TEXT / CLOB大字段不能直接 SQL 里模糊匹配日期时间DATE / TIMESTAMP存时分秒用 TIMESTAMP默认值可用 SYSDATE字段设置完成后在“约束”页签设置主键、唯一约束、检查约束在“索引”页签创建需要的索引。这里提醒一句复合索引的字段顺序对查询性能影响很大建索引前先尽量分析业务查询条件把等值查询字段放前面。我的习惯是先不建索引跑一遍 SQL看执行计划里是否走了全表扫描再决定补哪些索引比一开始拍脑袋建一堆索引更靠谱。4.3 用 SQL 编辑器执行脚本与批量操作除了可视化建表我更常用的方式是直接用 SQL 编辑器执行建表脚本。DM Manager 支持直接打开 .sql 脚本文件也可以把外部工具写好的脚本粘贴进编辑器一次性执行。比如从 Oracle 迁移就是Oracle 端用工具导出表结构脚本在 DM Manager 里执行达梦兼容了大量 Oracle 风格语法多数建表语句微调后即可直接运行。执行大批量脚本时的技巧是分批提交。刚做迁移时我直接粘了 1000 条 INSERT 进去执行结果跑了几分钟报错后还得从头排查。后来改成在一个事务里分批 COMMIT或者脚本里控制每 300 行提交一次速度和排查体验都好了很多。如果脚本中途报错DM Manager 会在消息区标出错误所在行号结合行号去源码里定位问题。批量修改数据时建议先 SELECT 确认影响范围再执行 UPDATE/DELETE。我在测试环境操作没什么感觉但对生产表做批量更新前一定先把 WHERE 条件带到 SELECT 里跑一遍确认行数和样本防止把整个表的数据改坏。这个习惯配合 DM Manager 的结果集查看基本能避免掉大多数误操作。5. 数据导入导出Excel、CSV、跨库迁移全覆盖5.1 理解 DM Manager 里的导入导出入口数据导入导出大概是 DM Manager 中被问得最多的问题尤其是“怎么导入 Excel”。这里先说清楚两个入口的区别。第一个入口在“表”节点上右键选择“导入数据”这是针对单表的数据装载工具第二个入口是独立程序 DTS全称数据迁移工具适合整库、多表、跨数据库类型的迁移。我的建议是导入单个 Excel 文件或 CSV 文件直接用“导入数据”涉及从 Oracle / MySQL 整表迁移、多表抽取用 DTS 更省事。DTS 支持从多种数据源读取包括达梦自身、Oracle、MySQL、SQL Server、文本文件等实操时先配置源和目标的连接信息再选表、做字段映射最后执行迁移。很多人一上来就点 DTS其实处理一个小 Excel 完全没必要绕了一圈反而更累。5.2 Excel 导入的完整步骤用 DM Manager 把 Excel 数据导进表的完整流程我按实际操作的步骤写一遍把 Excel 整理成规范二维表第一行必须是列名每列的数据类型要基本一致不要有合并单元格不要有标题行、备注行。这个步骤很多人忽略直接在 Excel 里带着大标题去导结果字段映射全乱。将 Excel 另存为 CSV 文件。在 Excel 中“文件 - 另存为”编码选择 UTF-8分隔符用逗号。如果导入后中文乱码把编码换成 GBK 再试一次。在导航树中找到目标表右键“导入数据”选择 CSV 文件导入选项中设置字段分隔符为逗号勾选“第一行为列名”。接下来是字段映射工具会按列名自动对应检查一下映射是否正确。执行导入结束后查看导入日志。成功多少行、失败多少行都会有记录。失败原因大多是日期格式不对、字符串超长、空值导致约束冲突按日志行号回 Excel 里修正再重新导入。这里特别强调三个坑日期列如果格式五花八门建议先在 Excel 里统一成yyyy-MM-dd或yyyy-MM-dd HH:mm:ss再另存超过目标字段长度的文本会导入失败导入前先用len()函数检查最长值如果目标表有主键Excel 里不能有重复主键行否则会报唯一性冲突。处理好这三类问题Excel 导入基本就是一次成功。5.3 导出与轻量级迁移技巧导出方面DM Manager 支持两种常见方式。一种是导出结果为文件在 SQL 编辑器执行 SELECT结果集右键选择“导出当前结果集”可导出 CSV、Excel 等格式适合日常取数。另一种是生成对象脚本右键表 -“生成 SQL 脚本”可以导出建表语句、INSERT 语句适合备份表结构或把表结构带到另一个环境。做跨库轻量迁移时我个人常用的方案是源库把表数据导出为 CSV目标达梦库先创建同结构表再用导入功能把 CSV 导进去。相比直接连源库操作这种中转方案更灵活也便于处理字段不全、类型不一致的情况。当然数据量大、表多的时候还是老老实实用 DTS速度和稳定性更好真没必要自己折腾脚本。6. DM Manager 备份与恢复实操6.1 备份类型理解与选择备份是 DBA 每天的日常工作DM Manager 把备份操作做成了图形化但理解概念仍然关键。达梦常见备份方式我整理成一张表备份类型内容恢复特点适用场景全量备份整个数据库或指定表空间/表恢复完整到备份时点每周/每日全备增量备份自上次备份以来变化的数据需要配合全量备份恢复高频备份节省存储归档备份归档日志的备份用于时间点恢复PITR重要业务需要精确恢复日常最稳妥的方案是“每周全备 每日增量 开启归档”。只做全备的话如果数据库在凌晨出了故障最多能恢复到最近一次全备的时间点这期间的增量数据只能靠归档日志补救。所以遇到核心业务我宁愿存储多占一点也要开启归档模式。6.2 用 DM Manager 执行备份和恢复DM Manager 执行备份的路径是导航树右键选中数据库节点选择“备份与恢复” - “新建备份”。弹出窗口中设置备份名称、备份类型全量或增量、备份文件路径确认后执行。备份完成后在“备份与恢复”的子节点下可以看到备份记录包括时间和文件路径。恢复操作同样从“备份与恢复”入口进入选择“还原”或“恢复”指定备份集。这里要特别提醒恢复操作需要在数据库相应状态下执行有时需要先将数据库切换到 Mount 状态图形界面操作时注意弹出的提示信息别在业务运行高峰期乱点恢复。我见过同事在生产只有一个实例的情况下直接点恢复导致业务中断半小时后来先在备机或测试环境演练一遍再上生产。定时备份也支持。DM Manager 中可以通过“作业”节点创建定时备份作业按天/周周期执行备份脚本备份结果保存到指定路径。我把生产库的每日备份任务跑通后基本没再手动备份过省了不少心。刚开始接触达梦的朋友建议第一时间把自动备份配好数据安全这种事不能靠自觉。7. 用户与权限管理授权不再靠命令7.1 用户创建与角色分配在 DM Manager 左侧导航树中展开“用户”节点右键“新建用户”可以设置用户名、登录口令、默认表空间、临时表空间。用户创建后还不能直接操作对象需要授权新手最容易在这步卡住。达梦自带三类常见角色DBA超级权限角色、RESOURCE可以创建表/视图/存储过程等对象的资源角色、PUBLIC基础公共权限。业务账号一般不建议给 DBA如果这个账号是开发库专用给 RESOURCE 就够了。给 RESOURCE 后账号能建表、改表但不能管理其他用户和系统权限安全性和便利性比较均衡。别图省事一把梭 DBA等出了问题再后悔就晚了。7.2 对象授权与回收的可视化操作右键目标用户选择“授权管理”打开授权窗口。窗口里一般分三个页签系统权限、对象权限、角色。系统权限包括创建会话、创建表、创建视图这类全局能力对象权限指具体表/视图上的 SELECT、INSERT、UPDATE、DELETE 等操作。要授权某张表就把表加到对象列表中勾选对应权限。权限回收同样在“授权管理”里去掉勾选并保存。我的授权原则是默认权限尽量小最小够用原则应用连接账号只给它要访问的那几张表的 SELECT / INSERT / UPDATE / DELETE不给 DBA管理类账号才在需要时补上资源角色。这样即使应用被拖库数据库能造成的破坏范围也会小很多。另外一个容易被忽略的细节新建用户后如果用该用户登录 DM Manager会发现导航树里看不到其他模式下的表这是正常的权限隔离。想要访问别的模式的对象需要被授予该对象上的相应权限并且 SQL 里一般要写“模式名.表名”。8. 常见问题排查与实用技巧8.1 高频错误与处理建议把日常答疑中经常碰到的 DM Manager 相关问题整理成速查表方便直接对着排查问题原因解决方式表或视图不存在当前模式下没有该表或没写模式名用“模式名.表名”访问确认表和模式归属无效的表名或列名达梦对 SQL 关键字、大小写敏感策略和 MySQL 不同确认建表时的列名必要时用双引号括起来字符乱码客户端字符集与数据库字符集不一致调整客户端字符集重新连接CSV 导入时检查编码授权不足报错当前账号缺乏对象权限或系统权限用 SYSDBA 登录重新授权遵循最小权限原则5236 端口被占用达梦实例异常或端口冲突检查实例进程、修改端口或用 netstat 定位占用SQL 执行卡死锁等待或大数据量查询查询会话/锁信息终止异常会话或优化 SQLSQL 执行卡死是生产环境最容易遇到的问题。DM Manager 里可以通过“会话”节点查看活跃会话找到长时间运行或 WAIT 状态的会话确认其执行语句后再用系统权限终止异常会话ALTER SYSTEM KILL SESSION。这个操作要谨慎先确认业务影响再动手。8.2 与 Navicat、Nacos 等常用组件的配合使用很多开发者习惯用 Navicat 做日常 SQL 查询达梦也支持通过 Navicat 连接。连接步骤很简单新建连接时选择“达梦”类型主机填 IP端口 5236用户名密码照常填一般都能连上。如果 Navicat 版本太老连不上换新版或者老老实实用 DM Manager 也不误事。如果项目在用 Nacos 做配置中心需要把数据源从 MySQL 切到达梦适配的关键无非三点驱动依赖换成达梦 JDBC 驱动dm.jdbc.driver.DmDriverJDBC URL 写成jdbc:dm://IP:5236同时应用里与数据库方言相关的配置要做调整。我实际做过一轮切换主要是把一些 MySQL 特有语法例如 LIMIT 的用法改成达梦兼容的写法整体链路可以跑通。切换前先拿测试库完整回归一遍别在生产环境临时踩坑。顺带提一个不少人问的需求达梦生成首拼码函数。很多业务系统需要按中文拼音首字母查询比如输入“dmdm”搜出“达梦数据库”。这个可以自写函数实现在库里维护一张拼音首字母字典表字段包括汉字和首字母函数逻辑就是拆字符串、逐字查字典表、把首字母拼起来返回。数据量不大时这种方案比维护一大段字符区间判断靠谱得多多音字问题也能通过字典表人工校准满足常见场景够用了。8.3 提升日常效率的几个实用技巧最后分享几个 DM Manager 的提效小技巧常用快捷键SQL 编辑器里选中需要执行的 SQL 后执行只执行选中部分这个习惯能让你在复杂脚本里快速定位问题。结果集灵活使用查询结果右键可以直接导出 CSV双击单元格可以复制单元格内容方便快速取某个值。生成 SQL 脚本右键任意对象选择“生成 SQL 脚本”能得到对象的建表语句。我经常用这个功能做代码评审和表结构归档。对象详情右键对象 -“对象详情”可以查看表空间占用、依赖关系等关键信息这个入口很多人忽略一旦用上就离不开。设置查询超时如果经常有大查询可以在工具选项中设置查询超时时间防止 SQL 挂死时一直占用连接资源。这些小技巧不复杂但组合起来能明显减少日常操作的重复劳动。尤其是“生成 SQL 脚本”和“对象详情”两个功能强烈建议上手试试。说实话我在刚接触达梦时也经历了一段“工具怎么比 SQL 还难用”的阶段后来才发现DM Manager 的每个入口背后其实对应数据库本身的一套管理体系弄懂它比背命令有用得多。最后再分享一个小技巧做任何容易影响生产的操作前先在 DM Manager 的“对象详情”里确认目标库的版本、表空间和当前连接情况再动手执行。多花十秒少踩很多坑这趟踩坑分享就算值了。