news 2026/4/15 15:32:51

国产数据库技术学习心得:DM8 从入门到实战全攻略​

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
国产数据库技术学习心得:DM8 从入门到实战全攻略​

目录​

  1. 课程学习背景与 DM 数据库简介​
  1. DM8 数据库安装与环境配置(图文教程)​
  1. 实例创建与初始化配置​
  1. 核心功能实战:备份还原操作指南​
  1. DM 函数用法与 SQL 查询实战​
  1. DM SQL 程序设计思路与步骤​
  1. 常见问题排查与技巧总结​
  1. 学习总结与国产数据库展望​

1. 课程学习背景与 DM 数据库简介​

在《国产数据库技术》课程学习中,我重点钻研了达梦数据库(DM8) —— 这款由武汉达梦数据库股份有限公司自主研发的企业级关系型数据库,具备完全自主知识产权,兼容 Oracle、MySQL 等主流数据库语法,在性能、安全性和兼容性上均达到国际先进水平,广泛应用于政务、金融、能源等关键领域。​

通过课程学习,我深刻体会到国产数据库在 “去 IOE” 浪潮中的核心价值,本文将结合实操经验,从安装配置到程序开发,全方位分享 DM8 的学习心得,帮助开发者快速上手这款优秀的国产数据库。​

2. DM8 数据库安装与环境配置(图文教程)​

2.1 安装前准备​

  • 操作系统:CentOS 7.9(64 位)​
  • 硬件要求:CPU≥2 核,内存≥4GB,磁盘空间≥20GB​
  • 依赖包:glibc-devel、libaio-devel(提前通过yum install安装)​
  • 下载安装包:从达梦官网获取 DM8 安装介质(dm8_20230908_x86_rhel7_64.iso)​

2.2 详细安装步骤​

  1. 挂载安装包:​
mkdir /mnt/dm8​ mount -o loop dm8_20230908_x86_rhel7_64.iso /mnt/dm8
  1. 创建安装用户与组:​
groupadd dinstall​ useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba​ passwd dmdba

​3.执行图形化安装:​

切换至 dmdba 用户,进入挂载目录执行安装脚本:​

su - dmdba​ cd /mnt/dm8​ ./DMInstall.bin
  • 步骤 1:选择语言(中文)和时区(GMT+8)​
  • 步骤 2:接受许可协议​
  • 步骤 3:选择安装类型(典型安装,默认路径/home/dmdba/dmdbms)​
  • 步骤 4:等待安装完成(约 5-10 分钟),按提示执行 root 脚本:​
su - root​ /home/dmdba/dmdbms/script/root/root_installer.sh

​2.3 环境变量配置​

编辑/home/dmdba/.bashrc文件,添加以下内容:​

export DM_HOME=/home/dmdba/dmdbms​ export PATH=$DM_HOME/bin:$PATH​ export LD_LIBRARY_PATH=$DM_HOME/lib:$LD_LIBRARY_PATH

生效配置:source /home/dmdba/.bashrc,执行disql命令验证环境是否正常。​

3. 实例创建与初始化配置​

3.1 使用 dbca 工具创建实例​

DM8 提供图形化工具dbca.sh快速创建实例,步骤如下:​

  1. 执行cd $DM_HOME/bin && ./dbca.sh启动工具​
  1. 选择 “创建数据库实例”,设置实例名称(如DMSERVER)、端口号(默认 5236)​
  1. 配置数据文件存储路径(建议单独挂载磁盘,如/data/dm8/data)​
  1. 设置 SYSDBA 用户密码(默认用户名SYSDBA,密码需包含大小写字母 + 数字)​
  1. 选择初始化参数:字符集(UTF-8)、页大小(8KB)、日志文件大小(2GB)​
  1. 确认配置并完成实例创建,启动实例:​
systemctl start dm.service # 或 ./dmctl start /home/dmdba/dmdbms/data/DMSERVER/dm.ini

3.2 客户端连接测试​

使用 DM 管理工具(Windows 端)或disql命令行连接:​

disql SYSDBA/Sysdba123@localhost:5236

连接成功后显示:​

服务器[localhost:5236]:处于普通打开状态​ 登录使用时间 : 3.232(ms)​ disql V8​ SQL>

4. 核心功能实战:备份还原操作指南​

DM8 的备份还原功能支持全量、增量、日志备份,以下是实操步骤:​

4.1 全量备份(命令行方式)​

  1. 登录 disql,执行备份语句:​
BACKUP DATABASE FULL TO BACKUP_FULL_20240501 BACKUPSET '/data/dm8/backup/full_20240501';
  • BACKUP DATABASE FULL:全量备份​
  • BACKUPSET:指定备份集存储路径​

4.2 还原与恢复操作​

