单机安装问题

本章节主要对达梦单机数据库的单机常见安装问题进行分析和处理,以下提供单机常见安装问题的分析和解决思路用供户参考。除此之外,用户还可前往达梦技术社区参与更多问题讨论。

目录


正文

bin 目录中没有找到 disql 文件?

【问题描述】

在使用 disql 命令时发现数据库安装目录的 bin 目录下没有 disql 文件。

【问题分析】

该问题可能是由于安装数据库是未选择数据库服务组件,只有客户端组件,不包含相关的 DM 命令行工具。

【问题解决】

  • 方法一:从已经安装的相同 DM 数据库版本的服务组件的安装文件下复制 bin 文件夹,覆盖当前安装目录下的 bin 文件夹。
  • 方法二:重新安装数据库,将“数据库服务”组件也写选中,如下图。

选择组件

LD_LIBRARY_PATH 如何设置?

【问题描述】

当在使用 DM 的驱动(如 unixodbc、dci、dpi、php_dm、pdo_dm 等)时可能需要依赖部分 DM 提供的动态链接库文件,用户需要设置系统环境变量 LD_LIBRARY_PATH,将 DM 数据库的执行码路径添加进去。

【问题解决】

以 linux 环境下 DM 数据库默认安装位置 /opt/dmdbms/bin 为例:

  • 方法一:LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/dmdbms/bin,退出当前终端后就失效。
  • 方法二:修改 ~/.bashrc 或 ~/.bash_profile 或系统级别的 /etc/profile,添加 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/dmdbms/bin

修改完需执行 source 命令,例如:修改的是 /etc/profile 文件,改完后需执行 source /etc/profile 才能在当前会话使环境变量生效,或者重新启动一个新的会话,这些环境变量也会生效。

数据文件存放路径在哪里?

【问题分析】

DM 数据库数据文件存放路径是根据项目要求进行存放的,没有特定路径。

【问题解决】

一般情况下,达梦工程师安装部署完成数据库后,会提供相应部署文档,其中包含数据库文件路径信息,如果没有部署文档,请参考以下方法。

  • 方法一:咨询数据库管理和维护人员。
  • 方法二:如果是 Windows 或有图形化界面的 Linux,可以尝试通过“DM 服务查看器”工具,找到 DmService 开头的服务,鼠标右键选择【属性】,在【服务属性中-配置文件路径】项的路径即为数据文件路径。

配置文件路径

注意

如果在“DM 服务查看器”中找不到相应的服务,可能服务没有注册或通过其他方式启动数据库,此时请参考后面方法查找数据文件路径。

  • 方法三:无论 Window 还是 Linux 系统,均可在系统中搜索 MAIN.DBF 文件,以最新的文件为准,该文件所在的目录为数据库文件所在路径。
  • 方法四:Linux 系统,通过执行 ps -ef|grep dmserver 命令查看进程的方式找到相应的路径。

查看进程

  • 方法五:通过查看 v$datafile 数据字典的 path 字段,可以得到数据文件的具体存放路径。
//DM 数据库目录说明

dmdbms 目录:数据库安装目录。
bin 目录:数据库核心文件目录。
data 目录:数据库实例文件存放目录。
doc 目录:数据库手册(安装手册,系统管理员手册,SQL 语言使用手册等)存放目录。
drivers 目录:数据库驱动存放目录。
log 目录:数据库日志文件存放目录。
samples 目录:配置文件样板(dmarch 归档文件,dmmal 通信文件等)存放目录。
tool 目录:数据库工具(管理工具,数据迁移工具,审计与分析工具等)存放目录。
web 目录:web 工具 (DEM) 的连接及配置手册存放目录。
license_en:英文《软件产品授权证书》概述。
license_zh:中文《软件产品授权证书》概述。
release_en:英文 DM 数据库管理系统版本号汇总。
release_zn:中文 DM 数据库管理系统版本号汇总。
uninstall.exe:数据库卸载,双击即可按照提示进行数据库的卸载。

安装目录

无法启动图形化界面时如何安装数据库和初始化实例?

【问题描述】

执行 ./DMInstall.bin 或初始化实例时,启动图形化界面报以下错误:

Exception in thread "main" java.lang.unsatisfiedLinkError: could not load SWT library.
Reasons:no swt…....No such file or directory

无法打开图形化界面时如何安装数据库和初始化实例?

【问题解决】

针对以上报错,存在两种情境,以下提供这两种情境下的解决办法。

情景一:安装 DM 数据库时,针对无法启动图形化的服务器,DM 数据库提供纯文本安装方式。具体安装过程如下:

  • 执行安装文件选择安装语言
[dmdba@RS219 test]$ ./DMInstall.bin -i

安装语言

如果当前操作系统中已存在 DM 数据库,终端会弹出提示,输入选项【y】,将进行下一步的命令行安装,否则退出命令行安装。如下图所示:

存在其他版本达梦数据库

  • 验证 Key 文件

用户可以选择是否输入 Key 文件路径。不输入则进入下一步安装,输入 Key 文件路径,安装程序将显示 Key 文件的详细信息,如果是合法的 Key 文件且在有效期内,用户可以继续安装。如下图所示:

输入 Key 文件路径

  • 输入时区

用户可以选择 DM 的【时区信息】。如下图所示:

设置时区

  • 选择安装类型

命令行安装与图形化安装的选择的【安装类型】一样。如下图所示:

选择安装类型

用户选择安装类型需要手动输入,默认是【典型安装】。

如果用户选择【自定义安装】,将打印全部安装组件信息。用户通过命令行窗口输入要安装的组件序号,选择多个安装组件时需要使用空格进行间隔。输入完需要安装的组件序号后回车,将打印安装选择组件所需要的存储空间大小。

  • 选择安装路径

