DM8常见问题处理
实例启动问题
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
dmdba soft nofile 65538
dmdba hard nofile 65538
dmdba soft nproc 65538
dmdba hard nproc 65538
#vim /etc/security/limits.d/90-nproc.conf
假设数据库安装目录在 /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 服务查看器”如下图所示:
通过系统服务启动数据库
Linux 环境:
Linux 使用系统服务启动和关闭数据库的方法前提是系统注册了数据库服务。关于注册数据库服务知识请参考《DM_Linux 服务脚本手册》,手册位于数据库安装路径 /dmdbms/doc/special 文件夹下。
启动数据库方法如下:(使用 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/
$ ./dmserver path=/home/dmdba/dmdbms/dmdata/DAMENG/dm.ini
当出现 SYSTEM IS READY 字样时说明数据库已正常启动。
DM 数据库启动报错:[DM64][buf4_default_pool_init]errot in buf4 pool init
内存参数配置过大,剩余内存不足,将数据库 dm.ini 文件里 buffer 和 max_buffer 改小一些。
数据库开机自启
如果是图形化的方式创建实例:图形化工具会自动创建开启自启服务,所以不需要再进行其他操作就可以让实例开机自启。
如果是命令行的方式创建实例:需要自己手动注册开机自启的服务,注册自启服务之后,可以实现开机自启。如果没有注册开机自启服务,则不会实现实例的开机自启功能。
启动/重启 DM 数据库失败
有以下可能原因:
启动失败:用户可能没有初始化,需要初始化数据库。可以参考达梦数据库安装及初始化
参考《DM 系统管理员手册》第7章-启动和关闭数据库,(手册位于数据库安装路径 /dmdbms/doc 文件夹下。)看是否启动方式错误。或者可以参考 Linux 平台达梦数据库启动与关闭
其他原因造成的启动/重启失败,可查看数据库安装路径下/log 文件夹中的日志,通过分析报错时间段内的错误信息,来定位具体导致的原因。也可以将相关日志发给DM技术服务人员进行分析定位。
建库实例/初始化实例参数设置
数据库实例初始化参数中有 4 个是无法修改的:(请在数据库安装前做好规划)
1.簇大小,簇是每次申请的页数,表存满了以后会一次性连续申请(参数设置)个页的空间。
2.页大小,影响每一行能存储的最大值,和查询效率。
3.字符集,影响所用的字符集后期是否支持对应的生僻字等。
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 目录所有权限
chmod 777 /opt/ -R --赋予 opt 目录以及其子目录所有权限
chown dmdba:dinstall /opt/ -R – 更改 dmdbms 目录以及其子目录用户和组为 dmdba:dinstall
初始化命令缺少 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 文件夹就行。请删除前确认是否可以删除。
启动数据库提示 system information invalid
system 表空间损坏,需要用备份来进行还原处理。
linux 系统下达梦数据库如何设置为开机自启动
方法一(推荐):
cd /opt/dmdbms/script/root
./dm_service_installer.sh -t dmserver -p DMSERVER -i /dameng/data/DBTEST_DW/dm.ini
检查服务是否开机自启,服务名 DmServiceDMSERVER ,不同操作系统有不同检查方法。请根据当前操作系统自行检查。
方法二:
修改启动脚本,将 DM 启动脚 本DmServiceXXXXX 移到 /etc/init.d 下,chkconfig DmServiceXXXXX on 确认此数据库能以 dmdba 用户正常前台启动后(必须步骤),操作步骤如下:
1.
复制数据库实例服务脚本 dmserverd,命名为 DmInstanceServiceDAMENG 并修改,修改 path 值为 dm.ini 路径(必须),dm_home 设置为 dm 主程序安装路径(必须),svc_porg 设置为数据库实例名(可选推荐)。
2.
将脚本 DmInstanceServiceDAMENG 复制到 /etc/rc.d/init.d 目录下。
3.
cp/opt/dmdbms/bin/DmInstanceServiceDAMENG /etc/rc.d/init.d/DmInstanceServiceDAMENG
赋予服务脚本 DmInstanceServiceDAMENG 可执行权限。
chmod 777 /etc/rc.d/init.d/DmInstanceServiceDAMENG
4.注册 DM 实例服务并配置开机自动启动。
chkconfig –add DmInstanceServiceDAMENG
chkconfig DmInstanceServiceDAMENG on
chkconfig –list DmInstanceServiceDAMENG
5.后台启动达梦数据库实例服务,查看服务状态,关闭实例服务。
service DmInstanceServiceDAMENG start
service DmInstanceServiceDAMENG status
service DmInstanceServiceDAMENG stop
达梦数据库 Create SOCKET connection failure.错误分析
在使用 disql 连接达梦数据库的时候可能会遇到如下错误:
[dmdba@dm ~]$ disql SYSDBA/SYSDBA
[-70028]:Create SOCKET connection failure.
disql V8
username:^C
[dmdba@dm ~]$
这里通常有如下几种原因导致。
DM 进程没有启动
达梦数据库可以通过 dmserver 命令行直接启动,也可以注册成服务启动。
对于第一次使用 dminit 初始化的 DM 实例,直接用服务启动时,也会出现该问题。
对于 dminit 初始化的 DM 实例,在第一次启动时,需要使用 dmserver 命令启动。
此时如果查看 DM 的日志,会显示如下信息:
[root@dm log]# tail -100 DmServicedave.log
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 startup…
Database mode = 0, oguid = 0
License will expire on 2020-09-16
Database first startup failed, reinitialize database please!
[root@dm log]#
手工启动:
[dmdba@dm bin]$ ./dmserver ‘/dm/dmdbms/data/dave/dm.ini’
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 startup…
Database mode = 0, oguid = 0
License will expire on 2020-09-16
file lsn: 0
ndct db load finished
ndct fill fast pool finished
iid page’s trxid[1002]
NEXT TRX ID = 1003
pseg_collect_items, collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages
pseg_process_collect_items end, 0 active trx, 0 active pages, 0 committed trx, 0 committed pages
total 0 active crash trx, pseg_crash_trx_rollback begin …
pseg_crash_trx_rollback end
purg2_crash_cmt_trx end, total 0 page purged
set EP[0]'s pseg state to inactive
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
trx: 2004 purged 1 pages
trx: 2023 purged 1 pages
trx: 2024 purged 1 pages
trx: 2025 purged 1 pages
trx: 2026 purged 1 pages
trx: 2037 purged 1 pages
trx: 2157 purged 1 pages
trx: 2177 purged 1 pages
trx: 2178 purged 1 pages
trx: 2179 purged 1 pages
trx: 2180 purged 1 pages
trx: 2181 purged 1 pages
trx: 2182 purged 1 pages
trx: 2184 purged 1 pages
trx: 2186 purged 1 pages
trx: 2189 purged 1 pages
trx: 2195 purged 1 pages
trx: 2205 purged 1 pages
trx: 3072 purged 1 pages
trx: 3073 purged 1 pages
trx: 3074 purged 1 pages
trx: 3075 purged 1 pages
trx: 3087 purged 1 pages
trx: 3089 purged 1 pages
trx: 3090 purged 1 pages
trx: 3091 purged 1 pages
trx: 3096 purged 21 pages
trx: 3123 purged 1 pages
trx: 3124 purged 1 pages
trx: 3125 purged 1 pages
trx: 3126 purged 1 pages
trx: 3132 purged 1 pages
trx: 3134 purged 1 pages
trx: 3136 purged 1 pages
trx: 3141 purged 1 pages
trx: 3146 purged 1 pages
trx: 3151 purged 1 pages
trx: 3153 purged 1 pages
trx: 3156 purged 1 pages
trx: 3158 purged 1 pages
trx: 3170 purged 1 pages
trx: 3172 purged 1 pages
trx: 3174 purged 1 pages
trx: 3179 purged 1 pages
trx: 3182 purged 1 pages
trx: 3185 purged 1 pages
trx: 3188 purged 1 pages
trx: 3197 purged 1 pages
trx: 3198 purged 1 pages
trx: 3347 purged 1 pages
trx: 3349 purged 7 pages
trx: 3358 purged 1 pages
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback begin …
pseg_crash_trx_rollback end
SYSTEM IS READY.
之后就可以用服务启动了。
DMAP 服务异常
DMAP 是达梦数据库辅助插件服务。在 DM 实例运行时依赖该服务。 关于服务类型参考达梦数据库服务说明,在创建 DM 实例会自动创建 DMAP 的服务,一般正常重启即可。
[root@dm log]# systemctl start DmAPService.service
但如果之前就已经异常,此时如果重启失败,可以先删除 DM_HOME/bin 目录下的 DM_PIPE* 文件,再重启。
[dmdba@dm bin]$ pwd
/dm/dmdbms/bin
[dmdba@dm bin]$ ll DM_PIPE*
prwx------. 1 dmdba dmdba 0 Oct 29 13:52 DM_PIPE_DMAP_LSNR_RD
prwx------. 1 dmdba dmdba 0 Oct 29 13:52 DM_PIPE_DMAP_LSNR_WR
[dmdba@dm bin]$
这些管道文件在重启 DMAP 后会自动创建。
————————————————
版权声明:本文为CSDN博主「weixin_45578888」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45578888/article/details/117222641
文章
阅读量
获赞