达梦数据库DM8在Linux环境下的安装部署与信创迁移实战指南

发布时间:2026/8/6 5:41:30
达梦数据库DM8在Linux环境下的安装部署与信创迁移实战指南 1. 项目概述为什么信创国产化绕不开达梦数据库最近几年但凡在IT圈里做项目尤其是涉及政府、金融、能源这些关键行业的肯定都听过“信创”这个词。信创全称是信息技术应用创新说白了就是在核心的软硬件技术上逐步摆脱对国外产品的依赖构建自主可控的国产化技术体系。这可不是简单的“国产替代”而是一套从底层芯片、操作系统到上层数据库、中间件的完整生态重构。在这个过程中数据库作为承载企业核心数据的“底座”其国产化迁移是重中之重也是最考验技术团队的一环。在众多国产数据库中达梦数据库DM Database是一个你无法忽视的名字。它不仅是“信创名录”里的常客更是在Oracle、MySQL等国外数据库占据主导地位的市场里凭借其高兼容性和稳定性硬生生闯出了一条路。很多团队在接到“国产化改造”任务时第一个要面对的就是如何把原有的Oracle或MySQL业务平滑迁移到达梦上。而这一切的起点就是安装部署。一个稳定、规范的安装是后续所有数据迁移、应用适配、性能调优的基础。如果安装这一步就埋了雷后面可能会遇到各种稀奇古怪的问题排查起来耗时耗力。所以今天我就结合自己多次在Linux环境下部署达梦数据库以常见的DM8版本为例的实际经验从头到尾拆解一遍安装流程。我会重点讲清楚每个步骤背后的“为什么”以及那些官方文档可能不会细说但实际部署中一定会遇到的“坑”。无论你是第一次接触达梦的运维新手还是正在规划信创迁移路径的架构师这篇内容都能给你提供一份可直接“抄作业”的实操指南。2. 安装前的核心准备环境与规划安装数据库不是双击一个“下一步”就能完事的尤其是在生产环境。前期规划不到位后期运维两行泪。在下载达梦安装包之前有几件必须敲定的事情。2.1 环境检查与资源规划达梦数据库对Linux发行版的支持比较广泛主流的CentOS、RedHat、Ubuntu、麒麟、统信UOS等都在其列。首先用命令cat /etc/os-release确认你的系统版本和架构通常是x86_64或aarch64。一个关键但常被忽略的检查是操作系统的语言环境。达梦的安装程序对中文路径的支持有时会出问题为了避免安装日志乱码和路径识别错误我强烈建议先将系统语言设置为英文。# 临时设置为英文环境进行安装 export LANGen_US.UTF-8 # 也可以永久修改 /etc/locale.conf 文件硬件资源方面官方有最低要求但生产环境不能卡着最低线来。以一台预计承载中等业务负载的服务器为例CPU建议4核以上。数据库是CPU密集型应用尤其是在执行复杂查询和大量并发时。内存这是重中之重。达梦实例运行需要占用大量内存。建议至少16GB起步并根据数据量和并发用户数调整。一个简单的估算方法是预留出系统所需内存后尽可能多的内存给数据库。可以在/etc/sysctl.conf中调整内核参数例如vm.swappiness值调低如设置为10减少系统使用交换分区swap的倾向让内存更多服务于数据库缓存。磁盘需要关注IOPS每秒读写次数和容量。数据库的数据文件、日志文件重做日志、归档日志都是频繁读写操作。务必使用高性能的SSD硬盘并避免将数据文件放在根分区。规划独立的挂载点如/dm8/data。空间估算要包含数据初始大小、每年增长量以及日志文件特别是开启归档后的归档日志的保留空间。2.2 用户与目录规划遵循Linux哲学绝不使用root用户直接运行数据库服务。我们需要创建一个专用的系统用户和用户组通常叫dmdba。groupadd dinstall useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba passwd dmdba # 为dmdba用户设置一个强密码接下来是目录规划清晰的目录结构是良好运维习惯的开始安装目录DM_HOME这是达梦数据库软件的安装位置例如/dm8。该目录需要存放二进制文件、工具脚本、驱动包等。数据目录DATA_PATH这是数据库实例的数据文件、控制文件、日志文件的存放位置例如/dm8/data。这个目录必须与安装目录分开并且要有足够的空间和良好的IO性能。归档日志目录ARCHIVE_PATH如果开启归档模式生产环境必须开启需要指定一个单独的目录存放归档日志例如/dm8/arch。备份目录BAK_PATH规划数据库备份文件的存放位置例如/dm8/backup。现在以root身份创建这些目录并将所有权赋予dmdba用户mkdir -p /dm8 mkdir -p /dm8/data mkdir -p /dm8/arch mkdir -p /dm8/backup chown -R dmdba:dinstall /dm8 chmod -R 755 /dm82.3 系统参数调整为了让达梦数据库获得最佳性能需要调整一些Linux内核参数。编辑/etc/sysctl.conf文件添加或修改以下参数# 系统共享内存最大值通常设置为物理内存的70-80% kernel.shmmax 68719476736 # 例如64GB kernel.shmall 4294967296 # 共享内存页总数计算公式shmmax / PAGE_SIZE (getconf PAGE_SIZE) # 系统范围内最大信号量数量 kernel.sem 250 32000 100 128 # 文件句柄数数据库会打开大量文件 fs.file-max 6815744 # 网络相关提高并发连接能力 net.core.rmem_default 262144 net.core.wmem_default 262144 net.core.rmem_max 4194304 net.core.wmem_max 4194304保存后执行sysctl -p使配置生效。同时还需要修改用户资源限制编辑/etc/security/limits.conf在文件末尾为dmdba用户添加dmdba soft nofile 65536 dmdba hard nofile 65536 dmdba soft nproc 65536 dmdba hard nproc 65536 dmdba soft stack 10240 dmdba hard stack 10240这些调整确保了数据库进程可以打开足够多的文件描述符创建足够多的线程并使用足够的栈空间。3. 达梦数据库安装流程详解准备工作就绪后我们就可以开始正式的安装过程了。达梦提供了图形化GUI和命令行CLI两种安装方式。对于有桌面的测试环境图形化很直观但对于绝大多数生产服务器命令行安装才是标准操作。3.1 获取安装包与挂载从达梦官网下载对应操作系统和架构的安装包通常是一个.iso镜像文件。将其上传到服务器的某个位置例如/opt。然后我们需要挂载这个镜像文件mount -o loop /opt/dm8_20231012_x86_64_rhel7.iso /mnt切换到挂载点/mnt你会看到DMInstall.bin文件这就是安装程序。这里有一个关键点安装程序需要图形界面或虚拟终端来运行即使在命令行模式下。我们可以使用DISPLAY变量将图形转发到本地如果服务器有X服务但更通用的方法是使用xdpyinfo检查或直接使用-i参数指定控制台文本安装。最可靠的方式是使用DM_INSTALL_TYP环境变量强制指定为文本交互模式。3.2 以命令行交互模式执行安装切换到dmdba用户并进入挂载目录su - dmdba cd /mnt给安装程序添加执行权限并设置环境变量启动文本安装界面chmod 755 ./DMInstall.bin export DM_INSTALL_TYPtext ./DMInstall.bin执行后会进入一个基于文本的交互式安装流程。你需要根据提示进行选择选择安装语言通常选中文或英文。是否输入Key文件路径如果有正式的授权文件.key在此输入全路径如果是试用直接回车跳过。选择时区选择21代表中国标准时间。选择安装类型通常选择“典型安装”。如果你想自定义组件可以选择“自定义安装”。选择安装目录输入我们之前规划好的安装目录例如/dm8。这里一定要确认路径正确且该目录属于dmdba用户并有写权限。确认安装安装程序会列出你的选择摘要输入y确认后开始安装。安装过程会持续几分钟期间会将所有必要的文件解压到/dm8目录下。安装完成后脚本会提示你需要以root身份执行一个配置脚本/dm8/script/root/root_installer.sh。这个脚本会创建必要的系统服务DmAPService即达梦辅助进程服务和符号链接。注意务必在安装程序提示后退出dmdba用户exit切换回root去执行这个root脚本。这个步骤完成了安装的最后一步使数据库服务可以被系统管理。3.3 初始化数据库实例软件安装好了但还没有可用的数据库。我们需要使用达梦提供的dminit工具来初始化一个数据库实例。这是创建数据文件、控制文件、日志文件的过程。切换回dmdba用户进入达梦的工具目录su - dmdba cd /dm8/bin执行初始化命令以下是一个包含关键参数的示例./dminit PATH/dm8/data PAGE_SIZE16 EXTENT_SIZE32 CASE_SENSITIVEN CHARSET1 DB_NAMEDAMENG INSTANCE_NAMEDMSERVER PORT_NUM5236让我解释一下这几个核心参数PATH/dm8/data指定数据文件存放路径就是我们规划的数据目录。PAGE_SIZE16数据页大小单位KB。可选4, 8, 16, 32。这个参数一旦设定数据库生命周期内无法更改。16K是一个兼顾性能和通用性的选择兼容大多数Oracle迁移场景。EXTENT_SIZE32簇大小即每次扩展空间的最小单位单位是页数。32表示每次扩展 32 * 16K 512KB。CASE_SENSITIVEN标识符是否大小写敏感。N表示不敏感和Oracle默认行为一致Y表示敏感和MySQL某些行为类似。这个参数也极其关键必须和未来要迁移的源数据库保持一致否则SQL脚本和应用程序可能报错。CHARSET1字符集1代表 GB18030兼容中文字符0代表 UTF-8。根据应用需求选择但通常建议使用0(UTF-8) 以获得更好的国际兼容性。DB_NAME和INSTANCE_NAME数据库名和实例名可以相同。PORT_NUM5236数据库监听端口达梦默认是5236确保该端口在防火墙中是开放的。初始化成功后会在/dm8/data目录下看到DAMENG子目录里面包含了SYSTEM.DBF,ROLL.DBF,MAIN.DBF等初始数据文件以及dm.ctl控制文件和DAMENG01.log,DAMENG02.log重做日志文件。4. 启动服务与基础配置实例文件有了接下来要让数据库服务跑起来。4.1 注册与启动达梦服务达梦数据库的主服务进程是dmserver。我们可以使用DM Service Script来方便地管理它。首先需要将我们刚创建的实例注册为系统服务。以root身份操作cd /dm8/script/root ./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DMSERVER-t dmserver指定服务类型为数据库实例服务。-dm_ini指定该实例的初始化参数文件dm.ini的绝对路径。这是实例的“大脑”所有配置都在这里。-p DMSERVER指定服务名的后缀。执行成功后会提示创建了服务DmServiceDMSERVER。现在就可以用systemctl来管理它了systemctl start DmServiceDMSERVER # 启动服务 systemctl status DmServiceDMSERVER # 查看状态 systemctl enable DmServiceDMSERVER # 设置开机自启看到状态为active (running)说明数据库实例已经成功启动并在5236端口监听了。4.2 初始连接与基础安全设置使用达梦自带的命令行工具disql进行首次连接。disql的语法和Oracle的sqlplus非常相似。su - dmdba cd /dm8/bin ./disql SYSDBA/SYSDBAlocalhost:5236这里使用默认的超户SYSDBA和默认密码SYSDBA进行连接。安全第一条连接成功后第一件事就是修改这个默认密码ALTER USER SYSDBA IDENTIFIED BY “YourStrongPassword123!”;此外生产环境还必须考虑开启归档模式。归档日志是进行数据库恢复的基石。首先需要创建归档目录我们之前规划的/dm8/arch并确保dmdba用户有写权限。然后在disql中执行-- 将数据库置于MOUNT状态 ALTER DATABASE MOUNT; -- 配置归档路径和参数 ALTER DATABASE ADD ARCHIVELOG ‘DEST /dm8/arch, TYPE local, FILE_SIZE 1024, SPACE_LIMIT 20480’; -- 开启归档模式 ALTER DATABASE ARCHIVELOG; -- 打开数据库 ALTER DATABASE OPEN;可以查询V$ARCHIVED_LOG和V$DM_ARCH_INI视图来确认归档配置是否生效。4.3 网络连接配置dm.ini与dmmal.ini要让远程客户端如DBeaver、Navicat或你的应用程序能够连接到达梦数据库需要检查网络配置。主要涉及两个文件dm.ini在数据目录下/dm8/data/DAMENG/dm.ini。找到PORT_NUM参数确认端口确保ENABLE_ENCRYPT通信加密按需配置。dmmal.iniMALMail Address List系统是达梦用于数据守护主备、DSC集群等高级功能内部通信的配置。对于单实例通常不需要配置。但有时即使单实例某些管理工具或驱动可能会检查MAL配置。如果遇到奇怪的连接问题可以尝试在数据目录下创建一个基本的dmmal.ini[MAL_INST1] MAL_INST_NAME DMSERVER MAL_HOST 你的服务器IP MAL_PORT 5336 # 注意这是MAL内部通信端口不是数据库端口5236 MAL_INST_HOST 你的服务器IP MAL_INST_PORT 5236配置完成后需要重启数据库服务使部分配置生效。5. 客户端连接与常用管理操作数据库服务跑起来了接下来就是如何使用它。5.1 使用DBeaver/Navicat连接这是开发人员最常用的方式。以DBeaver为例新建连接选择数据库类型为“达梦”。驱动管理DBeaver通常内置了达梦驱动。如果没有需要从达梦安装目录下的/dm8/drivers/jdbc中找到DmJdbcDriver18.jar对应JDK 1.8并加载。连接参数主机数据库服务器IP端口5236数据库/服务名DAMENG或你初始化时指定的DB_NAME用户名/密码SYSDBA和你修改后的密码测试连接成功即可。Navicat的连接方式类似也需要配置正确的驱动JAR包路径。5.2 基础SQL操作与兼容性初探连接成功后你可以像使用其他数据库一样执行SQL。达梦兼容大多数SQL-92、SQL-99标准并对Oracle和MySQL的语法有很高程度的兼容。-- 创建用户和表空间类似Oracle CREATE TABLESPACE “MY_DATA” DATAFILE ‘MY_DATA.DBF’ SIZE 128; CREATE USER “MY_USER” IDENTIFIED BY “user_pwd” DEFAULT TABLESPACE “MY_DATA”; GRANT RESOURCE, VTI TO “MY_USER”; -- 授予基本角色和权限 -- 创建表 CREATE TABLE MY_USER.employee ( id INT PRIMARY KEY, name VARCHAR(50), hire_date DATE ); -- 插入数据 INSERT INTO MY_USER.employee VALUES (1, ‘张三’, SYSDATE); COMMIT; -- 查询 SELECT * FROM MY_USER.employee;你会发现这些语法和Oracle几乎一模一样。这也是达梦在信创迁移中受欢迎的一个重要原因——学习成本和改造成本相对较低。5.3 日常管理命令掌握几个常用的命令行管理命令很有必要查看数据库状态./DmServiceDMSERVER status启动/停止/重启服务systemctl [start|stop|restart] DmServiceDMSERVER使用disql执行脚本./disql USER/PASSIP:PORT \nolog start /path/to/your_script.sql逻辑备份与还原使用dexp和dimp工具类似于Oracle的exp/imp。# 全库导出 ./dexp USERIDSYSDBA/YourPasswordlocalhost:5236 DIRECTORY/dm8/backup FILEfull_backup.dmp LOGexp.log FULLY # 按用户导入 ./dimp USERIDSYSDBA/YourPasswordlocalhost:5236 DIRECTORY/dm8/backup FILEfull_backup.dmp LOGimp.log SCHEMASMY_USER6. 实战避坑指南与常见问题排查纸上得来终觉浅绝知此事要踩坑。下面是我在多次部署中总结的典型问题和解决方法。6.1 安装阶段常见问题问题一执行安装程序DMInstall.bin报错“无法打开显示”或直接闪退。原因服务器是纯命令行环境没有图形界面且未正确指定安装模式。解决确保已设置export DM_INSTALL_TYPtext环境变量或者在命令行中直接指定./DMInstall.bin -i。同时检查当前用户dmdba对安装目录有无写权限。问题二初始化实例dminit失败提示“共享内存/信号量”相关错误。原因Linux内核参数未正确设置或者设置的参数未生效。解决检查/etc/sysctl.conf中的kernel.shmmax,kernel.shmall,kernel.sem等参数值是否足够大。执行sysctl -p重新加载配置。检查/etc/security/limits.conf中对dmdba用户的限制是否生效可能需要重新登录dmdba用户。使用ipcs -l命令查看当前系统的共享内存和信号量限制。问题三安装后找不到disql或其他可执行文件。原因环境变量PATH未包含达梦的bin目录。解决为dmdba用户编辑~/.bash_profile文件添加export PATH$PATH:/dm8/bin:/dm8/tool然后执行source ~/.bash_profile。6.2 连接与运行阶段常见问题问题一客户端工具DBeaver连接失败提示“网络通信异常”或“无效的连接字符串”。排查步骤服务器端检查在服务器上执行netstat -tlnp | grep 5236看dmserver进程是否在监听0.0.0.0:5236或具体的IP:5236。如果只看到127.0.0.1:5236说明只监听本地环回需要修改dm.ini中的LISTENER_IP参数通常设置为0.0.0.0并重启服务。防火墙检查确认服务器防火墙firewalld或iptables已开放5236端口。firewall-cmd --zonepublic --add-port5236/tcp --permanent firewall-cmd --reload。驱动检查确认客户端使用的达梦JDBC驱动版本与服务器数据库版本兼容。建议使用达梦安装包内自带的驱动。MAL配置干扰如果配置了dmmal.ini但配置错误有时会影响普通连接。可以尝试临时重命名或移走dmmal.ini文件重启服务后再试。问题二应用如SpringBoot连接达梦报“方言”错误或“数据类型”不兼容。原因这是应用层适配问题。Hibernate/MyBatis等ORM框架可能无法自动识别达梦的方言。解决在SpringBoot配置中明确指定数据库方言。达梦提供了对应的方言类需要引入达梦的JDBC驱动包依赖。在application.yml中配置spring: datasource: driver-class-name: dm.jdbc.driver.DmDriver url: jdbc:dm://192.168.1.100:5236/DAMENG username: SYSDBA password: YourPassword jpa: database-platform: org.hibernate.dialect.DmDialect # 使用达梦方言注意SQL语法差异特别是分页查询。达梦兼容Oracle的ROWNUM语法也支持LIMIT需特定版本。在写原生SQL或MyBatis映射文件时要注意。问题三数据库运行一段时间后磁盘空间暴涨特别是归档目录。原因开启了归档模式但未设置归档日志的删除策略SPACE_LIMIT参数可能设得太大或未生效或者没有部署定期的日志备份与清理任务。解决定期手动清理在disql中执行SF_BAKSET_BACKUP_DIR_ADD(‘DISK’, ‘/dm8/backup’)设置备份路径后使用BACKUP ARCHIVELOG ALL DELETE INPUT TO BACKUP_ARCH_01 BACKUPSET ‘/dm8/backup/arch_bak_01’备份并删除已备份的归档日志。配置RMAN达梦的备份恢复管理器作业自动完成归档日志的备份和清理。这是生产环境必须做的维护操作。6.3 性能与迁移相关注意事项页大小PAGE_SIZE选择这是一个“一次性”选择。如果主要做OLTP联机事务处理16K是平衡点如果数据仓库类查询多考虑32K。最关键的是如果计划从Oracle迁移Oracle的默认块大小是8K但达梦的16K在大多数场景下兼容性更好性能也更优。务必在初始化前与开发、架构师确认。大小写敏感CASE_SENSITIVE这又是一个“一次性”的致命选择。如果源系统是Oracle默认不敏感这里必须设N如果是MySQL且使用了大小写混用的表名就需要仔细评估。设错会导致所有SQL语句中的标识符都需要用双引号括起来迁移工作量巨大。自增列的使用达梦的自增列IDENTITY行为和MySQL的AUTO_INCREMENT、Oracle的SEQUENCETRIGGER组合都有差异。在表设计时需要根据达梦的语法来定义并在数据迁移时注意处理原有自增主键的值。模式SCHEMA与用户USER达梦的模式概念和Oracle类似一个用户对应一个同名的模式。在创建对象和授权时要注意USER.TABLE的引用方式。