用户可以输入 DM 数据库的安装路径,不输入则使用默认路径,默认值为 $HOME/dmdbms(如果安装用户为 root,则默认安装目录为 /opt/dmdbms,但不建议使用 root 用户来安装 DM 数据库)。 如下图所示:

选择安装目录

安装程序将打印当前安装路径的可用空间,如果空间不足,用户需重新选择安装路径。如果当前安装路径可用空间足够,用户需进行确认。不确认,则重新选择安装路径,确认,则进入下一步骤。

  • 安装小结

安装程序将打印用户之前输入的部分安装信息。如下图所示:用户对安装信息进行确认。不确认,则退出安装程序,确认,进行 DM 数据库安装。

安装前小结

  • 安装

安装

注意

安装完成后,终端提示“请以 root 用户执行命令”。由于使用非 root 用户进行安装,所以部分安装步骤没有相应的系统权限,需要用户手动执行相关命令,用户可根据提示完成相关操作。

  • root 用户执行 root_installer.sh 脚本,数据库安装即可完成

使用 root 用户,执行命令:/home/dmdba/script/root/root_installer.sh,显示内容如下:

移动 /home/dmdba/bin/dm_svc.conf 到/etc目录
修改服务器权限
创建 DmAPService 服务
创建服务 (DmAPService) 完成
启动 DmAPService 服务

情境二:初始化实例时,针对无法启动图形化的服务器,DM 数据库提供了 dminit 命令行初始化实例。用户在数据库初始化实例时,需设置数据库系统用户的密码,并保证密码强度,以保障数据安全性。具体方法如下:

系统管理员可以利用该工具提供的各种参数,设置数据库存放路径、段页大小、是否对大小写敏感以及是否使用 unicode,创建出满足用户需要的初始数据库。该工具位于数据库安装路径的 bin 目录下,举例如下:

[dmdba@ ~]#  cd /opt/dmdbms/bin
[dmdba@ ~]#  ./dminit path=/opt/dmdbms/data  SYSDBA_PWD=****** SYSAUDITOR_PWD=******
注意

dminit 工具的详细介绍及使用办法请详细参考《 DM8_dminit 使用手册》,该手册位于数据库安装目录下的 doc 文件夹中。

Windows 数据库卸载不完整,服务/实例名被占用,怎么解决?

【问题解决】

  • 数据库卸载默认不会删除 data 目录,这是为了保护数据,如确定不保留历史数据,可由管理员手动删除。
  • 数据库自带的 DM 服务查看器里里查看是否有 DmService+ 服务名 的服务注册。
  • 管理员开启 CMD 命令行界面,然后执行:sc delete "服务名"。例如:sc delete DmServiceDMSERVER

数据库的页大小如何修改,修改前需确定哪些参数?

【问题分析】

数据库的页大小只能通过重新初始化实例来进行修改,在初始化数据库前需要事先确定好的参数有:页大小、簇大小、字符集、字符串大小写敏感和"VARCHAR 类型以字符为单位"等不可修改的参数,这些参数配置一定要在安装前确认好,以免安装后不能修改造成不必要的麻烦。

【问题解决】

不可修改的参数值只能通过重新初始化来进行修改。

设置簇大小和页大小的影响是什么?

【问题分析】

  • 数据页(也称数据块)是 DM 数据库中最小的数据存储单元。页的大小对应物理存储空间上特定数量的存储字节,在 DM 数据库中,页大小可以为 4 KB、8 KB、16 KB 或者 32 KB,用户在创建数据库时可以指定,默认大小为 8 KB,一旦创建好了数据库,则在该库的整个生命周期内,页大小都不能够改变。
  • 簇是数据页的上级逻辑单元,由同一个数据文件中 16 个或 32 个连续的数据页组成。在 DM 数据库中,簇的大小由用户在创建数据库时指定,默认大小为 16。

假定某个数据文件大小为 32 MB,页大小为 8 KB,则共有 32 MB/8 KB/16=256 个簇,每个簇的大小为 8 KB*16=128 KB。和数据页的大小一样,一旦创建好数据库,此后该数据库的簇的大小就不能够改变。

安装时提示写入权限不足,如何解决?

【问题解决】

提示写入权限不足,一般是操作系统层面的权限不足的问题。可通过以下步骤解决:

  1. 确定使用的哪个用户进行安装 DM 数据库,一般是 dmdba 用户。
  2. 查看相应的安装目录下是否有对应用户的权限,dmdba 用户对应的目录一般为 /home/dmdba/dmdbms。
  3. 将对应目录的权限使用 chown 命令授权给相应的用户和组。

Openation not Permitted 错误如何解决?

【问题描述】

CentOS7 的 Docker 容器里面以静默方式安装 DM 数据库最后一步出现报错:"Openation not Permitted"。

【问题解决】

在 Docker 中添加 privileged 启动参数即可解决。

数据库安装前,是否需要预装 JDK?

【问题解决】

不需要另外安装 JDK,DM 数据库自带 JDK 环境,软件环境安装要求如下:

软件环境 要求
Windows 简体中文服务器版 sp2 以上
Linux glibc2.3 以上,内核 2.6,已安装 KDE/GNOME 桌面环境,预装 UnixODBC 组件
网络协议 TCP/IP
系统盘 1 GB 以上剩余空间

DM 服务脚本如何进行注册?

【问题解决】

单机数据库注册服务方法如下:

  1. 使用 root 用户进入脚本注册目录 "/home/dmdba/dmdbms/script/root" :
cd /home/dmdba/dmdbms/script/root
  1. 使用 root 用户注册服务名为 DmServiceDMSERVER 的实例服务:
./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DMSERVER

主备集群注册服务一般方法如下:

主备集群一般服务以 mount 的方式注册实例服务,如下注册实例服务、守护进程服务。

  1. 使用 root 用户进入脚本注册目录 "/home/dmdba/dmdbms/script/root" :
