注册
达梦数据库问题排查指南

达梦数据库问题排查指南

lz 2022/11/09 14092 16 0
摘要 本文主要是梳理一个基础的问题排查操作流程和方式,供大家参考。

目 次
1 检查项
1.1 操作系统环境及配置信息检查
1.1.1 CPU型号及核数检查
1.1.2 操作系统内存检查
1.1.3 磁盘空间检查
1.1.4 系统时间检查
1.1.5 系统资源限制检查
1.1.6 Core文件配置检查
1.1.7 环境变量检查
1.1.8 目录权限检查
1.2 日志信息检查
1.2.1 数据库服务日志检查
1.2.2 集群守护日志检查
1.2.3 操作系统日志检查
1.3 数据库基本信息检查
1.3.1 实例初始化参数检查
1.3.2 数据库服务状态检查
1.3.3 端口使用情况检查
1.3.4 服务端版本检查
1.3.5 产品授权信息检查
1.3.6 归档状态检查
1.3.7 dm.ini参数检查
1.3.8 用户资源限制检查
1.3.9 数据库会话情况检查
1.3.10 事务阻塞/等待情况检查
1.3.11 锁定用户检查
1.3.12 死锁历史检查
1.3.13 错误码检查
1.3.14 主备集群运行状态检查
1.3.15 数据库完整性校验检查
1.3.16 定时备份作业情况检查
1.3.17 dm_svc.conf文件配置检查

1 检查项

1.1 操作系统环境及配置信息检查

1.1.1 CPU型号及核数检查

在操作系统终端执行命令:lscpu可以检查CPU的情况,举例如下图所示:CPU的型号、配置及核数的多少会对数据库的运行效率产生影响。
1.png

1.1.2 操作系统内存检查

在操作系统终端执行命令:free -m可以初步对内存的使用情况进行检查(单位为Mb),当free列显示剩余可用内存过低时,会对数据库的运行产生影响。
1.png

1.1.3 磁盘空间检查

在操作系统终端执行命令:df -h可以对磁盘可用空间情况进行检查。数据库的正常运行需要保证有足够的磁盘空间,过小的剩余空间可能会影响数据库的运行。
1.png

1.1.4 系统时间检查

在操作系统终端执行命令:date可以检查当前节点的系统时间。当数据库环境存在多节点时,需要依次检查各节点系统时间是否一致,防止mal通信出现异常,影响数据同步。

1.1.5 系统资源限制检查

在操作系统终端执行命令:more /proc/$(pidof dmserver)/limits可以检查环境对数据库服务的资源限制是否放开。
1.png

1.1.6 Core文件配置检查

Core文件中保存着程序崩溃那一刻的内存快照,在操作系统终端执行命令:ulimit -c,查询core文件大小配置值,返回值须不为0。
1.png
在操作系统终端执行命令:cat /proc/sys/kernel/core_pattern,检查core文件的默认生成路径是否正确。
1.png

1.1.7 环境变量检查

在操作系统终端执行命令:env |grep PATH,检查PATH和LD_LIBRARY_PATH两项的环境变量配置,需能返回$DM_HOME/bin目录信息,如下图例子中是/opt/dmdbms/bin
1.png

1.1.8 目录权限检查

分别进入软件安装目录和数据库实例所在目录,执行命令:ls -lrt,检查目录下文件的所属用户是否为dmdba,所属组是否为dinstall,避免出现权限问题。
1.png

1.2 日志信息检查

1.2.1 数据库服务日志检查

数据库日志默认保存在$DM_HOME/log目录下,记录了数据库服务启动,刷检查点,写归档、刷盘等一系列实例的运行过程,按月生成,一般默认命名为 dm_实例名称_月份.log,如下图所示:
1.png
找到目录下相应的日志文件,在操作系统终端中执行以下命令:cat dm_DMSERVER_202207.log | grep “ERROR” >202207_error.log,执行完成后会把记录ERROR信息的日志内容输出到202207_error.log文件中,便于集中分析。同理也可以输出含“FATAL”信息的日志。
如果数据库处于联机状态,也可以通过manager工具登录数据库,执行以下SQL语句查询运行日志中是否存在错误记录:select * from v$instance_log_history where level$ in(‘ERROR’,‘FATAL’);