假设数据库数据文件损坏,需通过备份集还原:​

  1. 停止数据库实例:./dmctl stop /home/dmdba/dmdbms/data/DMSERVER/dm.ini​
  1. 执行还原命令:​
  2. dmrestore INI_FILE=/home/dmdba/dmdbms/data/DMSERVER/dm.ini BACKUPSET='/data/dm8/backup/full_20240501'
  3. 执行恢复命令(同步日志):​

dmrestore RECOVER INI_FILE=/home/dmdba/dmdbms/data/DMSERVER/dm.ini BACKUPSET='/data/dm8/backup/full_20240501'
  1. 启动数据库:./dmctl start /home/dmdba/dmdbms/data/DMSERVER/dm.ini​

4.3 定时备份脚本(自动化方案)​

编写 Shell 脚本实现每日全量备份,结合 crontab 定时执行:​

#!/bin/bash​ BACKUP_DIR=/data/dm8/backup​ DATE=$(date +%Y%m%d)​ su - dmdba -c "disql SYSDBA/Sysdba123@localhost:5236 <UP DATABASE FULL TO BACKUP_FULL_$DATE BACKUPSET '$BACKUP_DIR/full_$DATE';​ EOF"​ # 保留7天备份​ find $BACKUP_DIR -name "full_*" -mtime +7 -delete

添加定时任务:crontab -e,添加0 2 * * * /home/dmdba/script/dm_backup.sh(每日凌晨 2 点执行)​

5. DM 函数用法与 SQL 查询实战​

DM8 兼容主流 SQL 函数,同时提供特有函数,以下结合实际场景举例:​

5.1 常用函数示例​

函数类型​

示例 SQL​

功能说明​

字符串函数​

SELECT CONCAT('DM', '数据库') AS 结果;​

拼接字符串,返回 “DM 数据库”​

日期函数​

SELECT DATEADD(DAY, 3, SYSDATE) AS 三天后;​

计算当前日期后 3 天​

聚合函数​

SELECT DEPT_ID, AVG(SALARY) AS 平均工资 FROM EMP GROUP BY DEPT_ID;​

按部门统计平均工资​

特有函数​

SELECT SF_GET_SESSION_ID() AS 会话ID;​

获取当前会话 ID(DM 特有)​

5.2 复杂查询实战:多表联查 + 条件过滤​

场景:查询 “研发部” 员工中工资高于部门平均工资的员工信息,包含部门名称、员工姓名、工资:​

SELECT ​ d.DEPT_NAME,​ e.EMP_NAME,​ e.SALARY,​ (SELECT AVG(SALARY) FROM EMP WHERE DEPT_ID = d.DEPT_ID) AS 部门平均工资​ FROM ​ EMP e​ JOIN ​ DEPT d ON e.DEPT_ID = d.DEPT_ID​ WHERE ​ d.DEPT_NAME = '研发部'​ AND e.SALARY > (SELECT AVG(SALARY) FROM EMP WHERE DEPT_ID = d.DEPT_ID);

查询结果:​

DEPT_NAME​

EMP_NAME​

SALARY​

部门平均工资​

研发部​

张三​

15000​

12000​

研发部​

李四​

13000​

12000​

6. DM SQL 程序设计思路与步骤​

DM8 支持 PL/SQL 风格的程序设计,包括存储过程、函数、触发器等,以下以 “员工工资调整存储过程” 为例,说明设计思路:​

6.1 需求分析​

实现按部门批量调整工资:​

  • 输入参数:部门 ID(DEPT_ID)、调整比例(RATIO,如 0.1 表示上涨 10%)​
  • 逻辑:调整该部门所有员工工资,记录调整日志​
  • 输出:受影响的员工数量​

6.2 程序设计步骤​

  1. 创建日志表(存储工资调整记录):​
CREATE TABLE SALARY_ADJUST_LOG (​ LOG_ID INT IDENTITY(1,1) PRIMARY KEY,​ EMP_ID INT,​ OLD_SALARY DECIMAL(10,2),​ NEW_SALARY DECIMAL(10,2),​ ADJUST_RATIO DECIMAL(4,2),​ ADJUST_DATE DATETIME DEFAULT SYSDATE​ );

  1. 编写存储过程:​

