目录 搜索

← 返回指南索引

达梦数据库在线更换授权(dm.key)· 交互版

DM8 · 在线更换授权(dm.key)· 5 步速成 · 命令可直接复制
点击左侧步骤卡 → 右侧展开命令 依据:DM8 安装手册 §3 / DM8 系统管理员手册 §7 / DM8 附录 V$LICENSE 占位符 <…> 按本机环境替换后执行
← 返回文章版《达梦数据库在线更换授权文件(不停机版)》

操作视频实录

与下方「五步速成」内容一致;先看视频建立整体印象,再按步骤动手
视频为授权更换操作实录。若个别环境加载较慢,属正常现象。

五步速成:先把活干完

点击任一步骤卡片,右侧展开该步的详细命令(均可一键复制);<尖括号> 内为占位符,按你的环境替换。全程在线操作,不重启数据库。
1准备新授权文件
解压授权 ZIP,把 .key 文件重命名为 dm.key
查看命令 →
2定位 bin 目录 · 备份旧授权
自动定位安装目录,mv 备份原 dm.key
查看命令 →
3放置新 dm.key · 设属主权限
上传到 bin 目录,chown + chmod 644
查看命令 →
4重载并校验授权
disql 登录后执行 SP_LOAD_LIC_INFO()
查看命令 →
5验证新授权生效
查 V$LICENSE,核对过期日期 / 授权客户 / 版本类型
查看命令 →
步骤明细 已锁定 · Esc 解除
👆
点击左侧任意步骤卡片
这里展开该步的详细命令与注意事项

命令可一键复制 | Esc 解除锁定 | 打印时全部展开

目标:把厂家交付的授权包解开,得到唯一的 .key 文件并改名为 dm.key(达梦只认这个文件名)。

# 1) 解压授权 ZIP(按实际文件名调整)
unzip -o <授权包.zip> -d /tmp/lic_new

# 2) 将解出的 .key 重命名为 dm.key
cp /tmp/lic_new/<原key文件名>.key /tmp/lic_new/dm.key

# 3) 确认文件在位
ls -l /tmp/lic_new/dm.key
  • 授权文件名解读(现场口径):形如 dm8.4-x86-企业版2025.12.25.zip,依次为 主版本 · CPU 架构 · 产品版本 · 到期日。
  • 没有授权包时,联系达梦销售/客服申请(临时授权或正式授权)。

目标:找到达梦安装目录下的 bin 目录(dm.key 就放在这里),并把旧 dm.key 备份(换失败可秒回退)。

# 1) 自动定位 dmserver 所在的 bin 目录
DM_BIN=$(dirname "$(find / -name dmserver 2>/dev/null | head -1)")
echo "$DM_BIN"

# 2) 进入 bin 目录,备份旧 dm.key(文件名带日期,便于追溯)
cd "$DM_BIN"
mv dm.key dm.key_bak_$(date +%Y%m%d)

# 3) 确认目录状态(此时应无 dm.key,只有备份)
ls -l dm.key*
  • 已知安装路径时可跳过查找,直接 cd <安装目录>/bin(如 /opt/dmdbms/bin、/home/dmdba/dmdbs/bin)。
  • 务必先备份再替换——这是达梦文档中明确强调的动作。

目标:把新 dm.key 上传到 bin 目录,并设置正确的属主与权限,保证数据库进程能读。

# 1) 上传:用 SFTP / WinSCP / MobaXterm 将本地 dm.key 传到 $DM_BIN
#    (上传后继续执行下面命令)

# 2) 属主改为达梦运行用户(常见 dmdba:dinstall,以安装时实际为准)
chown <运行用户>:<安装组> dm.key

# 3) 权限 644(属主可读写,其他只读)
chmod 644 dm.key

# 4) 核对
ls -l dm.key
  • 属主/组名以你的安装为准:不确定时用 ps -ef | grep dmserver 看进程实际运行用户。
  • dm.key 的放置不影响正在运行的服务(文档口径:服务器定时检测并读取 dm.key)。

目标:用 SYSDBA 执行重载存储过程,校验新授权与当前版本/运行环境是否一致。

# 1) 切换到数据库运行用户(或用该用户登录)
su - <运行用户>

# 2) 交互式登录(推荐,密码不落历史)
disql SYSDBA@localhost:5236
#    按提示输入密码后,在 SQL> 提示符下执行:
SP_LOAD_LIC_INFO();

# 3) 退出
exit
  • 执行成功 = 新授权与当前 DM 版本及系统运行环境一致;报错 = 不一致(多为架构/版本类型不匹配,见下方 FAQ)。
  • 端口按实例实际配置调整(默认 5236)。