1.2.2 集群守护日志检查

如果数据库架构是主备集群或读写分离集群,还需要检查一下$DM_HOME/log目录下的守护日志信息,命名格式为dm_watcher_日期.log,输出错误信息的处理方式参考1.2.1中的方法。
1.png

1.2.3 操作系统日志检查

在操作系统终端执行命令:journalctl -a|grep -i dms定位到和数据库服务相关的操作系统日志信息。

1.3 数据库基本信息检查

1.3.1 实例初始化参数检查

方法1:在数据库实例所在目录下有dminit+时间戳开头的日志文件,记录着实例初始化时的参数设置情况,执行vi dminit*.log命令可以查看文件内容,如下图所示,其中需要重点关注的参数为——
【db_path】:表示实例所在路径;
【page_size】:表示页大小;
【extent_size】:表示簇大小;
【case_sensitive】:大小写是否敏感,1敏感0不敏感;
【charset】:字符集,0表示GBK18030,1表示UTF-8……;
【length_in_char】:是否以字符为单位,1是0以字节为单位;
【blank_pad_mode】:涉及字符串比较时,末尾空格填充模式是否兼容oracle,1兼容0不兼容;
1.png
方法2:在manager工具登录完数据库实例后,鼠标右键选择连接名,点击【管理服务器】,也能够查看到诸多初始化参数的信息。

1.3.2 数据库服务状态检查

在操作系统终端中执行命令:systemctl status DmServiceDM(达梦后台服务名,根据实际情况自行调整),可以检查当前数据库服务的存活情况,如图所示则表示服务运行正常。
1.png
如果此时数据库服务处于未启动状态,则可以通过尝试前台启动的方式来确认

1.3.3 端口使用情况检查

到数据库实例所在目录执行命令:cat dm.ini|grep PORT_NUM,确认数据库端口号;
1.png
再在操作系统终端中执行命令:netstat -pan | grep dmserver,检查上一步查到的端口号是否正在被数据库服务监听及使用。
1.png

1.3.4 服务端版本检查

通过manager工具或disql工具登录数据库,执行以下SQL语句能够查询当前数据库服务端版本:select * from v$version;
1.png

1.3.5 产品授权信息检查

如果数据库处于联机状态下,可以在manager工具或disql工具中执行以下SQL语句查询本环境的授权信息及到期时间:select * from v$license;其中expired_date字段表示到期时间,如下图所示内容表示2022年8月15日到期。
1.png
如果数据库此时已经处于脱机状态,甚至无法启动,可以在$DM_HOME/tool目录下启动console(DM控制台)工具,选择【许可证信息】菜单,查看授权情况,通过查看“有效时间”的参数值确认授权到期时间。

1.3.6 归档状态检查

在manager工具或disql工具中执行以下SQL语句查询当前数据库实例归档状态:select arch_mode from v$database;Y代表归档开启,N代表处于归档关闭状态。通常我们建议生产环境需运行在归档状态下。

1.3.7 dm.ini参数检查

通过manager工具或disql工具登录数据库并执行以下SQL语句:Select * from v$dm_ini where para_name=‘XXXX’;其中单引号内填入需要查询的参数名称,例如想要查询本实例的密码复杂度参数时,执行语句为:Select * from v$dm_ini where para_name=‘PWD_POLICY’;以下列出重点需要关注的dm.ini参数

