news 2026/4/2 18:23:25

DM数据库麒麟操作系统实操指南:从安装到开发的国产化适配之路

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DM数据库麒麟操作系统实操指南:从安装到开发的国产化适配之路

一、DM 数据库安装与环境配置(Kylin OS V10 场景)

1. 安装前置准备
  • 硬件要求:CPU≥2 核(支持 x86_64/ARM 架构)、内存≥4G、磁盘空间≥20G(建议 SSD)
  • 依赖库安装:麒麟系统默认使用 dnf 包管理器,执行以下命令补全依赖

# 安装基础依赖(兼容32位/64位)

dnf install -y glibc.i686 libstdc++.i686 libaio.i686 net-tools libaio-devel

# ARM架构额外安装(若适用)

dnf install -y glibc.aarch64 libstdc++.aarch64 libaio.aarch64

  • 系统环境配置:关闭 SELINUX(麒麟系统默认开启,可能影响安装)

# 临时关闭

setenforce 0

# 永久关闭(编辑配置文件)

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

  • 创建专用用户:遵循国产化安全规范,避免 root 权限运行

useradd -m dmuser && passwd dmuser

chmod 755 /home/dmuser

# 赋予目录权限(麒麟系统需额外配置)

chown -R dmuser:dmuser /opt /home/dmuser

2. 图形化安装步骤(兼容麒麟桌面环境)
  1. 上传 DM 数据库安装包(如 dm8_20230808_x86_kylin10_64.iso)至/opt目录
  2. 挂载镜像(麒麟系统支持直接挂载 ISO 文件)

mount /opt/dm8_20230808_x86_kylin10_64.iso /mnt

# 若挂载失败,执行:mount -o loop /opt/xxx.iso /mnt

  1. 切换至 dmuser 用户,启动安装向导(麒麟系统需确保图形环境正常)

su - dmuser

/mnt/DMInstall.bin

  1. 安装向导配置(国产化适配要点):
    • 选择 “典型安装”,安装路径设为/home/dmuser/dmdbms(避免权限冲突)
    • 字符集默认 UTF-8(适配国产化应用编码规范)
    • 端口保持 5236(麒麟系统默认放行,无需额外配置)
    • 安装完成后,按提示执行 root 脚本(关键步骤)

/home/dmuser/dmdbms/script/root/root_installer.sh

3. 实例创建与服务管理(麒麟系统 systemctl 适配)
  • 图形化创建实例:运行麒麟系统兼容的工具脚本

su - dmuser

/home/dmuser/dmdbms/tool/dbca.sh

配置项:

  • 实例名:DMSERVER,端口 5236
  • 数据文件路径:/home/dmuser/dmdata(确保 dmuser 有读写权限)
  • 日志模式:归档模式(生产环境必选,适配国产化合规要求)
  • 命令行启动 / 停止(麒麟系统服务管理)

# 注册系统服务(仅首次执行)

/home/dmuser/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /home/dmuser/dmdata/DMSERVER/dm.ini

# 启动服务

systemctl start DmServiceDMSERVER

# 停止服务

systemctl stop DmServiceDMSERVER

# 设置开机自启(国产化部署必备)

systemctl enable DmServiceDMSERVER

# 查看服务状态

systemctl status DmServiceDMSERVER

二、核心运维:备份与还原(麒麟系统环境适配)

1. 全量备份(命令行方式,兼容麒麟系统权限)

-- 登录数据库(麒麟系统本地连接,指定字符集)

/home/dmuser/dmdbms/bin/disql SYSDBA/SYSDBA@localhost:5236 -ENCODING UTF-8

-- 执行全量备份(麒麟系统支持的磁盘路径格式)

BACKUP DATABASE FULL TO BACKUP_20240520 BACKUPSET '/home/dmuser/dmbackup/BACKUP_20240520';

-- 验证备份集(国产化环境需定期校验)

SELECT SF_BAKSET_CHECK('DISK', '/home/dmuser/dmbackup/BACKUP_20240520');

2. 异机还原步骤(麒麟系统间数据迁移)
  1. 复制备份集至目标麒麟服务器(建议使用 scp 命令,保持权限一致)

scp -r /home/dmuser/dmbackup/BACKUP_20240520 dmuser@目标IP:/home/dmuser/dmbackup/

  1. 目标服务器执行还原(麒麟系统 mount 模式启动)

-- 停止服务

systemctl stop DmServiceDMSERVER

-- 麒麟系统mount模式启动(指定配置文件)

dmserver /home/dmuser/dmdata/DMSERVER/dm.ini mount

-- 登录disql执行还原

/home/dmuser/dmdbms/bin/disql SYSDBA/SYSDBA@localhost:5236

RESTORE DATABASE FROM BACKUPSET '/home/dmuser/dmbackup/BACKUP_20240520';

RECOVER DATABASE FROM BACKUPSET '/home/dmuser/dmbackup/BACKUP_20240520';

ALTER DATABASE OPEN;

-- 重启服务

systemctl restart DmServiceDMSERVER

3. 国产化环境备份策略建议
  • 适配麒麟系统定时任务:使用 crontab 配置自动备份(避免使用 Windows 风格任务计划)

