DM8 数据库安装实战:从零搭建达梦数据库环境(附全套工具链接)

实验环境:银河麒麟高级服务器操作系统 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 用户直接安装和运行达梦数据库

原因有三:

  1. 产品设计要求: DM8 要求存在专门的数据库用户(如 dmdba),否则无法顺利使用。

  2. 使用规范约束: 按照官方使用规范,日常的数据库操作都必须使用 dmdba 用户来进行,这是标准的准则。

  3. 安全隔离: 如果数据库进程以 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:设置口令

设置系统用户 SYSDBASYSAUDITOR 的密码,安全版另外需要设置 SYSSSO 的密码。

密码要求:

  • 长度 8~48 个字符

  • 必须同时包含大写字母、小写字母和数字

步骤 7:选择示例库

可选择是否创建示例库 BOOKSHOPDMHR,学习阶段建议勾选。

步骤 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 语法。

  1. 打开达梦管理工具 (Manager) ,并连接到当前数据库实例。

  2. 查看已生成的备份集:

    • 在左侧对象导航树中,依次展开:【数据库实例】 -> 【备份】。

    • 此时你可以看到刚刚通过命令生成的备份集(如 db_full_bak_01),双击或右键属性即可直观地查看备份集的大小、时间、包含的数据文件等详细信息。

  3. 如何利用客户端生成并查看 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.DBFMAIN.DBFROLL.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_HOMEPATH,并执行 source ~/.bash_profile

Q4:数据库服务启动失败?

排查步骤

复制代码
# 查看服务状态和错误日志
systemctl status DmServiceDMSERVER.service -l
​
# 查看达梦自身的日志
cat /home/dmdba/dmdbms/log/dm_DMSERVER_*.log

常见原因:端口被占用、文件权限不足、控制文件损坏。


总结

本文完整走通了从零搭建 DM8 数据库环境的全流程:

复制代码
准备工具 → 创建虚拟机 → 安装麒麟系统 → Linux 前置配置 → 安装 DM8 → dbca 建库 → 注册服务 → 备份并且查看 → 验证连接

核心要点回顾

  1. 建议前置配置:关防火墙、关 SELinux、改文件描述符上限

  2. 不要用 root 操作数据库 :创建 dmdba 专用用户,权限隔离是生产规范、铁律更是产品设计

  3. 环境变量建议配DM_HOME + PATH

  4. root 脚本别忘执行 :安装末尾和建库末尾各有一次,不执行会导致服务注册失败,若使用命令行工具(如 dminit)初始化数据库实例,系统是不会提示执行 root 脚本的,需要自己执行

  5. 实例参数初始化后不可更改:建库前务必根据业务需求确认

  6. 根据需求,配置归档和备份,选择文件大小,是否全量备份等等,详见手册


本文基于 DM8 版本编写,安装环境为银河麒麟 V10 x86_64 + VMware 虚拟机。

相关推荐
XDHCOM2 小时前
PostgreSQL 25001: active_sql_transaction 报错原因分析,故障修复步骤详解,远程处理解决方案
数据库·sql·postgresql
卤炖阑尾炎3 小时前
PostgreSQL 日常运维全指南:从基础操作到备份恢复
运维·数据库·postgresql
daad7774 小时前
wifi_note
运维·服务器·数据库
xixingzhe24 小时前
Mysql统计空间增量
数据库·mysql
程序员萌萌5 小时前
Redis的缓存机制和淘汰策略详解
数据库·redis·缓存机制·淘汰策略
不剪发的Tony老师5 小时前
SQLite 3.53.0版本发布,重要更新
数据库·sqlite
Bczheng15 小时前
九.Berkeley DB数据库 序列化和钱包管理(1)
数据库
cozil5 小时前
记录mysql创建数据库未指定字符集引发的问题及解决方法
数据库·mysql
架构师老Y5 小时前
013、数据库性能优化:索引、查询与连接池
数据库·python·oracle·性能优化·架构