License 过期要怎么处理
DM 数据库启动后提示 product has expried。“License已经过期”,表明数据库授权已经到期,需要跟达梦相关人员沟通,完成替换授权工作,恢复服务正常启动。
启动时提示找不到 license
首先确认你是否有 license,所谓的 license 就是 DM 数据库的授权文件 dm.key,license 一般是通过销售渠道获取的,要么是申请的临时授权,要么是购买了正版数据库后获得的正式授权。
如果是从官方网站上下载的版本是没有 license 文件的,所以在启动过程中会提示 file dm.key not found, use default license!,这是正常的,不会影响我们正常使用数据库。
如果你已经有了 license 文件,且文件放入了指定目录,启动时还是提示 file dm.key not found, use default license!,那么请检查授权文件的是否有当前启动数据库的用户的读权限。
启动 DM 数据库报错:dmserver startup failed, code=-104[invalid int file]
启动 DM 数据库时,命令中确保 dm.ini 路径正确。
启动 DmAPService 服务失败
Windows 安装 DM 数据库,在安装完成的最后一步报错:启动 DmAPService 服务失败!可以尝试以下方法:
- 报这个错没关系,先点击【确定】完成。启动服务的时候可以手动启动。
- 以管理员方式运行安装程序,同时检查授权 key 文件是否过期、操作系统的时间是否正确。
- 查看日志,详细查看日志目录 (D:\dmdbms\log) 下的相关日志文件,分析日志中的报错信息。
启动时数据库报 open files 连接超出资源限制

该日志写入 dmdbms/log 里面的服务启动日志,可从里面看到是 open files 超出系统限制。有时候按照标准修改了 /etc/security/limits.conf,资源赋值为 65538 也未必够,可以将值修改得更大即可解决。
使用 root 用户进行以下操作:
\#vi /etc/security/limits.conf |
注意
90-nproc.conf文件名可能会随着系统变化而不同。
Linux 环境下启动数据库的命令
Linux 环境下启动 DM 数据库:进入数据库安目录的 bin 目录下执行命令 service DmServiceDMSERVER start/stop/restart(启动/停止/重启)。
假设数据库安装目录在 /opt/dmdbms/bin 目录下,则命令启动方法如下:

假设数据库安装目录在 /opt/dmdbms/ 目录下,也可以通过图形化启动数据库,方法如下:
- 进入 /opt/dmdbms/tool/ 目录执行
./dmservice.sh弹出图形化界面

- 图形化界面使用方式
右键 DM 数据库实例服务点击【启动】即可启动数据库服务。

DM 数据库如何前台启动
进入 DM 安装目录下的 bin 目录,直接打开应用程序 dmserver 就可以启动 DM 数据库。或者先打开 Windows 命令提示符工具,在命令工具中执行命令进入 DM 服务器的目录,再执行 dmserver 的命令启动 DM 数据库。
详细步骤可以参考《DM 系统管理员手册》第八章节。手册位于数据库安装路径 /dmdbms/doc 文件夹下。
命令行方式启动参数方式:dmserver [ini_file_path] [-noconsole] [mount]
说明如下:
- Dmserver 命令行启动参数可指定 dm.ini 文件的路径,非控制台方式启动及指定数据库是否以 Mount 状态启动。
- Dmserver 启动时可不指定任何参数,默认使用当前目录下的 dm.ini 文件,如果当前目录不存在 dm.ini 文件,则无法启动。
- Dmserver 启动时可以指定
-noconsole参数。如果以此方式启动,则无法通过在控制台中输入服务器命令。
如何启动和关闭 DM 数据库
- 通过“DM 服务查看器”来启动数据库服务
Windows 或 Linux 都可以通过“DM 服务查看器”来启动数据库服务(Linux 前提是有图形界面),Linux 如果是图形界面安装的数据库,“DM 服务查看器”也在桌面的“达梦数据库”文件夹看下,如果使用的是命令行安装,需要在图形界面进入到 ../dmdbms/tool/ 执行 ./dmservice.sh 来运行,“DM 服务查看器”如下图所示:

- 通过系统服务启动数据库
Windows 环境:
通过在【运行】输入 services.msc 打开【服务】,在服务中找到 DmService 开头的服务进行启动和关闭数据库,如下图所示:

Linux 环境:
Linux 使用系统服务启动和关闭数据库的方法前提是系统注册了数据库服务。关于注册数据库服务知识请参考《DM_Linux 服务脚本手册》,手册位于数据库安装路径 /dmdbms/doc/special 文件夹下。
DM6 版本启动数据库方法如下:(使用 root 用户)
查看 DM 数据库服务:\# chkconfig --list| grep DmService

启动数据库服务:\# service DmServiceDAMENG start
停止数据库服务:\# service DmServiceDAMENG stop
确认服务是否启动:\# ps -ef | grep dmserver
DM7 版本启动数据库方法如下:(使用 root 用户)
查看 DM 数据库服务:\# systemctl list-unit-files|grep DmService

启动数据库服务:\# systemctl start DmServiceDAMENG.service
停止数据库服务:\# systemctl stop DmServiceDAMENG.service
确认服务是否启动:\# ps -ef | grep dmserver
- 通过命令启动
通过命令启动是数据前台启动的,一般在调试时才使用,是方便观察日志输出。
使用命令启动时务必使用 dmdba 用户启动,避免出现未知问题。
启动格式 dmserver path=dm.ini 的路径如下:
$ cd /home/dmdba/dmdbms/bin/ |
当出现 SYSTEM IS READY 字样时说明数据库已正常启动。

DM 数据库启动报错:[DM64][buf4_default_pool_init]errot in buf4 pool init
内存参数配置过大,剩余内存不足,将数据库 dm.ini 文件里 buffer 和 max_buffer 改小一些。
Docker 配置安装 DM 数据库,并配置自启动
Docker 下和普通 linux 命令行方式安装数据库相同:
./DMInstall.bin -i |
设置开机启动需要注册服务:
./dm_service_installer.sh -t dmserver -i /opt/dmdbms/data/DAMENG/dm.ini -p dmserver |
需要注意关闭 Docker 镜像时,需要先关闭数据库服务,避免出现类似于服务器异常掉电可能导致写缓存丢失,进而导致数据库数据文件出现异常。
数据库开机自启
- 如果是图形化的方式创建实例:图形化工具会自动创建开启自启服务,所以不需要再进行其他操作就可以让实例开机自启。
- 如果是命令行的方式创建实例:需要自己手动注册开机自启的服务,注册自启服务之后,可以实现开机自启。如果没有注册开机自启服务,则不会实现实例的开机自启功能。
启动/重启 DM 数据库失败
有以下可能原因:
- 启动失败:用户可能没有初始化,需要初始化数据库。可以参考如下链接:
http://bbs.dameng.com/forum.php?mod=viewthread&tid=136435&extra=page%3D2
- 参考《DM 系统管理员手册》第7章-启动和关闭数据库,(手册位于数据库安装路径
/dmdbms/doc文件夹下。)看是否启动方式错误。或者可以参考如下链接:
https://www.cndba.cn/dave/article/3566
- 如下信息来自于达梦数据技术工程,希望也有帮助。
- 其他原因造成的启动/重启失败,可查看数据库安装路径下/log 文件夹中的日志,通过分析报错时间段内的错误信息,来定位具体导致的原因。也可以将相关日志发给DM技术服务人员进行分析定位。
建库实例/初始化实例参数设置
数据库实例初始化参数中有 4 个是无法修改的:(请在数据库安装前做好规划)
- 簇大小,簇是每次申请的页数,表存满了以后会一次性连续申请(参数设置)个页的空间。
- 页大小,影响每一行能存储的最大值,和查询效率。
- 字符集,影响所用的字符集后期是否支持对应的生僻字等。
- 大小写敏感,影响 SQL 编写,对小写对象是否需要添加双引号。