# 编辑dmuser的定时任务

su - dmuser

crontab -e

# 添加每日全量备份(凌晨2点执行)

0 2 * * * /home/dmuser/dmdbms/bin/disql SYSDBA/SYSDBA@localhost:5236 -c "BACKUP DATABASE FULL TO BACKUP_$(date +\%Y\%m\%d) BACKUPSET '/home/dmuser/dmbackup/BACKUP_$(date +\%Y\%m\%d)';"

  • 归档日志配置:麒麟系统下修改 dm.ini 文件,确保日志路径存在且权限正确

ARCH_INI = 1 # 开启归档

ARCH_DEST = /home/dmuser/dmarch # 归档日志路径(需手动创建)

  • 备份集存储:建议同步至国产化存储设备(如华为 OceanStor),符合数据安全要求

三、DM 函数实战:常用函数用法与示例(与系统无关,保持原逻辑)

1. 字符串函数

函数名

功能

示例

结果

CONCAT

字符串拼接

CONCAT('DM', '数据库')

'DM 数据库'

SUBSTR

截取字符串

SUBSTR('DM8企业版', 3, 4)

' 企业版'

TRIM

去除空格

TRIM(' DM数据库 ')

'DM 数据库'

2. 日期函数(重点)

-- 当前日期时间

SELECT SYSDATE FROM DUAL; -- 2024-05-20 14:30:25

-- 日期加减

SELECT SYSDATE + INTERVAL '3' DAY FROM DUAL; -- 3天后日期

SELECT DATEADD(MM, 1, SYSDATE) FROM DUAL; -- 1个月后日期

-- 日期格式化(适配国产化应用日期格式)

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL; -- 自定义格式

3. 聚合函数与分析函数

-- 聚合函数:统计订单总额

SELECT ORDER_DATE, SUM(AMOUNT) AS TOTAL_AMOUNT

FROM ORDERS

GROUP BY ORDER_DATE

HAVING SUM(AMOUNT) > 1000;

-- 分析函数:排名(按销售额降序)

SELECT PRODUCT_ID, SALE_AMOUNT,

RANK() OVER (ORDER BY SALE_AMOUNT DESC) AS SALE_RANK

FROM PRODUCT_SALES;

四、SQL 开发实战:复杂查询与程序设计(保持原逻辑,补充麒麟环境注意事项)

1. 多表关联查询(电商订单场景)

SELECT

u.USER_ID, u.USER_NAME, o.ORDER_ID, o.ORDER_DATE,

o.TOTAL_AMOUNT, p.PRODUCT_NAME

FROM

USERS u

JOIN ORDERS o ON u.USER_ID = o.USER_ID

JOIN ORDER_DETAIL od ON o.ORDER_ID = od.ORDER_ID

JOIN PRODUCT p ON od.PRODUCT_ID = p.PRODUCT_ID

WHERE

o.ORDER_DATE BETWEEN '2024-05-01' AND '2024-05-31'

ORDER BY o.ORDER_DATE DESC;

2. DM 存储过程设计(数据同步场景,适配麒麟系统编码)

CREATE OR REPLACE PROCEDURE SYNC_USER_HISTORY

AS

V_RET INT;

BEGIN

-- 插入历史数据

INSERT INTO USER_HISTORY

SELECT * FROM USERS

WHERE CREATE_TIME < ADD_MONTHS(SYSDATE, -3);

-- 删除3个月前数据

DELETE FROM USERS

WHERE CREATE_TIME THS(SYSDATE, -3);

COMMIT;

V_RET := 1; -- 执行成功

EXCEPTION

WHEN OTHERS THEN

ROLLBACK;

V_RET := 0; -- 执行失败

RAISE_APPLICATION_ERROR(-20001, '同步失败:' || SQLERRM);

END;

/

-- 调用存储过程(麒麟系统下正常执行)

CALL SYNC_USER_HISTORY();

3. 动态 SQL 应用(灵活查询场景)

CREATE OR REPLACE PROCEDURE QUERY_ORDER(

P_USER_ID IN INT,

P_START_DATE IN DATE,

P_END_DATE IN DATE,

P_RESULT OUT SYS_REFCURSOR

)

AS

V_SQL VARCHAR2(1000);

BEGIN

V_SQL := 'SELECT * FROM ORDERS WHERE 1=1';

-- 动态拼接条件

IF P_USER_ID IS NOT NULL THEN

V_SQL := V_SQL || ' AND USER_ID = ' || P_USER_ID;

END IF;

IF P_START_DATE IS NOT NULL THEN

V_SQL := V_SQL || ' AND ORDER_DATE >= TO_DATE(''' || TO_CHAR(P_START_DATE, 'YYYY-MM-DD') || ''', ''YYYY-MM-DD'')';

END IF;

IF P_END_DATE IS NOT NULL THEN

V_SQL := V_SQL || ' AND ORDER_DATE || TO_CHAR(P_END_DATE, 'YYYY-MM-DD') || ''', ''YYYY-MM-DD'')';

END IF;

OPEN P_RESULT FOR V_SQL;

END;

/

五、麒麟系统特有问题解决思路与技巧