参数名称 参数含义
内存相关参数
MEMORY_POOL 共享内存池大小
BUFFER 数据缓冲区大小
查询相关参数
OPTIMIZER_OR_NBEXP OR 表达式的优化方式
CNNTB_OPT_FLAG 是否使用优化的层次查询执行机制
数据库相关参数
MAX_SESSIONS 系统允许同时连接的最大数,同时还受到LICENSE 的限制,取二者中较小的值
MAX_SESSION_STATEMENT 单个会话上允许同时打开的语句句柄最大数
兼容性相关参数
COMPATIBLE_MODE 是否兼容其他数据库模式
其他参数
PWD_POLICY 设置系统默认口令策略

1.3.8 用户资源限制检查

打开manager工具,鼠标右键选择需要查询的用户,选择【修改】,打开【资源限制】页面,即可查看到用户资源限制情况,主要内容包括用户登录失败次数、口令有效期、口令宽限期等,如下图所示。
1.png

1.3.9 数据库会话情况检查

通过manager工具或disql工具执行以下SQL语句,查询当前环境的会话情况,包括会话状态,发起会话的客户端地址及会话数目。
select user_name,state,clnt_ip,count(*) from v$sessions group by user_name,state,clnt_ip;
1.png

1.3.10 事务阻塞/等待情况检查

通过manager工具或disql工具执行以下SQL语句,根据查询结果集判断当前环境是否存在事务阻塞导致等待的情况,如果结果集为空,则表示正常,如下图所示。
select * from v$trxwait
1.png

1.3.11 锁定用户检查

通过manager工具或disql工具执行以下SQL语句,能够查询到目前已被锁定的用户,被锁定的用户将无法登录和访问数据库,需要注意。
select * from dba_users where account_status =’LOCKED’
1.png

1.3.12 死锁历史检查

通过manager工具或disql工具执行以下SQL语句,根据查询结果集判断当前环境是否曾经出现过死锁记录(但已被系统自动处理)。
select * from v$deadlock_history;
1.png

1.3.13 错误码检查

当使用数据库过程中遇到报错时,数据库会反馈具体的错误码,通常根据得到的错误码信息能够判断错误原因和解决方法。
v$err_info视图中汇总记录了所有的SQL错误码,必要时可以查阅此系统视图定位具体的数据库错误。
select * from v$err_info where code= ‘-7112’;
1.png

1.3.14 主备集群运行状态检查

如果当前数据库架构为主备集群或读写分离集群,通过监视器,可以监控数据守护系统的运行情况,获取主备库状态、守护进程状态、以及主备库数据同步情况等信息。
在操作系统终端中执行命令:./dmmonitor dmmonitor.ini,启动监视器,并在监视器终端中输入show命令,查看集群中各节点的状态信息,如下图所示,当所有节点的实例和守护进程都处于open状态时,则表示主备集群运行状态正常。
1.png

1.3.15 数据库完整性校验检查

通过dmdbchk命令行工具可以对数据库的完整性、正确性进行校验,这一过程必须要在数据库服务正常退出后的脱机状态下进行。到数据库程序目录的bin目录下,执行命令:./dmdbchk path=/opt/dmdbms/data/DAMENG/dm.ini进行校验过程,执行完成后会生成一个dbchk_err.txt的检查报告用于检验复盘。

1.3.16 定时备份作业情况检查

当设置了定时备份作业后,也需要定时确认作业的执行情况。在manager工具中点击【代理】->【作业】,鼠标右键选择定时备份作业,选择【查看作业历史信息】,即可查询到定时作业创建至今的执行历史。
同样也可以到定时备份的指定备份路径中去查看备份文件。

1.3.17 dm_svc.conf文件配置检查

32位的DM安装在Win32操作平台下,此文件位于%SystemRoot%\system32目录;
64位的DM安装在Win64操作平台下,此文件位于%SystemRoot%\system32目录;
32位的DM安装在Win64操作平台下,此文件位于%SystemRoot%\SysWOW64目录;
在Linux平台下,此文件位于/etc目录下;
以linux环境为例,通常在安装完数据库客户端后会在/etc目录下自动生成dm_svc.conf配置文件,执行cat /etc/dm_svc.conf命令检查配置文件中记录的信息是否正确。
1.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服