一、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. 图形化安装步骤(兼容麒麟桌面环境)
- 上传 DM 数据库安装包(如 dm8_20230808_x86_kylin10_64.iso)至/opt目录
- 挂载镜像(麒麟系统支持直接挂载 ISO 文件)
mount /opt/dm8_20230808_x86_kylin10_64.iso /mnt # 若挂载失败,执行:mount -o loop /opt/xxx.iso /mnt |
- 切换至 dmuser 用户,启动安装向导(麒麟系统需确保图形环境正常)
su - dmuser /mnt/DMInstall.bin |
- 安装向导配置(国产化适配要点):
- 选择 “典型安装”,安装路径设为/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. 异机还原步骤(麒麟系统间数据迁移)
- 复制备份集至目标麒麟服务器(建议使用 scp 命令,保持权限一致)
scp -r /home/dmuser/dmbackup/BACKUP_20240520 dmuser@目标IP:/home/dmuser/dmbackup/ |
- 目标服务器执行还原(麒麟系统 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 后无响应,或提示 “无法启动图形界面”
- 解决:
- 安装麒麟系统图形依赖:dnf install -y xorg-x11-server-utils gtk2
- 若仍无法启动,使用命令行安装模式:
su - dmuser /mnt/DMInstall.bin -i console |
2. 服务启动失败:麒麟系统权限限制
- 现象:systemctl start DmServiceDMSERVER 提示 “权限被拒绝”
- 排查步骤:
- 检查数据文件目录权限:ls -ld /home/dmuser/dmdata,确保属主为 dmuser
- 关闭麒麟系统防火墙(临时测试):systemctl stop firewalld
- 查看日志定位问题:cat /home/dmuser/dmdbms/log/DmServiceDMSERVER.log
3. 依赖库冲突:麒麟系统自带库版本不兼容
- 现象:启动 dmserver 提示 “libstdc++.so.6: version `GLIBCXX_3.4.21' not found”
- 解决:
- 安装高版本 libstdc++:dnf install -y libstdc++-devel
- 建立软链接(临时适配):
ln -s /usr/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6 |
4. 备份失败:麒麟系统磁盘挂载权限
- 现象:备份时提示 “无法写入备份集目录”
- 解决:
- 检查备份目录挂载属性:mount | grep /home/dmuser/dmbackup,确保无 “ro” 只读属性
- 重新挂载为可写:mount -o remount,rw /dev/sdb1 /home/dmuser/dmbackup(根据实际磁盘调整)
六、国产化环境进阶建议与资源推荐
- 官方适配资源:
- 达梦麒麟系统适配手册:达梦技术文档中心
- 麒麟系统 DM 数据库安装视频教程:麒麟软件官方 B 站账号
- 工具推荐(国产化适配):
- 图形化管理工具:DM Management Studio(麒麟版)
- 性能监控:DM Performance Monitor + 麒麟系统自带 nmon 监控工具
- 备份工具:DM Backup Tool + 麒麟系统备份软件(Kylin Backup)
- 国产化部署最佳实践:
- 架构选型:DM 主备模式 + 麒麟集群(Kylin Cluster),提升高可用
- 安全配置:启用 DM 数据库审计功能 + 麒麟系统安全模块(Kylin Security)
- 数据迁移:使用 DM 数据迁移工具(DTS),支持从 Oracle/MySQL 迁移至 DM(麒麟环境)
(注:文档部分内容可能由 AI 生成)