1. 安装失败:图形环境不兼容
  • 现象:执行 DMInstall.bin 后无响应,或提示 “无法启动图形界面”
  • 解决
    1. 安装麒麟系统图形依赖:dnf install -y xorg-x11-server-utils gtk2
    2. 若仍无法启动,使用命令行安装模式:

su - dmuser

/mnt/DMInstall.bin -i console

2. 服务启动失败:麒麟系统权限限制
  • 现象:systemctl start DmServiceDMSERVER 提示 “权限被拒绝”
  • 排查步骤
    1. 检查数据文件目录权限:ls -ld /home/dmuser/dmdata,确保属主为 dmuser
    2. 关闭麒麟系统防火墙(临时测试):systemctl stop firewalld
    3. 查看日志定位问题:cat /home/dmuser/dmdbms/log/DmServiceDMSERVER.log
3. 依赖库冲突:麒麟系统自带库版本不兼容
  • 现象:启动 dmserver 提示 “libstdc++.so.6: version `GLIBCXX_3.4.21' not found”
  • 解决
    1. 安装高版本 libstdc++:dnf install -y libstdc++-devel
    2. 建立软链接(临时适配):

ln -s /usr/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6

4. 备份失败:麒麟系统磁盘挂载权限
  • 现象:备份时提示 “无法写入备份集目录”
  • 解决
    1. 检查备份目录挂载属性:mount | grep /home/dmuser/dmbackup,确保无 “ro” 只读属性
    2. 重新挂载为可写:mount -o remount,rw /dev/sdb1 /home/dmuser/dmbackup(根据实际磁盘调整)

六、国产化环境进阶建议与资源推荐

  1. 官方适配资源
    • 达梦麒麟系统适配手册:达梦技术文档中心
    • 麒麟系统 DM 数据库安装视频教程:麒麟软件官方 B 站账号
  1. 工具推荐(国产化适配)
    • 图形化管理工具:DM Management Studio(麒麟版)
    • 性能监控:DM Performance Monitor + 麒麟系统自带 nmon 监控工具
    • 备份工具:DM Backup Tool + 麒麟系统备份软件(Kylin Backup)
  1. 国产化部署最佳实践
    • 架构选型:DM 主备模式 + 麒麟集群(Kylin Cluster),提升高可用
    • 安全配置:启用 DM 数据库审计功能 + 麒麟系统安全模块(Kylin Security)
    • 数据迁移:使用 DM 数据迁移工具(DTS),支持从 Oracle/MySQL 迁移至 DM(麒麟环境)

(注:文档部分内容可能由 AI 生成)

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

Flatpak 终极指南:打造安全的 Linux 应用沙盒环境

Flatpak 是一个革命性的 Linux 应用分发和沙盒技术框架&#xff0c;它为开发者和用户提供了全新的应用管理体验。通过创新的沙盒机制&#xff0c;Flatpak 确保每个应用程序都在隔离的安全环境中运行&#xff0c;同时支持跨不同Linux发行版的一致部署。无论你是Ubuntu、Fedora还…

作者头像 李华
网站建设 2026/3/27 13:40:24

告别问卷设计内耗:百考通AI如何用智能重构你的调研方法论

调研数据质量不高、问卷信效度存疑、统计分析结果难以支撑研究假设… 这些是许多研究者和数据从业者在进行问卷调查时经常面临的困扰。传统的问卷设计流程既耗时又充满不确定性&#xff0c;而今天&#xff0c;一种全新的解决方案正在改变这一局面。 问卷设计困境&#xff1a;为…

作者头像 李华
网站建设 2026/3/14 15:57:11

8 个AI论文工具,自考毕业论文轻松搞定!

8 个AI论文工具&#xff0c;自考毕业论文轻松搞定&#xff01; 论文写作不再难&#xff0c;AI 工具助你轻松应对 对于自考学生而言&#xff0c;撰写毕业论文是一项既重要又充满挑战的任务。从选题到资料收集&#xff0c;再到撰写和修改&#xff0c;每一个环节都可能成为阻碍前进…

作者头像 李华
网站建设 2026/4/1 19:41:20

日期型可以用bigint?—— 用对了是神器,用错了是坑!

✅ 结论&#xff1a;可以&#xff01;但必须用对方法不是直接存日期&#xff08;如2025-12-17&#xff09;用bigint&#xff0c;而是用Unix时间戳&#xff08;整数&#xff09;表示时间。 &#x1f449; 正确用法&#xff1a;用BIGINT存从1970-01-01 00:00:00 UTC开始的秒数/毫…

作者头像 李华
网站建设 2026/3/21 9:31:33

NTT 成功开发基于氮化铝的毫米波晶体管实现“全球首款”高频运行

⚡ NTT 突破氮化铝晶体管瓶颈&#xff1a;攻克高阻难题&#xff0c;实现高频放大日本电信电话株式会社&#xff08;NTT&#xff09;通过设计一种新型的低电阻结构&#xff0c;成功解决了高铝组分氮化铝&#xff08;AlN&#xff09;材料中接触电阻高和沟道电阻高的难题。这一成果…

作者头像 李华