参数说明如下:
- 数据文件簇大小
数据文件使用的簇大小,即每次分配新段空间时的连续页数,可以为 16 页或 32 页,推荐使用 16 页。这个参数一般不用修改。
- 页大小 (page_size)
除去 Clob、Blob 等大字段外,数据库中一行记录的所有字段的实际长度的和不能超过页大小的一半。建议页大小设置为 16 KB,防止在后期进行数据迁移和开发过程中出现记录超长的问题;
- 字符集
字符集选项。取值:0 代表 GB18030,1 代表 UTF-8,2 代表韩文字符集 EUC-KR。默认为 0。可选参数。
- 字符串比较大小写敏感 (case_sensitive)
默认为大小写敏感的,根据具体情况进行设置。迁移实施中如果原始库为 Oracle 和 DB2 数据库的话需设置为大小写敏感,若为 SQL Server 和 MySQL 数据库则需设置为大小写不敏感,所以在数据库初始化库的过程中需要根据具体情况来选择。
注意事项在开发环境和测试环境的页大小、字符串大小写敏感等初始化参数一定要保持一致,避免使用 .bak 文件进行还原的时候,因为初始化参数不一致导致无法还原的问题。
DM 数据库启动后提示[License 已经过期]
DM 数据库遇到该报错表明数据库授权已经到期,需要跟 DM 数据库相关人员沟通,完成替换授权工作,恢复服务正常启动。
数据库实例初始化完毕,如何将大小写敏感改为不敏感
DM 数据库在初始化实例时有勾选大小写敏感选项。

初始化完成后是无法修改大小写敏感的,只能删除该实例重新初始化,所以在初始化时一定要确认选择。
DM7 是以 Docker 镜像的方式启动的,通信中产生的告警信息,错误代码是:107 Transport endpoint 是否有影响
不影响,警告对应数据库告警信息如下:

初始化 SSL 环境失败

将 dm.ini 里面的 ENABLE_ENCRYPT 修改为 0 后,重启实例即可解决。
dminit 方式初始化实例出现的问题
请参考如下两种建议:
- 为了减少对操作系统的影响,用户不应该以 root 用户来安装和运行 DM。用户可以在安装之前为 DM 创建一个专用的操作系统用户,例如创建用户 dmdba 和组 dinstall,并将安装目录赋予用户组。
chown -R dmdba:dinstall /xx |
针对 dminit 工具出现的创建文件夹失败问题排查过程如下:
- 排查该文件是否有相对应的用户权限,例如:可能使用 dmdba 用户进行操作,但是 dminit 文件为 root 用户所有,则是权限不够。
- 排查该文件是否有写入权限,例如:可能计划数据文件目录属者为 root 或其他用户,但是使用 dmdba 用户操作 dminit 则会没有写入数据文件的权限。
以下是赋权命令:
chmod 777 /opt/ --赋予 opt 目录所有权限 |
- 初始化命令缺少 PATH 参数导致,修改命令后正常。
执行 ./dminit path=目录 就可以指定目录了,根据项目需要更改其他初始化参数(如页大小,大小写敏感,日志大小等)。
可以执行 ./dminit help 里面有相应的参数,可以进行参考。
远程关闭数据库
首先需要远程连接到目的端的数据库界面。
- 如果数据库实例是前台启动,需要关闭前台启动的界面,即在前台界面输入 exit,待最后出现
DM Database Server shutdown successfully信息并且重新返回命令行模式即表示停止成功。

- 如果数据库实例是后台脚本启动,需要使用命令 cd 到安装数据库的 bin 目录下,执行脚本
./服务名 stop,就可以关闭数据库了,例如,启停脚本为 dmserverd 则数据库停止命令为./dmserverd stop,待出现绿色 OK 则停止成功。
启动 DM 数据库报错 code=-104
启动 DM 数据库报错:dmserver startup failed, code=-104[invalid int file]
【解决方法】:
启动服务保证 dm.ini 路径正确。
比如:./opt/dmdbms/bin/dmserver /opt/dmdbms/data/DMDB/dm.ini–ini 路径指定错误。
Linux 中怎么删除实例
在 windows 上可以用 DBCA 工具删除实例,Linux 无法用 DBCA 工具,删除实例方法如下
首先确认初始化实例的安装目录,直接 rm data 文件夹就行。请删除前确认是否可以删除。