cd /home/dmdba/dmdbms/script/root
  1. 使用 root 用户注册实例服务:

注册服务名为 DmService_DM_DW01 的实例服务。

./dm_service_installer.sh -t dmserver -p _DM_DW01 -dm_ini /opt/dmdbms/data/DM_DW01/DAMENG/dm.ini -m mount

3.使用 root 用户注册守护进程服务:

注册服务名为 DmWatcherService_DM_DW01 的守护进程服务。

./dm_service_installer.sh -t dmwatcher -p _DM_DW01 -watcher_ini /opt/dmdbms/data/DM_DW01/DAMENG/dmwatcher.ini

更多详细脚本使用方法请参考达梦数据库安装目录 doc 目录下的《DM8_Linux 服务脚本使用手册》。

如何正确的卸载 DM 数据库?

【问题解决】

以下介绍 Windows 环境和 Linux 环境下(命令行方式/图形化方式)卸载 DM 数据库的方法。

Windows 环境下:

  1. 停止数据库服务。

打开 DM 服务查看器,如下图所示:

服务查看器

点击 DM 数据库实例服务--> 点击【停止】,如下图所示:

停止服务

  1. 删除数据库实例或删除数据库服务

打开数据库配置助手,如下图所示:

配置助手

选择【删除数据库实例】或【删除数据库服务】,如下图所示:

配置助手

选择需要删除的数据库实例点击【下一步】,如下图所示:

选择删除数据库实例

点击【完成】即可删除数据库实例,如下图所示:

删除数据库实例

  1. 卸载数据库

在数据库的安装目录 dmdbms 文件夹中点击【uninstall.exe】即可完成卸载,如下图所示:

安装目录卸载程序

Linux 环境命令行方式卸载 DM 数据库

  1. 停止数据库服务

查看数据库服务,执行如下命令查看数据库服务是否正在运行。

ps -ef|grep dmserver

如下图所示数据库服务正在运行:

image.png

使用 dmdba 用户进入数据库安装目录下的 bin 目录执行如下命令停止数据库服务(主备请参考主备的停止服务的方法):

cd /home/dmdba/dmdbms/bin/
./DmServiceDMSERVER stop

如下图所示:

image.png

  1. 删除数据库实例