目标:查询 V$LICENSE 确认新授权已生效,重点核对过期日期、授权客户、产品版本。

-- 基础版:查看全部授权字段
SELECT * FROM V$LICENSE;

-- 友好列名版(重点核对这几项)
SELECT SERIES_NO            AS "序列号",
       EXPIRED_DATE         AS "过期日期",
       AUTHORIZED_CUSTOMER  AS "授权客户",
       PROJECT_NAME         AS "项目名称",
       CONCURRENCY_USER_NUMBER AS "并发连接数",
       DECODE(SERVER_TYPE, 1, '正式版', 2, '测试版', 3, '试用版', '其他') AS "授权类型",
       DECODE(SERVER_SERIES, 'P', '单机版', 'S', '标准版', 'E', '企业版',
                            'A', '安全版', 'T', '可信版', 'X', '定制版', '其他') AS "产品版本"
FROM V$LICENSE;
  • EXPIRED_DATE 已更新为新授权有效期 → 更换成功。
  • 客户端登录验证:授权不影响客户端/驱动连接(现场口径:dm.key 仅服务端需要)。

使用前须知

换 dm.key 本身是分钟级的操作。真正容易出事的是换的时间点、换的对象、换的范围——这三条先确认,再往下动手。

一、什么时候必须换

巡检只需要看一个字段:V$LICENSE.EXPIRED_DATE,它是授权到期日,与当前日期之差就是剩余有效期。
  • 剩余有效期少于 30 天就该排期更换。这是现场经验值,不是手册规定的硬门槛——授权件申请、内部审批、集群逐实例操作都要时间,必须留出余量。
  • 正式授权的 EXPIRED_DATE 常为空(NULL),表示长期有效,不必按天数排期;为空是正常状态,不是故障。
  • 建议把这条查询固化进日常巡检脚本或监控告警,不要靠人记到期日。

二、谁来做 · 需要什么条件

  • 操作系统权限:需要 root 或带 sudo 的账号登录——修改文件属主要 root;文件最终属主必须改成数据库运行用户(常见 dmdba)。
  • 数据库权限:本机或跳板机上有 disql,能以 SYSDBA 连上实例;口令交互式输入,不要写进命令行(会留在 shell 历史与进程列表里)。
  • 传输通道:SSH / SFTP / WinSCP / MobaXterm 任选其一,把新 dm.key 传到服务器 bin 目录。
  • 要不要停库:不需要停库,也不需要重启实例,全过程在线完成。
  • 建议由本单位 DBA 或系统管理员执行;生产环境操作前知会业务方,并留下操作记录。

三、影响范围:哪些业务会受影响

场景业务是否中断需要做到哪一步
单实例数据库不中断重载后客户端连接与应用照常,无需重启实例
主备集群 / 读写分离(多实例)不中断每个数据库实例节点各做一遍,并各自验证一次授权信息
集群中的监视器节点不受影响监视器不加载 dm.key,无需操作
客户端工具与应用驱动不受影响dm.key 只对服务端生效,客户端侧无需任何变更
Windows 版实例不中断路径同样在安装目录的 bin 下,但没有 chown / chmod,改用文件属性设置所有者与读取权限

四、常见的坑:先知道会栽在哪

  • 架构不匹配:授权包要跟服务器 CPU 架构对上,x86 与 ARM 的授权不能互换。重载报错、或到期日没变化,先查这一条。
  • 授权类型与软件版本类型不匹配:安全版配安全版授权、企业版配企业版授权,买错版本类型会被直接拒绝。
  • 属主 / 权限没改对:文件传上去默认属主是上传者,数据库进程读不到就会静默不生效——典型现象是「重载没报错,但到期日没变」。以运行用户身份试读一次最稳妥。
  • 忘了备份旧文件:没有备份就没有回退路径。替换前先把旧 dm.key 改名备份,文件名带日期。
  • 正式授权与试用授权混淆:试用授权有明确到期日,视图里标记为试用版;正式授权通常到期日为空。巡检时把空值当故障去查,会白花时间。

五、如何自证已经换成功

  • 查 V$LICENSE:EXPIRED_DATE 已变成新授权的到期日(正式授权为空属正常),SERIES_NO 与授权包上的序列号一致。
  • 核对 AUTHORIZED_CUSTOMER(授权客户)与 PROJECT_NAME(项目名称),应与授权文件写明的信息一致。
  • 重载动作无报错,才说明新授权与当前版本、运行环境匹配;有报错先别反复重试,按上一节逐条排查。
  • 跑一遍真实业务:客户端能连上、关键操作正常、告警无新增,才算闭环。

