DM 数据库从入门到实操:国产数据库技术学习心得
2026/4/15 6:23:35 网站建设 项目流程

一、目录

  1. 引言:国产数据库的发展与 DM 数据库优势
  1. DM 数据库安装与环境配置(附实操截图)
  1. 实例创建与核心参数优化
  1. 备份还原机制与实操步骤
  1. 常用函数与 SQL 查询实战
  1. DM SQL 程序设计思路与案例
  1. 实操常见问题及解决方案
  1. 学习总结与展望

二、引言

随着国产化替代浪潮的推进,国产数据库技术已成为企业数字化转型的核心支撑。达梦数据库(DM)作为国内自主研发的高性能数据库,凭借兼容 Oracle 语法、高安全性、高可用性等优势,广泛应用于政务、金融、能源等关键领域。在《国产数据库技术》课程学习中,我从环境搭建到实操实战逐步深入,现将 DM 数据库核心知识点与实操心得整理如下,助力更多开发者快速上手。

三、DM 数据库安装与环境配置

3.1 安装前提

操作系统:CentOS 7.9(64 位),内存≥4GB,磁盘空间≥20GB,关闭防火墙与 SELinux。

3.2 安装步骤(附关键截图说明)

  1. 下载 DM 数据库安装包(dm8_20230808_x86_rh7_64_ent.zip),上传至服务器 /usr/local 目录;
  1. 解压安装包:unzip dm8_20230808_x86_rh7_64_ent.zip;
  1. 执行安装脚本:./DMInstall.bin,选择 “典型安装”,默认安装路径为 /opt/dmdbms;
  1. 安装完成后,执行初始化脚本:/opt/dmdbms/bin/dminit path=/opt/dmdata PAGE_SIZE=16(PAGE_SIZE 建议 16KB,适配大表场景);
  1. 启动数据库服务:systemctl start DmServiceDMSERVER,查看状态:systemctl status DmServiceDMSERVER。

截图要点:安装向导界面选择 “典型安装”、初始化参数配置界面、服务启动成功状态提示(需标注关键路径与参数)。

3.3 客户端连接

使用 DM 管理工具(DM Management Tool),输入服务器 IP、端口(默认 5236)、用户名 SYSDBA、密码 SYSDBA,连接成功后即可进行可视化操作。

四、实例创建与核心参数优化

4.1 实例创建关键参数

  • PAGE_SIZE:数据页大小,可选 4KB/8KB/16KB/32KB,大表场景建议 16KB;
  • EXTENT_SIZE:表空间扩展大小,默认 16MB,根据业务数据量调整;
  • CHARSET:字符集,默认 GB18030,支持 UTF-8;
  • CASE_SENSITIVE:大小写敏感,默认 Y(兼容 Oracle),开发环境建议 N。

4.2 性能优化参数

修改 /opt/dmdbms/bin/dm.ini 配置文件:

  • BUFFER:缓冲区大小,设为物理内存的 50%(如 8GB 内存设为 4096MB);
  • SORT_BUF_SIZE:排序缓冲区大小,默认 1MB,大数据排序设为 8MB;
  • LOG_BUFFER_SIZE:日志缓冲区大小,默认 16MB,高并发场景设为 64MB。

修改后重启服务:systemctl restart DmServiceDMSERVER。

五、备份还原机制与实操步骤

5.1 备份类型

  • 物理备份:冷备份(数据库关闭状态)、热备份(数据库运行状态);
  • 逻辑备份:通过 dexp 工具导出数据,dimp 工具导入数据。