进入数据库安装目录 /data/dmdata 目录执行如下命令删除数据库实例(生产环境请慎用 rm -rf 以免误删除

rm  –r  DAMENG 

如下图所示:

image.png

  1. 卸载数据库

进入数据库的安装目录下执行如下命令卸载数据库:

./uninstall.sh

如下图所示:

image.png

Linux 环境使用图形化方式卸载数据库

  1. 停止数据库服务

进入数据库安装目录下的 tool 目录执行如下命令打开 DM 服务查看器:

./dmservice.sh

打开 DM 服务查看器后,右键【DM 数据库实例服务】选择【停止】,如下图所示:

停止数据库实例服务

  1. 删除数据库实例或数据库服务

进入数据库安装目录下的 tool 目录执行如下命令打开 DM 数据库配置助手:

./dbca.sh

打开 DM 数据库配置助手后,删除数据库实例或删除数据库服务,如下图所示:

打开配置助手

选择需要删除的数据库实例,如下图所示:

选择需要删除的数据库实例

点击【完成】即可删除数据库实例,如下图所示:

完成删除操作

  1. 卸载数据库

进入数据库的安装目录下执行如下命令卸载数据库:

./uninstall.sh

如下图所示:

image.png

安装 DM 数据库时,双击 setup.exe 没有反应

【问题分析】

若打开 cmd 没有反应,管理员身份运行也不行,则较大可能是进程卡住。

【问题解决】

可通过打开服务管理器,结束安装进程,再用管理员运行 setup.exe。

数据库安装完成后如何初始化实例

【问题解决】

初始化实例可通过命令行方式或者图形化方式完成,具体可参考数据库规范化部署-单机但安装部署文档中初始化实例章节。

安装数据库报错:Os_file_create_normal error! Desc:permission denied,code:13

【问题分析】

该报错一般为对应目录 dmdba 没有读写权限,需要要用 root 用户来操作。

【问题解决】
建议利用 chown 命令授予安装目录 dmdba 权限,不使用 root 权限安装数据库。

linux 下安装数据库,提示没有写入权限

【问题描述】

请选择安装目录 [/OPT/DMDBMS]: /HOME/DM 没有写入权限!

【问题分析】

该报错一般为对应目录 dmdba 没有写入权限,通过 dmdba 用户安装数据库时,dmdba 用户需要有安装目录的读写权限。

【问题解决】

1.检查安装目录用户及组是否为 dmdba:dinstall,如果不是需要修改用户及属组,修改用户及属组可参考如下命令:

chown dmdba.dinstall /HOME/DM -R

2.检查 dmdba 用户是否有安装目录的读写权限,如果没有需要授予 755 权限,授予 dmdba 用户安装目录 755 权限可参考如下命令:

chmod 755 /HOME/DM -R
  • 如果用户权限都已获取,先判断数据库版本是否匹配,需要根据操作系统和 CPU 的类型去选择相应的安装包。

数据库规范化安装部署步骤详见数据库规范化部署

安装或者初始化过程中卡死

【问题描述】

Windows 客户端使用 dbca 初始化实例时界面卡住不动。

【问题分析】

该问题需要检查数据库日志文件,具体查看失败原因具体处理。或者可能是由于 Windows 机器上安装的拦截软件误将数据库初始化拦截,导致数据库初始化失败。

【问题解决】

  1. 参考日志报错来具体处理,例如出现报错: “out of memory”,则可能是初始化 buffer 过大导致启动实例时内存不足启动失败。可以通过修改 dm.ini 文件,缩小 buffer 值再重启来解决。
  2. 可能被 360 安全卫士之类软件阻截了,关闭相关软件重新初始化。

数据库安装时报错:无法执行二进制文件

【问题描述】

安装的时候报错:“无法执行二进制文件 I Error message: cannot execute binary file:exe format error"。

【问题分析】

该问题可能是由于数据库版本与操作系统版本不匹配导致。

【问题解决】

请重新下载或申请与操作系统版本相匹配的安装包重新安装。

GLIBC_xxxx not found

【问题描述】

数据库安装或者在实例初始化时报错:"version 'GLIBC_xxxx' not found"。

【问题分析】

该问题原因为数据库安装包 glibc 版本与服务器 glibc 版本不匹配问题导致。

【问题解决】

推荐以下两种方式解决 :

方法一:重新申请与服务器 glibc 版本对应的数据库安装包;

方法二:服务器更换与数据库 glibc 版本对应的 glibc。

Linux 上无法启动管理工具

【问题解决】

  1. 保证安装时已安装图形化界面。
  2. 使用 root 用户执行命令 xhost + 登录 dmdba 用户执行命令 export DISPLAY=:0.0 再执行命令 xhost +
  3. 使用 dmdba 用户进入数据库安装目录下的 tool 目录执行如下命令打开管理工具

如何修改 open files 限制

【问题解决】

请参考运维指南-数据库规范化部署-安装前准备工作 2.12 节

注意

需要注意,Linux 操作系统中同时存在多个不同的文件对 limits 做配置。在配置完成后需要确认配置是否正常生效,若未生效建议可以在 .bash_profile 文件中加入 ulimit -n。 在Linux最小版本系统环境下,设置系统文件打开数量大小限制,修改/etc/security/limit.conf 重启无法生效,dmdba安装用户执行 ulimit -n 65536 ,报错“无法修改limit值:不允许的操作”,原因是最高权限root用户的最大限制数据都小于安装用户dmdba设置数据导致,可修改root用户最大限制数后再修改dmdba用户最大限制。

初始化库时报错 license violation detected,or product has expired

【问题分析】

license 过期或者用了不对应版本的授权。

【问题解决】

请联系给予授权的达梦商务解决。(电话:400 991 6599 转 1 号商务线)

中标麒麟服务器,达梦数据库的桌面快捷方式

【问题解决】

DM 新版本 redhat 系列没有桌面快捷方式

其他操作系统版本:

  • root 用户安装:

用 root 去安装,applications 中快捷方式安装时就会添加进去,root 桌面的快捷键也会添加进去,但是 dmdba 桌面上并不会有桌面快捷方式。这就需要我们手动创建,我们快捷方式的创建脚本都在 dmdbms/script/下,创建桌面快捷方式只需在 dmdbms 下执行 ./makdedesktopdir.sh 即可成功创建。

  • dmdba 用户安装:

dmdba 用户安装,dmdba 用户桌面会有快捷方式,但是 application 和 root 桌面都不会有快捷方式。所以需要去 dmdbms/script 下手动执行脚本创建。root 桌面创建快键方式同步骤 1。而 applications 中快捷方式需要 root 用户执行 dmdbms/script/ 下脚本 ./gnomemenu.sh insert。

数据库安装报错:Error occurred during initiazation of VM&Unable to load native library

【问题描述】

数据库安装的时候报错:

  1. Error occurred during initiazation of VM
  2. Unable to load native library

【问题解决】

可通过尝试创建软连接来解决该问题。

ln -s /usr/lib64/libnsl.so.2  /usr/lib64/libnsl.so.1

dminit 初始化数据库时报错:start parameter error

【问题解决】

  1. 请参考《DM8_dminit 使用手册》语法规则,手册位于数据库安装目录下的 doc 目录中。
  2. dminit 的参数中,等号两边不能有空格。

文件不存在,请检查此 KEY 的路径是否正确

【问题描述】

在安装数据库时报错:"文件不存在,请检查此 KEY 的路径是否正确"。

【问题解决】

  1. 如果获取的授权文件格式为 dmxxxxxxx.key,则在安装的时候需要把 KEY 文件名称修改为 dm.key 并且通过以下命令修改属主和属组。
chown dmdba:dinstall dm.key
  1. 如果是从达梦在线服务平台下载试用数据库,可以在输入 KEY 文件路径时,选择 NO,继续进行安装。

安装报错:Exception in thread "main" org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]

【问题描述】

调用图形化界面安装数据库时报如下错误:

解压安装程序..........
No protocol specified
Exception in thread "main" org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
    at org.eclipse.swt.SWT.error(SWT.java:4109)
    at org.eclipse.swt.widgets.Display.createDisplay(Display.java:902)
    at org.eclipse.swt.widgets.Display.create(Display.java:890)
    at org.eclipse.swt.graphics.Device.<init>(Device.java:154)
    at org.eclipse.swt.widgets.Display.<init>(Display.java:499)
    at org.eclipse.swt.widgets.Display.<init>(Display.java:490)
    at org.eclipse.swt.widgets.Display.getDefault(Display.java:1693)
    at org.eclipse.swt.widgets.Shell.<init>(Shell.java:260)
    at org.eclipse.swt.widgets.Shell.<init>(Shell.java:358)
    at org.eclipse.jface.window.Window.createShell(Window.java:487)
    at org.eclipse.jface.window.Window.create(Window.java:430)
    at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1089)
    at org.eclipse.jface.window.Window.open(Window.java:790)
    at com.dameng.install.ui.MainApplication.run(Unknown Source)
    at com.dameng.install.ui.MainApplication.main(Unknown Source)

【问题分析】

当前操作系统的登录用户应该无图形界面权限,如果在当前会话中启用图形界面需要将图形界面权限放开。

【问题解决】

  1. 确认当前操作系统环境安装有图形界面,切换到 root 用户后在命令行中输入 xhost +,可以使得 dmdba 可以调用图形界面进行安装。
  2. 可尝试使用 ./DMinstall -i 命令,通过字符界面进行安装。