详解:授权 Key 是什么 · 怎么看 · 会出什么问题

想弄清原理再看这一节:先说 dm.key 是什么、放在哪,再讲 V$LICENSE 每个字段怎么读

一、授权 Key(dm.key)是什么

文档定义(DM8 安装手册 §3):License 的载体是一个加密文件 dm.key,内容是达梦公司对用户使用 DM 软件的授权。放置在数据库服务器安装目录的 bin 子目录下;服务器启动时和运行中都会做 LICENSE 检查,并定时读取 dm.key。
授权与运行环境绑定:LICENSE 类型须与实际运行环境相匹配(文档口径,DM8 系统管理员手册 §7——例如安全版安装软件须使用安全版 dm.key)。V$LICENSE 中的 CPU_TYPE / OS_TYPE / HARDWARE_ID 字段即授权的运行环境绑定信息;换机器、换架构(x86 ↔ ARM)后原授权不匹配属常见现场现象,需重新申请对应架构的授权。

二、V$LICENSE 关键字段(手册附录口径)

字段含义
LIC_VERSION许可证版本号
SERIES_NOLICENSE 文件序列号
SERVER_SERIES服务器版本类型:P 单机版 / S 标准版 / E 企业版 / A 安全版 / T 可信版 / X 定制版
SERVER_TYPE服务器发布类型:1 正式版 / 2 测试版 / 3 试用版 / 4 其他
SERVER_VER服务器版本号
EXPIRED_DATE有效日期(更换授权后重点核对这一项)
AUTHORIZED_CUSTOMER授权用户名称
AUTHORIZED_USER_NUMBER / CONCURRENCY_USER_NUMBER授权用户数 / 并发连接数
MAX_CPU_NUM最大 CPU 数目
CPU_TYPE / OS_TYPE / HARDWARE_ID授权运行的 CPU 类型 / 操作系统 / 绑定硬件编码
PROJECT_NAME项目名称
完整 17 个字段见达梦手册附录「动态性能视图 → V$LICENSE」。

常见问题(FAQ)

遇到卡壳先在这里找答案 —— 每条都标了依据:依据手册的标「文档」,来自现场经验的标「现场」

没有 dm.key 时,数据库使用默认试用授权。现场常见口径:试用期约为自该安装包生成日期起一年,具体以 V$LICENSE 实查的 EXPIRED_DATE 为准(SERVER_TYPE 显示为 3=试用版)。

不需要。dm.key 仅针对数据库服务端;客户端工具与驱动程序无授权限制。只有数据库服务器进程做 LICENSE 检查。

集群中每一个数据库实例节点(主库、备库)都要执行上述五步;监视器(Monitor)节点无需授权文件,不用操作。建议逐节点执行并各自验证 V$LICENSE。

多为授权文件与运行环境不一致。按文档口径核对:LICENSE 类型须与实际运行环境相匹配。排查动作:

# 核对服务器实际 CPU 架构
hostnamectl | grep Architecture

# 对照 V$LICENSE 中的 CPU_TYPE / OS_TYPE
SELECT CPU_TYPE, OS_TYPE, SERVER_SERIES, SERVER_TYPE FROM V$LICENSE;

不一致(如 x86 的 key 放到 ARM 机器、或版本类型不符)→ 联系达梦申请匹配的授权文件。

运行中的实例通常不会立即中断——到期那一刻,已经在对外服务的实例一般仍可继续读写,业务不会当场掉线。但服务器下一次重启就一定起不来:启动阶段就会做 LICENSE 检查,判定授权已过期即强制退出,实例根本起不动。所以更换授权这件事,不能拖到重启那天再办。

启动时的判定证据在实例日志里(安装目录 log/ 下 dm_实例名_日期.log),出现 FATAL 级授权错误即属此类:

[FATAL] ... License violation detected, or product has expired. System halt!

预防建议:把 V$LICENSE 的 EXPIRED_DATE 纳入巡检,到期前提前更换。

卡在某一步了?

这一步在你环境里报的错,大概率我也碰过 —— 别自己硬扛。
微信扫码添加 JC
微信扫码加我
备注「达梦」即可
卡住了 / 报错对不上

把卡在第几步、报错原文、版本号发我就够判断了 —— 不用发 dm.ini 或任何配置文件。共性问题我会补进这篇,下一个人就不用再踩这个坑。

这篇没覆盖到

现象和上面几步都对不上?把已经试过的命令和结果说一下,我能判断是文档该补一句,还是版本或环境差异。真要贴参数,先把 IP、路径、口令替换掉。

jiang-chuang@qq.com

想让答案别人也能查到?在 Gitee 仓库 提 issue,回复公开可查。