5.2 热备份实操

  1. 登录 DM 管理工具,右键点击实例→“备份”→“创建备份策略”;
  1. 选择 “完全备份”,备份路径设为 /opt/dmbackup,备份周期设为每日凌晨 2 点;
  1. 手动执行备份:/opt/dmdbms/bin/dmrman CTLSTMT="BACKUP DATABASE '/opt/dmdata/DAMENG/dm.ini' FULL TO BACKUP_20240520 BACKUPSET '/opt/dmbackup/BACKUP_20240520'";
  1. 还原测试:停止数据库→删除数据文件→执行还原命令:dmrman CTLSTMT="RESTORE DATABASE '/opt/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmbackup/BACKUP_20240520'"→恢复数据库:dmrman CTLSTMT="RECOVER DATABASE '/opt/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmbackup/BACKUP_20240520'"→启动数据库。

截图要点:备份策略配置界面、备份命令执行成功日志、还原后数据验证结果。

六、常用函数与 SQL 查询实战

6.1 核心函数用法

  • 字符串函数:SUBSTR('达梦数据库',1,2)→返回 “达梦”,CONCAT('DM','8')→返回 “DM8”;
  • 日期函数:CURDATE()→返回当前日期,DATEADD('DAY',3,CURDATE())→返回 3 天后日期;
  • 聚合函数:SUM()、AVG()、COUNT(),支持分组统计:SELECT DEPT, AVG(SALARY) FROM EMP GROUP BY DEPT。

6.2 复杂查询案例

需求:查询 “研发部” 员工中 2023 年入职、工资高于 8000 的员工信息,按工资降序排列:

SELECT EMP_ID, EMP_NAME, SALARY, HIREDATE

FROM EMP

WHERE DEPT = '研发部'

AND YEAR(HIREDATE) = 2023

AND SALARY > 8000

ORDER BY SALARY DESC;

执行结果:返回符合条件的员工列表,可通过 DM 管理工具的 “执行计划” 优化查询效率(如添加 DEPT、HIREDATE 联合索引)。

七、DM SQL 程序设计思路与案例

7.1 程序设计步骤

  1. 需求分析:明确业务场景(如员工考勤统计);
  1. 数据建模:设计表结构(如 ATTENDANCE 表包含 EMP_ID、ATTEND_DATE、STATUS 字段);
  1. 逻辑编写:使用存储过程实现批量统计;
  1. 测试优化:执行存储过程,验证结果并优化性能。

7.2 存储过程案例

CREATE OR REPLACE PROCEDURE STAT_ATTENDANCE(IN DEPT VARCHAR(20), OUT TOTAL INT, OUT LATE_COUNT INT)

AS

BEGIN

-- 统计部门总考勤天数

SELECT COUNT(*) INTO TOTAL FROM ATTENDANCE WHERE DEPT = DEPT;

-- 统计迟到次数

SELECT COUNT(*) INTO LATE_COUNT FROM ATTENDANCE WHERE DEPT = DEPT AND STATUS = '迟到';

PRINT '部门:' || DEPT || ',总考勤天数:' || TOTAL || ',迟到次数:' || LATE_COUNT;

END;

/

调用存储过程:CALL STAT_ATTENDANCE('研发部', ?, ?),返回结果可用于报表生成。

八、实操常见问题及解决方案

  1. 数据库启动失败:检查端口 5236 是否被占用(netstat -anp | grep 5236),释放端口后重启;
  1. 备份失败:确保备份路径有读写权限(chmod 777 /opt/dmbackup);
  1. SQL 语句执行报错:DM 兼容 Oracle 语法,但需注意函数差异(如 Oracle 的 TO_DATE () 对应 DM 的 DATE_FORMAT ());
  1. 连接超时:检查服务器防火墙是否开放 5236 端口(firewall-cmd --zone=public --add-port=5236/tcp --permanent)。

九、学习总结与展望

通过《国产数据库技术》课程学习,我系统掌握了 DM 数据库的安装配置、备份还原、SQL 开发等核心技能,深刻体会到国产数据库在性能、安全性上的优势。未来,我将继续深入研究 DM 数据库的高可用集群、数据迁移工具等高级特性,同时关注国产数据库生态的发展,为国产化替代项目贡献技术力量。

若本文对你有帮助,欢迎点赞、收藏,如有疑问可在评论区交流~

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询