安装报错:java:Exec format error

【问题描述】

安装数据库时报如下错误:

安装报错信息

【问题分析】

该问题较大可能是由于数据库版本和操作系统版本不匹配导致,建议更换与操作系统版本相匹配的数据库安装包进行安装。

【问题解决】

  1. 检查安装的达梦数据库软件包是否和操作系统版本匹配。可以在社区内咨询,查询不同系统应该选择什么开发试用软件包。
  2. 检查安装的达梦数据库软件包是否和操作系统 CPU 型号相匹配。
  3. 换与操作系统版本相匹配的数据库安装包进行安装。

安装报错:初始化图形界面失败

【问题解决】

1.如果当前监视器窗口不支持图形界面,可通过 ./DMInstall.bin -i 进行命令行安装。

2.使用 root 用户执行命令 xhost + 登录 dmdba 用户执行命令 export DISPLAY=:0.0 再执行命令 xhost +,再次尝试打开图形化界面安装。

3、如果仍然无法打开图形化界面安装可以参考 DM 数据库无法打开图形化界面的解决方法

安装报错:./DMInstall.bin: /tmp/DMInstall/source/jdk/bin/java: not found

【问题描述】
liunx 中安装数据库报错误:"./DMInstall.bin: /tmp/DMInstall/source/jdk/bin/java: not found" 。

安装报错信息

【问题分析】

该问题可能是由于数据库版本与操作系统版本不匹配或者安装包损坏导致。

【问题解决】

  1. 检查数据库安装包与操作系统版本是否匹配,如果不匹配,需要重新下载或申请对应版本的安装包重新安装。
  2. 如果数据库安装包与操作系统版本匹配,则可能是由于移动安装包时造成安装包损坏,重新下载或用压缩包压缩方式上传。

如何理解 DM 中的大小写敏感

【问题解决】

请详细参考:如何理解 DM 中的大小写敏感

达梦数据库存储汉字的相关说明

【问题解决】

请详细参考:达梦数据库汉字存储知多少

使用 dminit 初始化数据库后,mount 启动服务显示未初始化数据库

【问题描述】

使用 dminit 初始化数据库后,通过命令 ./dmserver /dm8/data/DAMENG/dm.ini mount 启动显示未初始化数据库。

【问题解决】

达梦数据库初始化实例以后,第一次需要正常启动一次数据库服务。即先执行:

./dmserver /dm8/data/DAMENG/dm.ini

等到显示 “SYSTEM IS READY ”,再输入 exit 命令退出。然后再通过 mount 方式启动:

./dmserver /dm8/data/DAMENG/dm.ini mount
注意

mount 状态启动的数据库,无法进行相关数据操作。

安装报错 Exception in thread "Thread-0"

【问题描述】

Exception in thread "Thread-0" java.lang.NoClassDefFoundError: com/dameng/tool/util/script/LinuxServiceShellUtil
 at com.dameng.install.cli.MainApplication$2.run(MainApplication.java:358)
Caused by: java.lang.ClassNotFoundException: com.dameng.tool.util.script.LinuxServiceShellUtil
 at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
 at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
 ... 1 more

【问题解决】

  1. 查看 CPU 型号和操作系统版本是否和申请使用的达梦版本一致,如果不一致请重新下载或申请对应版本的安装包重新安装。
  2. 下载不完整,核对一下官网提供的 MD5 值或者 SHA256 值。如果核对不一致,请重新下载安装包。

Linux 安装数据库完成后,没有出现“请以 root 系统用户执行命令”,安装结束后无法连接数据库

【问题分析】

为了减少对操作系统的影响,用户不应该以 root 系统用户来安装和运行 DM。使用非 root 系统用户进行安装,部分安装步骤没有相应的系统权限,需要用户手动执行相关命令,若使用 root 用户安装,则系统会直接执行 mv 命令,因此就不会有“请以 root 系统用户执行命令”的提示。

安装结束后,还需要初始化数据库并注册相关服务才能正式运行达梦数据库,具体可参考安装目录的 doc 目录下《DM8_dminit 使用手册》和《DM8_Linux 服务脚本使用手册》。

达梦数据库的安装部署手册在哪里?

【问题解决】

数据库安装部署可参考达梦在线服务平台-运维指南-数据库规范化部署,数据库安装手册位于数据库安装目录的 doc 目录下。

数据库安装完后,如何用命令行的方式初始化实例

【问题解决】

  1. 可参考达梦在线服务平台-运维指南-数据库规范化部署-单机安装部署 1.3.2 节中命令行方式初始化数据库。
  2. 可参考:命令行配置实例

dminit 详细使用方法及参数说明可参考安装路径 doc 目录下的《dminit 使用手册》。

在 linux 系统下通过挂载 ISO 安装提示为只读文件无法执行和授予执行权限

【问题解决】

此时,可以把安装文件复制到可以执行的本地盘目录中,然后再执行数据库的安装操作。

图形化初始化数据库报错

【问题描述】

通过图形化初始化数据库时报错:"could not initialize class com.dameng.console.backup.drmandll"。

【问题解决】

  1. 可能是数据库软件和操作系统的版本不匹配造成的,请查看 CPU 型号和操作系统版本是否和申请使用的达梦版本一致,如果不一致请重新下载或申请对应版本的安装包重新安装。
  2. 尝试用命令行的方式来初始化数据库。

打开管理工具报错:Product com.dameng.manager.product could not be found

【问题描述】

打开管理工具时报错,日志文件出现以下错误信息:

日志报错信息

【问题解决】

如果对安装程序和客户端运行的 JAVA 环境无特殊需求,可忽略设置 JAVA 环境。达梦的安装软件自带有一个 JDK 环境,不建议手动指定 JDK 环境。