CREATE OR REPLACE PROCEDURE PROC_ADJUST_SALARY(​ IN P_DEPT_ID INT,​ V_NEW_SALARY DECIMAL(10,2);​ BEGIN​ P_AFFECTED_CNT := 0;​ -- 遍历部门员工,调整工资​ FOR EMP_REC IN (SELECT EMP_ID, SALARY FROM EMP WHERE DEPT_ID = P_DEPT_ID) LOOP​ V_OLD_SALARY := EMP_REC.SALARY;​ V_NEW_SALARY := V_OLD_SALARY * (1 + P_RATIO);​ -- 更新工资​ UPDATE EMP SET SALARY = V_NEW_SALARY WHERE EMP_ID = EMP_REC.EMP_ID;​ -- 插入日志​ INSERT INTO SALARY_ADJUST_LOG (EMP_ID, OLD_SALARY, NEW_SALARY, ADJUST_RATIO)​ VALUES (EMP_REC.EMP_ID, V_OLD_SALARY, V_NEW_SALARY, P_RATIO);​ P_AFFECTED_CNT := P_AFFECTED_CNT + 1;​ END LOOP;​ COMMIT;​ DBMS_OUTPUT.PUT_LINE('工资调整完成,受影响员工数:' || P_AFFECTED_CNT);​ EXCEPTION​ WHEN OTHERS THEN​ ROLLBACK;​ DBMS_OUTPUT.PUT_LINE('调整失败:' || SQLERRM);​ RAISE;​ END;​ /
  1. 调用存储过程:​

SET SERVEROUTPUT ON;​ DECLARE​ V_CNT INT;​ BEGIN​ PROC_ADJUST_SALARY(DEPT_ID => 10, RATIO => 0.1, P_AFFECTED_CNT => V_CNT);​ END;​ /

执行结果:工资调整完成,受影响员工数:5​

7. 常见问题排查与技巧总结​

7.1 安装失败问题​

  • 问题 1:图形化安装界面无法启动​

解决:检查是否安装libXext、libX11等依赖包,执行yum install libXext libX11 -y​

  • 问题 2:执行 root 脚本时报 “权限不足”​

解决:确保安装目录所有者为 dinstall 组,执行chown -R dmdba:dinstall /home/dmdba/dmdbms​

7.2 连接数据库失败​

  • 问题:disql连接时报 “网络通信异常”​

解决:​

  1. 检查数据库实例是否启动:./dmctl status /home/dmdba/dmdbms/data/DMSERVER/dm.ini​
  1. 检查防火墙是否开放 5236 端口:firewall-cmd --add-port=5236/tcp --permanent && firewall-cmd --reload​
  1. 验证监听状态:netstat -an | grep 5236​

7.3 性能优化技巧​

  • 索引优化:对查询频繁的字段(如 EMP.DEPT_ID、EMP.EMP_NAME)创建索引​
  • 分页查询:使用ROWID分页,比LIMIT更高效:​

SELECT * FROM (​ SELECT ROWID, EMP.* FROM EMP WHERE DEPT_ID = 10 ORDER BY EMP_ID​ ) WHERE ROWID BETWEEN 1 AND 20;
  • 避免全表扫描:查询时指定 WHERE 条件,避免SELECT *​

8. 学习总结与国产数据库展望​

通过《国产数据库技术》课程学习,我不仅掌握了 DM8 数据库的安装配置、核心功能和程序开发,更深刻认识到国产数据库在技术自主性、安全可控性上的优势。DM8 作为国产数据库的代表,其兼容性、性能和易用性已能满足企业级应用需求,随着 “去 IOE” 政策的推进,国产数据库的市场份额将持续扩大。​

未来学习计划:​

  1. 深入研究 DM8 的高可用架构(主从复制、集群部署)​
  1. 探索 DM8 与 Java、Python 等编程语言的集成开发​
  1. 关注国产数据库生态建设,学习 TiDB、OceanBase 等其他主流产品​

国产数据库的发展离不开开发者的实践与推广,希望本文的学习心得能为更多开发者提供参考,共同推动国产数据库技术的进步!​

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 9:41:14

打工人狂喜!Clipboard Helper 绿色工具,告别重复 Ctrl+C/V

做客服、行政或数据录入时&#xff0c;总要把同一套话术、数据复制粘贴到不同地方。日复一日的 CtrlC、CtrlV 循环&#xff0c;手没麻&#xff0c;心态先崩了 —— 这破班怎么还需要靠重复操作续命&#xff1f; 直到我挖到这款吾爱大神 dreamscd 原创的绿色工具&#xff0c;直…

作者头像 李华
网站建设 2026/4/12 7:23:00

GSV6715@ACP#6715产品规格详解及产品应用分享

GSV6715 产品参数详解与应用场景总结一、产品核心定位GSV6715 是由基石酷联&#xff08;GScoolink&#xff09;推出的4 进 1 出混合切换器芯片&#xff0c;主打 HDMI 2.1 与 DisplayPort 1.4 信号的灵活转换&#xff0c;最终输出 HDMI 2.1 信号。芯片集成了基于 RISC-V 架构的嵌…

作者头像 李华
网站建设 2026/4/13 6:42:06

vue和springboot框架开发的影院购票选座管理系统_jnuas46c

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 同行可拿货,招校园代理 vuespringboot_jnuas46c 框架开发的影院购票选座管…

作者头像 李华