实验环境:银河麒麟高级服务器操作系统 V10(x86_64)+ VMware 虚拟机
适用版本:DM8
参考资料:达梦数据库培训教材、DM8 安装手册
前言
本文记录我从零搭建 DM8 完整环境的全过程,包括虚拟机环境、DM8 软件安装、dbca 建库、服务注册。提供全套工具的网盘下载链接,拿来即用。
零、工具准备与下载
在开始之前,先把需要用到的全套工具准备好:
| 工具 | 说明 | 下载链接 |
|---|---|---|
| VMware Workstation | 虚拟机软件,用于创建 Linux 虚拟环境 | Broadcom 官网下载 (注:Workstation Pro 现已对个人免费,需注册博通账号) |
| 银河麒麟 V10 ISO | 国产 Linux 操作系统镜像(x86_64 版本) | https://iso.kylinos.cn/web_pungi/download/cdn/bzhWCpanIXV2rtOU4jsdo1T59FGqvBPS/ |
| DM8 安装 ISO | 达梦数据库 V8 安装光盘镜像 | [产品下载 | 达梦在线服务平台](https://eco.dameng.com/download/ "产品下载 |
| Xshell | SSH 远程连接工具,方便在宿主机操作虚拟机 | https://www.xshell.com/zh/free-for-home-school/ |
| Xftp(可选) | 文件传输工具,配合 Xshell 使用 | https://www.xshell.com/zh/free-for-home-school/ |
链接:https://pan.quark.cn/s/afd987b65d8a
达梦社区:达梦技术社区 | 达梦数据库
一、创建虚拟机并安装麒麟系统
1.1 VMware 创建虚拟机
使用 VMware 新建虚拟机,推荐配置如下:
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| CPU | 2 核以上 | 达梦最低支持单核 |
| 内存 | 4 GB 以上 | DM8 要求至少 1GB 可用内存 |
| 硬盘 | 50 GB 以上 | DM8 完全安装约需 1GB,预留数据空间 |
| 网络 | NAT 模式 | 方便宿主机通过 Xshell 连接 |
1.2 安装银河麒麟操作系统
将下载好的麒麟 ISO 挂载到虚拟机光驱,启动虚拟机进行系统安装。安装过程中注意:
-
软件选择:建议选择「带 GUI 的服务器」,方便后续使用 dbca 图形化建库工具
-
分区方案:使用自动分区即可,确保根分区空间充足
-
网络配置:开启网络连接,设置主机名
安装完成后,idconfig,通过 Xshell 从宿主机 SSH 连接到虚拟机。


二、Linux 前置环境配置
以下操作均在
root用户下执行。
2.1 关闭防火墙
生产环境通常有外部硬件防火墙。Linux 自带的 firewalld 极易误杀数据库通信端口,导致各种"连不上"的诡异 Bug,直接关闭:
systemctl stop firewalld.service # 立刻停止防火墙
systemctl disable firewalld.service # 禁止开机自启
验证状态:
systemctl status firewalld.service

2.2 关闭 SELinux
SELinux 是 Linux 内核级的强制访问控制模块,它会拦截数据库的文件读写操作,也会阻止图形化安装界面的弹出,是安装报错的核心元凶之一。
编辑配置文件:
vi /etc/selinux/config
将 SELINUX=enforcing 修改为:
SELINUX=disabled
修改 SELinux 配置后必须重启系统才能生效。可以先完成下面的步骤,最后一起重启。

2.3 修改文件描述符上限
当数据库承载的业务量逐渐增大、并发请求增多时,默认的系统资源限制往往不足以支撑达梦数据库的稳定高效运行,修改为大值避免受到影响。
编辑 /etc/security/limits.conf,在文件末尾添加:
dmdba soft nofile 65590
dmdba hard nofile 65590
| 参数 | 含义 |
|---|---|
soft nofile |
用户可打开的最大文件数软限制(用户可自行调低) |
hard nofile |
软限制的上限绝对值(用户不可超过此值) |

2.4 创建达梦专用用户和组
坚决不建议甚至在某些环节禁止使用 root 用户直接安装和运行达梦数据库。
原因有三:
-
产品设计要求: DM8 要求存在专门的数据库用户(如
dmdba),否则无法顺利使用。 -
使用规范约束: 按照官方使用规范,日常的数据库操作都必须使用
dmdba用户来进行,这是标准的准则。 -
安全隔离: 如果数据库进程以
root身份运行,一旦被黑客攻破或者执行了恶意的系统命令,整个操作系统都会沦陷。创建一个专属的dmdba用户(属于dinstall组),可以防止出现事故。
groupadd dinstall # 创建用户组
useradd -g dinstall dmdba # 创建用户并归入该组
passwd dmdba # 设置密码(按提示输入两次)

2.5 重启系统
完成以上所有配置后,重启系统使 SELinux 等配置生效:
reboot
重启后可以验证:
# 验证 SELinux 已关闭
getenforce
# 应输出 Disabled
# 验证防火墙状态
systemctl status firewalld
# 验证文件描述符限制(切换到 dmdba 用户后执行)
su - dmdba
ulimit -n
# 应输出 65590

三、安装 DM8 数据库软件
3.1 挂载安装光盘
将 DM8 的 ISO 镜像文件挂载到虚拟机光驱(VMware 设置"已连接"并且选择 ISO 文件),然后使用 root 用户执行:
mount /dev/cdrom /mnt/ # 挂载光驱到 /mnt 目录
cp /mnt/DMInstall.bin /tmp/ # 复制安装包到临时目录
mount /dev/cdrom /mnt/ # 赋予最高权限,保证脚本能跑
mount 命令的本质是"投射拼接"------把光驱里的内容映射到 /mnt/ 这个空文件夹中,让系统能读取光盘数据。

3.2 执行安装程序
切换到 dmdba 用户执行安装:
su - dmdba
如果 /tmp 空间不足(安装需要至少 2G 临时空间),需手动指定临时目录:
mkdir ~/temp
export DM_INSTALL_TMPDIR=/home/dmdba/temp
启动安装引导程序:
/tmp/DMInstall.bin
安装程序支持两种模式:
-
图形化安装 :直接运行
DMInstall.bin,需要图形界面环境 -
命令行安装 :运行
DMInstall.bin -i,适用于无图形界面的纯终端环境

3.3 安装步骤详解
安装过程中的关键选择:
| 步骤 | 选择 | 说明 |
|---|---|---|
| 语言与时区 | 简体中文 / +08:00 | 根据实际情况选择 |
| Key 文件 | 可跳过 | 试用版可不导入,默认有内置 License |
| 安装类型 | 典型安装 | 包含服务器 + 客户端 + 驱动 + 手册 + 数据库服务 |
| 安装目录 | /dm8 |
3.4 执行 root 安装脚本
安装末尾会弹出提示,要求使用 root 用户执行一个脚本。切换到 root 用户执行:
# 根据安装提示框中给出的实际路径执行,通常类似:
dm8/script/root/root_installer.sh
该脚本涉及DMAP 服务(达梦备份辅助服务:用于辅助备份)
3.5 配置环境变量(极度重要)
切换回 dmdba 用户,编辑用户配置文件:
su - dmdba
vi ~/.bash_profile
在文件末尾添加:
export DM_HOME=/dm8
export PATH="$DM_HOME/bin:$PATH"
| 变量 | 作用 |
|---|---|
DM_HOME |
达梦数据库的安装根目录 |
PATH |
将 DM 的 bin 目录加入系统命令搜索路径,这样就能直接输入 disql 而不用敲完整路径 |
export |
把变量值"广播"给整个 Linux 环境,使其全局生效 |
使配置立刻生效:
source ~/.bash_profile
验证配置是否成功 ------输入 disql 后连按两下 Tab 键,如果弹出命令补全提示,说明环境变量配置正确:

四、使用 dbca 创建数据库实例
安装完软件只是第一步,还需要创建数据库实例 才能真正使用数据库。4.1介绍图形化工具,4.3介绍命令行工具。
4.1 启动 dbca 图形化建库工具
切换到 dmdba 用户,启动数据库配置助手(dbca):
cd /dm8/tool
./dbca.sh
如果在终端用 su - dmdba 切换用户后打不开 dbca 并疯狂报错,那是图形界面丢失了屏幕绘画权限(X11 转发失败)。在 root 用户下执行以下命令后再切换:
xhost + # 解除屏幕权限封印
export DISPLAY=:0.0 # 告诉程序屏幕的坐标位置

4.2 建库关键步骤
步骤 1:选择操作方式
选择 「创建数据库实例」,点击"开始"。
步骤 2:选择数据库模板
系统提供三套模板:
| 模板 | 适用场景 |
|---|---|
| 一般用途 | 通用场景,推荐初学者选择 |
| 联机分析处理(OLAP) | 数据仓库、报表分析 |
| 联机事务处理(OLTP) | 高并发业务系统 |
步骤 3:选择数据库目录
指定数据库的数据存储路径,默认在 dmdbms/data 下,建议保持默认。
步骤 4:数据库标识
设置数据库名称、实例名和端口号:
| 参数 | 默认值 | 说明 |
|---|---|---|
| 数据库名 | DAMENG | 可自定义 |
| 实例名 | DMSERVER | 可自定义 |
| 端口号 | 5236 | DM 默认端口,范围 1024~65534 |
步骤 5:数据库初始化参数
根据需要设置页大小、簇大小、字符集等。常用配置建议:
| 参数 | 推荐值 | 注意事项 |
|---|---|---|
| 页大小 (PAGE_SIZE) | 8KB(默认)或 32KB | 建库后不可更改。影响单条记录能允许的最大长度。 |
| 簇大小 (EXTENT_SIZE) | 16 页(默认)或 32 页 | 建库后不可更改。决定了每次向操作系统申请磁盘分配的物理空间大小。 |
| 字符集 (CHARSET) | UTF-8 | 建库后不可更改。强烈建议 UTF-8,除非是极度纯粹的国内封闭系统要求 GB18030。 |
| 大小写敏感 (CASE_SENSITIVE) | 视迁移源头而定 | 建库后不可更改。新系统建议选"是",从 MySQL 迁移通常选"否",从 Oracle 迁移选"是"。 |
| 空格填充模式 (BLANK_PAD_MODE) | 0(否,默认) | 建库后不可更改。若老系统的业务代码习惯了带空格比较(如 Oracle 的部分场景),则需要设为 1。 |
**一旦数据库实例创建成功,绝大部分实例参数都是绝对不允许修改的!**请根据实际业务需求慎重选择! 详细说明请参见《DM8系统管理员手册》
步骤 6:设置口令
设置系统用户 SYSDBA 和 SYSAUDITOR 的密码,安全版另外需要设置 SYSSSO 的密码。
密码要求:
-
长度 8~48 个字符
-
必须同时包含大写字母、小写字母和数字
步骤 7:选择示例库
可选择是否创建示例库 BOOKSHOP 或 DMHR,学习阶段建议勾选。
步骤 8:完成创建
确认摘要信息,点击"完成"开始初始化数据库。

步骤 9:收尾
建库完成后,根据dbca提示执行命令,实现开机自启动。
切换到 root 用户执行:
# 将服务文件移动到 systemd 目录
mv /dm8/bin/DmServiceDMSERVER.service /usr/lib/systemd/system/DmServiceDMSERVER411.service
# 注册开机自启
systemctl enable DmServiceDMSERVER411.service
# 立刻启动数据库服务
systemctl start DmServiceDMSERVER411.service
验证服务状态:
systemctl status DmServiceDMSERVER.service

步骤 10:配置并开启归档模式
数据库实例初始化完成后,为了保障数据安全、支持联机物理备份及灾备集群搭建,建议紧接着开启数据库的归档模式。以下是通过命令行工具 disql 开启本地归档的操作步骤:
1. 准备归档目录 在操作系统中,规划并创建专门用于存放归档日志的目录,并确保安装用户(如 dmdba)拥有读写权限:
# 示例路径,请根据实际规划调整
mkdir -p /dm8/data/DAMENG/arch
2. 登录数据库实例 进入 DM 安装目录的 bin 目录下,使用 disql 登录刚创建好的数据库实例:
./disql SYSDBA/'"Dameng@1234"':15236
(注:替换为实际配置)
3. 切换数据库为 MOUNT 状态 开启和修改归档配置必须在 MOUNT(配置)状态下进行:
ALTER DATABASE MOUNT;
4.开启归档模式
ALTER DATABASE ARCHIVELOG;
5. 配置本地归档参数 为数据库添加本地归档日志的路径及大小限制:
ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm8/data/DAMENG/arch, TYPE=LOCAL, FILE_SIZE=256, SPACE_LIMIT=2048';
参数详解:
DEST:归档日志存放的绝对路径。
TYPE=LOCAL:指定归档类型为本地归档。
FILE_SIZE=1024:单个归档文件的最大大小,单位为 MB(即 1GB)。
SPACE_LIMIT=51200:归档空间的总限制容量,单位为 MB(此处设为 50GB)。当空间占满时会触发清理或停机,设置为 0 则表示无空间限制。
5. 并打开数据库 随后将数据库状态切换回 OPEN(打开)状态以提供正常服务:
ALTER DATABASE OPEN;
6. 验证归档状态 最后,通过查询系统视图确认归档是否成功开启:
SELECT ARCH_MODE FROM V$DATABASE;
如果查询结果的 ARCH_MODE 显示为 Y,且能通过 SELECT * FROM V$DM_ARCH_INI; 查看到刚配置的路径,则说明归档模式配置成功。

步骤 11:执行数据库联机备份与查看 DDL
在数据库实例创建并运行后,为了保障数据安全,进行首次全库备份是非常必要的实操环节。在此步骤中,我们将通过命令行执行备份,并在图形化客户端中验证和查看其底层 DDL 语句。
1. 核心前提:必须开启归档模式
在执行数据库联机备份(即在数据库处于 OPEN 运行状态下进行备份)之前,数据库必须处于归档模式并且归档正常。如果未开启归档直接尝试联机备份,系统将会报错。
(注:如果您在前面的步骤中尚未开启归档,请参考上一步骤)
2. 使用命令行执行全库联机备份
确认归档已开启后,继续在 disql 命令行工具中执行备份语句。达梦提供了极其简明的 SQL 级备份命令。
在 disql 中执行以下命令进行完整备份:
BACKUP DATABASE FULL BACKUPSET '/dm8/data/DAMENG/bak/db_full_bak_01';
参数说明:
FULL:表示执行完全备份(与之对应的是增量备份INCREMENT)。
BACKUPSET:指定备份集存放的绝对路径。请确保该路径的父目录(如/dm8/data/DAMENG/bak)在系统中已提前使用mkdir -p创建好,且dmdba用户拥有写入权限。 执行成功后,系统会提示"操作已执行",并打印出备份耗时信息。

3. 在客户端查看该备份的 DDL 与备份集信息
虽然我们通过命令行完成了备份,但在日常运维中,使用达梦的图形化客户端 管理工具 (Manager) 能够更直观地管理这些备份,同时也能帮助我们反向学习备份的底层 DDL 语法。
-
打开达梦管理工具 (Manager) ,并连接到当前数据库实例。

-
查看已生成的备份集:
-
在左侧对象导航树中,依次展开:【数据库实例】 -> 【备份】。
-
此时你可以看到刚刚通过命令生成的备份集(如
db_full_bak_01),双击或右键属性即可直观地查看备份集的大小、时间、包含的数据文件等详细信息。
-
-
如何利用客户端生成并查看 DDL(学习技巧):
-
如果你想知道图形化界面是如何将你的鼠标点击转化为底层 SQL 的,可以在 Manager 中模拟一次备份。
-
右键点击【备份】节点 -> 选择【新建备份】。
-
在弹出的向导界面中配置好备份类型(完全备份)、备份路径等参数后,先不要点击"确定"。
-
点击对话框下方或侧边的 【查看 DDL】 按钮。
-
此时系统会弹出一个文本框,展示它即将执行的底层 SQL 语句(即
BACKUP DATABASE...)。通过这种方式,你可以随时使用图形化工具"白嫖"并学习各类复杂运维操作的标准 DDL 和命令语法,然后再将这些语法应用到你的 Xshell 自动化脚本中。
-
4.3 使用 dminit 初始化数据库实例(命令行方式)
在没有图形化界面(如 Linux/Unix 纯终端环境)时,使用 dminit 命令行工具是初始化数据库实例的标准且高效的选择。
步骤 1:定位 dminit 工具
dminit 工具是由达梦使用 C 语言编写的独立可执行程序,存放在达梦数据库安装目录的 bin 目录中。
在终端中,务必使用达梦安装用户(如 dmdba)登录,并进入该目录:
# 假设 DM8 安装在 /dm8 目录下
cd /dm8/bin
步骤 2:规划并了解核心初始化参数
在使用 dminit 时,参数的配置决定了数据库底层的物理结构。你可以通过执行 ./dminit help 来查看所有参数。以下是建议关注的核心参数(对标 DBCA 的选项):
| dminit 参数名 | 说明 | 缺省值 | 注意事项 |
|---|---|---|---|
| PATH | 初始数据库存放的物理路径 | 无(必填) | 必须提前规划好,且 dmdba 有读写权限。 |
| DB_NAME | 数据库名称 | DAMENG | 最大长度不超过 128 个字符。 |
| INSTANCE_NAME | 实例名称 | DMSERVER | 最大长度不超过 128 个字符。 |
| PORT_NUM | 数据库监听端口号 | 5236 | 范围:1024~65534,需确保端口未被占用。 |
| PAGE_SIZE | 数据文件页大小 (KB) | 8 | 取值:4, 8, 16, 32。建库后不可更改。 |
| EXTENT_SIZE | 数据文件簇大小 (页) | 16 | 取值:16, 32, 64。建库后不可更改。 |
| CHARSET | 字符集 | 0 | 0: GB18030, 1: UTF-8, 2: EUC-KR。建议设为 1。建库后不可更改。 |
| CASE_SENSITIVE | 标识符大小写敏感 | Y | Y: 敏感, N: 不敏感。新系统建议 Y,MySQL 迁移建议 N。建库后不可更改。 |
步骤 3:执行初始化命令
将规划好的参数拼接成一条命令并在 bin 目录下执行。参数与值之间使用等号(=)连接,参数之间用空格分隔。
标准生产环境初始化示例:
(假设在 /dm8/data 目录下建库,指定端口 5236,页大小 8K,字符集 UTF-8,大小写敏感)
./dminit path=/dm8/data DB_NAME=DAMENG INSTANCE_NAME=DMSERVER PORT_NUM=5236 PAGE_SIZE=8 EXTENT_SIZE=16 CHARSET=1 CASE_SENSITIVE=Y SYSDBA_PWD=Dameng@1234 SYSAUDITOR_PWD=Dameng@1234
⚠️ 密码设置:
旧版密码要求大于8位,新版要求包含:数字、大小写字母、特殊字符;
示例均为:Dameng@1234
执行后,终端会打印出初始化日志(显示各项参数的值,以及创建 SYSTEM.DBF、MAIN.DBF、ROLL.DBF 等物理文件的过程)。当看到 create dm.ini success. 等字样,即表示实例目录和文件初始化成功。
步骤 4:初始化后的关键收尾(注册服务)
⚠️ 核心避坑点:
DBCA 图形化工具在建库的最后,会弹窗提示你用 root 用户执行一段脚本来注册系统服务。但是,使用
dminit纯命令行初始化时,仅仅是生成了物理数据文件,系统并不会自动为你注册后台服务!
因此,在 dminit 执行成功后,你必须手动切换到 root 用户,自己根据路径执行注册
# 切换到 root 用户
su - root
cd /dm8/script/root
# 注册数据库实例服务 (假设配置文件路径为 /dm8/data/DAMENG/dm.ini)
./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DMSERVER
# 启动数据库服务
systemctl start DmServiceDMSERVER
# 查看服务运行状态(出现 active (running) 即为大功告成)
systemctl status DmServiceDMSERVER
# 设置为开机自启(生产环境必备)
systemctl enable DmServiceDMSERVER
注册成功后,即可使用服务命令正式启动该数据库实例。
五、验证安装------连接数据库
5.1 使用 disql 命令行连接
切换到 dmdba 用户,使用 disql 连接数据库:
disql SYSDBA/你设置的密码:端口
连接成功后,SQL 验证:
-- 查看数据库版本
SELECT * FROM V$VERSION;

5.2 安装后的目录结构
使用 tree -L 1 -d 查看 dmdbms/ 安装目录:
| 目录 | 说明 |
|---|---|
bin |
可执行文件(disql、dminit 等核心命令) |
data |
数据库实例目录(核心数据都在这里) |
doc |
用户手册 |
drivers |
JDBC / ODBC / Python 等各语言驱动 |
log |
日志文件 |
script |
注册/注销数据库服务的工具脚本 |
tool |
管理客户端工具(dbca、manager、console 等) |
data 实例目录下的核心文件:
| 文件类型 | 说明 |
|---|---|
.DBF |
数据文件(存实际数据的地方) |
.log |
重做日志文件(事务提交时写入,用于崩溃恢复) |
.ctl |
控制文件(记录数据库物理结构) |
.ini |
配置参数文件(dm.ini 是优化调参的核心) |

六、常见问题排查
Q1:图形化安装/dbca 打不开,疯狂报错?
原因:图形界面的 X11 转发权限问题。
解决 :在 root 用户下执行:
xhost +
export DISPLAY=:0.0
然后再切换到 dmdba 用户启动安装程序。
Q2:安装提示 /tmp 空间不足?
解决:手动指定一个大于 800MB 的临时目录:
mkdir ~/temp
export DM_INSTALL_TMPDIR=/home/dmdba/temp
Q3:安装完成后 disql 命令找不到?
原因:环境变量未配置或未生效。
解决 :检查 ~/.bash_profile 中是否正确添加了 DM_HOME 和 PATH,并执行 source ~/.bash_profile。
Q4:数据库服务启动失败?
排查步骤:
# 查看服务状态和错误日志
systemctl status DmServiceDMSERVER.service -l
# 查看达梦自身的日志
cat /home/dmdba/dmdbms/log/dm_DMSERVER_*.log
常见原因:端口被占用、文件权限不足、控制文件损坏。
总结
本文完整走通了从零搭建 DM8 数据库环境的全流程:
准备工具 → 创建虚拟机 → 安装麒麟系统 → Linux 前置配置 → 安装 DM8 → dbca 建库 → 注册服务 → 备份并且查看 → 验证连接
核心要点回顾:
-
建议前置配置:关防火墙、关 SELinux、改文件描述符上限
-
不要用 root 操作数据库 :创建
dmdba专用用户,权限隔离是生产规范、铁律更是产品设计 -
环境变量建议配 :
DM_HOME+PATH -
root 脚本别忘执行 :安装末尾和建库末尾各有一次,不执行会导致服务注册失败,若使用命令行工具(如
dminit)初始化数据库实例,系统是不会提示执行 root 脚本的,需要自己执行 -
实例参数初始化后不可更改:建库前务必根据业务需求确认
-
根据需求,配置归档和备份,选择文件大小,是否全量备份等等,详见手册
本文基于 DM8 版本编写,安装环境为银河麒麟 V10 x86_64 + VMware 虚拟机。