使用命令行安装后,执行 dbca.sh 报错

【问题描述】

使用 ./DMInstall.bin -i 安装数据库完成后,执行 ./dbca.sh 报错。

【问题解决】

1.使用 root 用户执行命令 xhost + 登录 dmdba 用户执行命令 export DISPLAY=:0.0 再执行命令 xhost +,再次尝试打开 dbca 工具。

2.如果仍然无法打开图形化界面进行数据库初始化,建议使用 dminit 命令行的方式进行实例初始化,使用命令行方式初始化实例可参考达梦在线服务平台-运维指南-数据库规范化部署-单机安装部署 1.3.2 节

图形化安装报错:A fatal error has been detected by the Java Runtime Environment

【问题描述】

打开图形化工具进行安装数据库时报错信息如下:

Error occurred during initialization of VM
Could not reserve enough space for the card marking array

本机的 CPU 占有率和硬盘空间都很充实,不存在内存遗出或者空间不够的情况.后来使用了命令行安装的时当设置时区的时候,也出现了报错,信息如下:

A fatal error has been detected by the Java Runtime Environment:
.....
JRE version : 6.0
Java VM: Open JDK 64-Bit ...

本机安装的是龙芯的 Open Jdk 64-bit 版本是 1.8。

【问题解决】

达梦的安装软件自带有一个 JDK 环境,不建议手动指定 JDK 环境。

初始化报错:create dir '/data/dmdata/DAMENG'failed

【问题分析】

出现该报错一般是由于初始化实例时指定的路径错误或不存在导致或者是由于该路径没有 dmdba 用户的读写权限导致。

【问题解决】

  1. 检查路径是否输入正确,等号前后不能有空格。
  2. 检查 dmdba 用户是否有对应路径的读写权限,如果没有可参考如下命令授予权限:
cd /data
chown -R dmdba:dinstall dmdata
chmod -R 755 dmdata
  1. 用 ls -ll 命令查看目录权限是否修改完成。
  2. 重新初始化实例。

达梦数据库初始化报错: cpu type mismatch

【问题描述】

达梦数据库初始化报错: cpu type mismatch,this system is authorized on feiteng, but current system is based on x86

【问题分析】

此报错是由于数据库安装包和操作系统版本不匹配导致。

【问题解决】

请重新下载或申请对应版本的安装包重新安装。

注册达梦服务提示 -i 参数无效

【问题分析】

-i 参数是 DM7 的注册服务参数,如果用的是 DM8 数据库,则用 -dm_ini 参数。

例如:注册服务名为 DmServiceDMSERVER 的实例服务:

./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DMSERVER

达梦数据库是否需要设置 hugepage

【问题分析】

512 GB 及以下内存,建议关闭 hugepage。

假若有 1TB 的内存,可以考虑开启 hugepage,此时配置 hugepage 的大小应该略大于 dm.ini 中 buffer 的量,比如 120%。

Linux 系统,点击达梦可视化/管理工具的快捷键,没有任何反应

【问题解决】

可能是权限问题,用 root 用户赋予安装用户对于安装目录可执行权限。

例如:

chown -R dmdba:dinstall /opt/dm/
chmod -R 775 /opt/dm/

length_in_char 和 CHARSET 组合使用效果详解

【问题分析】

LENGTH_IN_CHAR:VARCHAR 类型对象的长度是否以字符为单位。取值:1、Y 表示是,0、N 表示否。默认值为 0。可选参数。1 或 Y:是,所有 VARCHAR 类型对象的长度以字符为单位。这种情况下,定义长度并非真正按照字符长度调整,而是将存储长度值按照理论字符长度进行放大。所以会出现实际可插入字符数超过定义长度的情况,这种情况也是允许的。同时,存储的字节长度 8188 上限仍然不变,也就是说,即使定义列长度为 8188 字符,其实际能插入的字符串占用总字节长度仍然不能超过 8188。

CHARSET/UNICODE_FLAG:字符集选项。取值:0 代表 GB18030,1 代表 UTF-8,2 代表韩文字符集 EUC-KR。默认为 0。

LENGTH_IN_CHAR 与 CHARSET/UNICODE_FLAG 参数配合时,有多种搭配结果。

以不同的字符编码的 varchar(10) 为例:

配置 字段长度 英文存储个数 中文存储个数 实际字节数 备注
GB18030, LENGTH_IN_CHAR=0 VARCHAR(10) 10 5 10 中文占 2 字节
GB18030, LENGTH_IN_CHAR=1 VARCHAR(10) 20 10 20 中文站 2 字节,以字符为单位,自动扩充为双倍字节数
UTF-8, LENGTH_IN_CHAR=0 VARCHAR(10) 10 3.3 10 中文占 3 字节
UTF-8, LENGTH_IN_CHAR=1 VARCHAR(10) 40 13.3 40 中文站 3 字节,以字符为单位,自动扩充为 4 倍字节数

以下以一实例,进行详细介绍:

  1. 当参数 UNICODE_FLAG=1、LENGTH_IN_CHAR=0 时。一个汉字占用三个字节,一个英文占用一个字节。例如:列定义为 varchar(3),那么只能存入 1 个汉字或者 3 个英文字母。如下图:

image.png

  1. 当参数 UNICODE_FLAG=1、LENGTH_IN_CHAR=1 时,一个汉字占三个字节,一个英文字母占一个字节,一个字符四个字节(即一个 varchar 单位占四个字节),可以存四个英文字母。例如:列定义为 varchar(1),那么最多只能存入一个汉字或者 4 个英文字母。如下图:

image.png

  1. 当参数 UNICODE_FLAG=0、LENGTH_IN_CHAR=1 时,一个汉字占两个字节一个字符,一个英文字母占一个字节,一个字符可以存一个汉字或者两个英文字母。例如:列定义为 varchar(3),那么最多只能存入三个汉字或者 6 个英文字母。如下图:

image.png

  1. 当参数 UNICODE_FLAG=0、LENGTH_IN_CHAR=0 时,一个汉字占两个字节,一个英文字符占一个字节。一个汉字占用两个字节。例如:列定义为 varchar(3),那么最多存入一个汉字或者 3 个英文字母。如下图:

image.png

初始化参数 BLANK_PAD_MODE 的具体含义是什么?

【问题分析】

BLANK_PAD_MODE 主要用于 Oracle 数据的兼容,达梦默认设置 BLANK_PAD_MODE=0,即在做数据对比时,默认会截断字符结尾的空格,而 Oracle 默认是会识别到字符结尾的空格。
设置如下场景验证:

1. 在BLANK_PAD_MODE=0时
SQL> create table student(id int, name varchar(20));
SQL> insert into student values (1,'blank ');
SQL> commit;
SQL> insert into student values (1,'blank');
SQL> commit;
SQL> create unique index idx_test_blank on student(name);
create unique index idx_test_blank on student(name);
[-6612]:违反唯一性约束.
已用时间: 4.925(毫秒). 执行号:0.

2. 在BLANK_PAD_MODE=1时,同样的表和数据
登录使用时间 : 4.018(ms)
disql V8
SQL> create unique index idx_test_blank on student(name);
操作已执行
已用时间: 5.721(毫秒). 执行号:50700.

执行创建唯一索引会成功。

数据库初始化报错:Floating point exception (核心已转储)

【问题解决】

  1. 检查创建数据目录和权限。如果不正确,给予 dmdba 用户组用户和对应权限。
chown -R dmdba:dinstall /dbdata
chmod -R 775 /dbdata
  1. 有些机器初始化报“核心已转储,需要重新初始化”,则按照要求重新初始化一次。
  2. 检查 CPU 型号和操作系统版本是否和申请使用的达梦版本一致,如果不一致请重新下载或申请对应版本的安装包重新安装数据库。

数据库安装报错:OpenJDK 64-Bit Server VM warning:Insufficient space for shared memory

【问题描述】

安装数据库时报错,具体信息如下图:

安装报错信息

【问题解决】

  • 检查存储空间
    DM 完全安装需要最少 1GB 的可用内存,用户需要提前规划好安装目录,预留足够的存储空间。用户在 DM 安装前也应该为数据库实例预留足够的存储空间,规划好数据路径和备份路径。用户可使用以下命令检查存储空间:
df -h /dm8   #查询目录/dm8 可用空间
  • 检查临时文件空间大小。
    DM 安装程序在安装时将产生临时文件,临时文件需要 1GB 的存储空间,临时文件目录默认为 /tmp。如果 /tmp 目录不能保证 1GB 的存储空间,用户可以扩展 /tmp 目录存储空间或者通过设置环境变量 DM_INSTALL_TMPDIR 指定安装程序的临时目录。例如:
[root@localhost /]# mkdir -p /home/tmp1     #新建/home/tmp1 目录为临时文件目录
[root@localhost /]# chown -R dmdba:dinstall /home/tmp1

[dmdba@localhost ~]$ vi .bash_profile
export DM_INSTALL_TMPDIR=/home/tmp1           #配置环境变量

[dmdba@localhost ~]$ source .bash_profile     #环境变量生效

再重新安装数据库即可。

达梦小版本的升级,用什么方案比较好

【问题解决】

达梦小版本升级,建议利用第二台机器作为中转机。
中转机要求与升级前的数据库版本一致,先把待升级的数据库以备份还原(需统一版本号,细小的版本差异都可能导致备份还原失败)或 DTS 等方式同步过去,然后再对待升级库进行升级,最后把中转机中的数据库通过 DTS 工具迁移过去。
该方法较为安全,若数据量大可能耗时较长。

初始化实例时报错:“初始化数据库实例(DMSERVER)失败”

【问题描述】

初始化实例失败,详细报错信息如下:

[ERROR] 初始化数据库实例(DMSERVER)失败。
Cannot run program "D:\dmdbms\bin\dminit.exe" (in directory "D:\dmdbms\bin"): CreateProcess error=2, 系统找不到指定的文件。
java.lang.RuntimeException: 初始化数据库实例(DMSERVER)失败。
Cannot run program "D:\dmdbms\bin\dminit.exe" (in directory "D:\dmdbms\bin"): CreateProcess error=2, 系统找不到指定的文件。
at com.dameng.dbca.dialog.CreateDialog$CreateTask.run(CreateDialog.java:331) ~[com.dameng.dbca_8.0.0.jar:?]
at com.dameng.common.gui.dialog.ProgressDialog$Task.run(ProgressDialog.java:153) ~[com.dameng.common.gui_8.0.0.jar:?]
at com.dameng.dbca.dialog.TaskDialog$4.run(TaskDialog.java:273) ~[com.dameng.dbca_8.0.0.jar:?]

【问题解决】

可以检查数据库安装目录../bin 下没有 exe 可执行程序。注意:若安装的是客户端程序,客户端程序不能初始化数据库实例。安装数据库服务端程序即可。

远程 xshell 连接服务器,tool 工具下打开 dts 报错

【问题描述】

Linux_x86(最小化安装)环境下安装达梦 8,利用 xhsell 远程连接服务器,tool 工具下打开 ./dts 报错:无法打开工具图形界面、无法开启图形回显。如下图所示:

报错信息

报错信息

【问题解决】

按照如下步骤修改 sshd_config 配置文件内容:

vim /etc/ssh/sshd_config  -添加如下内容

X11Forwarding yes
X11UseLocalhost no    #禁止将 X11 转发请求绑定到本地回环地址上
AddressFamily inet    #强制使用 IPv4 通道

systemctl restart sshd.service

修改完成后,再次打开成功。

安装数据库软件报错:/tmp/DMInstall/install/install_zh_UTF.sh:第 140 行:echo:写错误:设备上没有空间

【问题解决】

在数据库软件的安装过程中,会默认在/tmp 目录下生成 DMInstall 子目录,并连续写入文件,若/tmp 空间不足,会导致无法继续写入文件。此时建议修改临时目录到其他路径下。具体方法可参照:数据库安装报错中检查临时文件空间大小部分。

系统盘是固态盘,数据盘是机械盘,如何设置相应的磁盘调度算法?

【问题描述】

若出现以下场景:数据库软件安装在系统盘,系统盘为机械盘,实例目录放置在机械盘,此时应如何设置调度算法?

【问题解决】

数据库软件安装在系统盘,使用 noop 调度算法,实例目录放置在机械盘,使用 deadline 调度算法。
假如 sda 是系统盘,sdb 是机械盘,可通过以下方法进行设置(该方法适用于在麒麟 V10,centso7 和 rh6):

---编辑/etc/udev/rules.d/io_scheduler.rules 文件
vi /etc/udev/rules.d/io_scheduler.rules
ACTION=="add|change",KERNEL=="sda",ATTR{queue/scheduler}="noop"
ACTION=="add|change",KERNEL=="sda",ATTR{queue/scheduler}="deadline"

---使文件修改内容生效,执行如下命令或者重启生效
udevadm trigger --name-match=sda;udevadm trigger --name-match=sdb

数据库安装时报错:no such file or director

【问题解决】

  1. 检查安装包和操作系统版本以及 CPU 架构是否匹配;
  2. 对安装包进行完整性校验;
md5sum XXX.iso
  1. 查看操作系统是否为最小化安装,是否有解压工具 tar,如果没有则需要安装 tar 工具。
yum install tar -y

初始化实例时报错 :“dminit: symbol lookup error: dminit: undefined symbol”

【问题描述】

初始化实例是报错:“dminit: symbol lookup error: dminit: undefined symbol: rlog4_pkg_crc_stand_set”

【问题分析】

初始化实例报错一般两种原因

  1. 安装的数据库与操作系统 CPU 不符。
  2. 本地装有多个 DM,该目录下 dminit 使用的 so 文件不是自身版本。

【问题解决】

  1. 如果数据库版本与当前操作系统 CPU 不符合,则需要更换数据库版本。
  2. 执行 ldd dminit 命令检查依赖的库文件是自身的还是旧库的,命令如下:
ldd /数据库安装目录/bin /dminit

如果是由于多个 DM 数据库版本存在,新安装的数据库依赖的的库文件为旧库的库文件导致无法初始化实例,可以通过修改环境变量,注释掉之前的版本来解决该问题。

##修改环境变量
vim ~/.bash_profile
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/data/dmdbms/bin"
export DM_HOME="/data/dmdbms"
##使环境变量生效
source ~/.bash_profile

使用 disql、dimp、dminit 等工具时均出现报错:“-bash: ./disql: Permission denied”

【问题描述】

/data 为挂载磁盘,在将达梦数据库软件安装到 /data 下后,执行 disql、dimp、dminit、manager 等工具时均出现报错 “-bash: ./disql: Permission denied”,且使用 Tab 键无法进行命令补全。将 dmdbms 目录权限修改为 777 依旧出现报错 “-bash: ./disql: Permission denied”。使用 ldd 查看 disql,出现报错 “ldd: warning: you do not have execution permission for `./disql' not a dynamic executable”。

image.png

image.png

【问题分析】

查看/etc/fstab,发现/data 目录挂载选项包含有 rw,没有执行权限 exec。由于是磁盘挂载选项的配置问题,所以不止是达梦软件,如果未配置执行权限 exec,该挂载目录下所有的可执行程序都无法执行,报错权限不足或缺少某些选项,导致无法进行部分操作。

【问题解决】

将挂载选项修改为 default 或增加执行权限 exec 后,重新挂载磁盘或重启服务器,即可正常启动可执行程序。

image.png

image.png

补充说明:

文件系统为 ext4 时,default 选项包含权限 rw, suid, dev, exec, auto, nouser, async。

ARM+ 统信 UOS20 环境如何关闭 numa 和透明大页

【问题解决】

ARM+ 统信 UOS20 环境关闭 numa 和透明大页步骤如下:

  1. 修改 grub 文件
vi /etc/default/grub

在 GRUB_CMDLINE_LINUX 结尾处添加 “numa=off transparent_hugepage=never”。

  1. 执行以下命令
grub2-mkconfig  -o  /boot/efi/EFI/uos (或者是Uniontech目录,根据具体情况填写文件夹名称)/grub.cfg 
  grub2-mkconfig  -o  /etc/grub2-efi.cfg
  1. 重启操作系统

操作系统重启后即可关闭 ARM+ 统信 UOS20 环境的 numa 和透明大页。

磁盘空间充足,但安装报错:创建安装程序临时目录(/tmp/DMInstall)失败

【问题描述】

安装软件时通过 df -h 命令查看服务器磁盘空间充足,但是安装软件时报错,提示“创建安装程序临时目录(/tmp/DMInstall)失败”。

image.png

image.png

在/目录下创建文件报错“设备上没有空间”。

image.png

【问题分析】

linux 系统 inode 号数量有上限,由于每个文件都必须有一个 inode,因此有可能发生 inode 已经用光,但是硬盘还未存满的情况,这时就无法在硬盘上创建新文件了。通过 df -i 进行查看服务器各个目录下 inode 号占用情况,可以看到/目录下 inode 占用量达到 100%。

image.png

【问题解决】

通过已下命令进行查看各个目录下 inode 占用个数,删除占用过多且无用的大量文件后可正常安装部署。

for i in /var/log/*; do echo $i; find $i |wc -l; done 

image.png

微信扫码
分享文档
扫一扫
联系客服