实例日志位于数据库安装路径 “…/log” 文件夹下,一般默认命名为 “dm_实例名称_月份.log”。实例日志主要记录数据库运行过程中的 INFO、WARNING、ERROR 和 FATAL 四类信息:
(1)INFO(正常):用于打印程序应该出现的正常状态信息, 便于追踪定位;
(2)WARNING(告警):表明系统出现轻微的不合理,一般不影响运行和使用;
(3)ERROR(错误):表明出现了系统错误和异常,无法正常完成目标操作;
(4)FATAL(致命):表明发生了严重的错误,会导致数据库宕机,服务停止。
一般在进行数据库日志监控时,主要关注以下内容:
(1)WARNING、ERROR 和 FATAL 类信息监控。
(2)INFO 类信息中涉及实例重启的信息。
以下列举达梦数据库实例日志中需要注意的日志信息。
1. WARNING 信息。通常该信息为警告信息,需引起注意,但不影响数据库服务运行。常见 WARNING 场景如下:
(1)库启动告警
##告警信息提示缺少部分动态库,不影响系统运行
[WARNING] database p0000052532 T0000000000000052532 fail to load libgeos_c.so.1.13.3, /home/dmdba/dm/dmdbms/bin/libgeos_c.so.1.13.3:cannot open shared object file:No such file or directory
[WARNING] database p0000052532 T0000000000000052532 fail to load libgeoj.so,/home/dmdba/dm/dmdbms/bin/libproj.so:cannot open shared object file:No such file or directory
该信息表示未找到相关动态库信息,需确认服务端动态库是否有缺失,并通过 ldd
进行动态库相关排查。
(2)网络延迟告警
[WARNING] database P0000368487 T0000000000000368602 rraft_ send_thread,cmd:115,send message to BP15_B timeout, used 151(ms), send hb message used 151(ms)
该信息表示网络出现延迟,若持续出现延迟现象则需排查延迟原因。
(3)网络通信告警
[WARNING] database P0000006257 mian thread Failure occurs in data_recv_inet_onec,code 10
该信息表示网络通信告警。可以执行 sp_set_para_value(1,'COMM_TRACE',0);
关闭该项检查。
(4)消息告警
[WARNING] database P0000003097 mian_thread comm_inet_msg_recv more msg too long to 1735290788
该信息表示应用发到数据库服务器消息有问题。排查应用到数据库的网络及发送消息。
(5)key 授权告警
[WARNING] database P0000003097 mian_thread License will expire on 2019-04-30
该信息为表示 key 即将到期,需更换新的授权文件。
2. ERROR 信息。通常该信息为错误信息,可能会导致数据库宕机,停止服务。常见 ERROR 场景如下:
(1)存储问题错误
##数据库服务无法启动,执行服务启动命令后提示
os_file_flush error ! handle:3,ret:-1,code:30 ,desc:Read-only file system
数据库服务启动后在进行数据文件变更操作出现此问题。可以尝试重新挂载文件系统,然后重启数据库服务。
(2)文件写入错误
[INFO] database P0000005642 main_thread SYSTEM IS READY.
[FATAL] database P0000005642 main_thread Fatal error: desc is full while try alloc new page
[FATAL] database P0000005642 main_thread dm_sys_halt now!!!
[INFO] database P0000005642 main_thread total 2 rfil opened!
根据报错信息可以看出是 xx 空间满了之类的问题,也有可能是数据文件损坏。可通过排查以下内容:
排查一:检查表空间和操作系统磁盘空间;
排查二:重启后,利用 dbcheck 检查是否有数据文件损坏。
(3)实例启动错误
[buf4_fast_pool_init] malloc global_buf4_pool ctls failure
数据库实例在启动时,无法申请到足够多的内存资源。查看数据库实例所在服务器,根据实际可用内存,调整达梦数据库实例配置文件 dm.ini 中的 buffer 参数,使 buffer 所设数值小于实际可用内存。
(4)REDO 校验错误
[ERROR] database P0000002814 T0000000000000002814arch file(/dm8/data/DAMENG/DAMENG01.log) len check fail(file:/home/test/yx/trunk8_rel_ 2010/log/rfil.c,line:1219)
[ERROR] database P0000002814 T0000000000000002814 rfil grp init log file /dm8/data/DAMENG/DAMENG01.log error,code=-717
[ERROR] database P0000002814 T0000000000000002814 rlog4_init_low->rfil_grp_alloc failed,alloc_only=0!
需替换 REDO 日志文件并启动数据库。
(5)数据文件损坏错误
[ERROR] DB check P0000003180 T0000140208147420960 nbtr_check_page error:page(5,0,152572) rec of slotno 1 is min or max rec,file :/home/fuxin/trunc/dta/nbtr5.c,line :1636
重启尝试恢复,如果数据文件有损坏,尝试检查数据文件损坏情况,进行恢复,或使用备份文件还原数据库。
(6)接口错误
[error]: database P0000002968 main_thread cmd 5 validate error!
该错误表示使用了错误的接口,消息非法,比如使用不兼容的 DPI 或是 JDBC 来连接数据库,导致服务器认为客户端发过来的 prepare 消息数据不对,无法通过格式校验。
(7)连接数超出限定值错误
[ERROR] database P0000006257 mian_thread Reached the max session limit.
该错误表示连接数超出限定值错误。dm.key 和 max_session 均存在最大连接数限制,且 key 的并发数和 max_session 中的最大连接数取最小值,若实际连接数超过限定值,则会出现此报错。
3. FATAL 信息。通常该信息为“致命错误”,会导致数据库宕机,服务停止。
(1)FATAL:磁盘故障
[FATAL] database P0000023070 T0000000000000023104 check page io timeout overtime 3 times of io TIMEOUT.please check the disk
[FATAL] database P0000023070 T0000000000000023104 code=-1.dm_sys halt now!!
该信息表示磁盘故障,导致写 redo 一直写不进去,等待了 IO_TIMEOUT*3 次以后还是失败,直接 halt。可考虑调整 dm.ini 中 IO_TIMEOUT 参数值(动态参数),并检查磁盘的故障问题。
(2)FATAL:数据文件损坏
[INFO] database P0000003788 main_thread SYSTEM IS READY.
[FATAL] database P0000003788 dm_sql_ thd Invalid xdec_length:0
[FATAL] database P0000003788 dm_sql_ thd Invalid xdec_length
[FATAL] database P0000003788 dm_sql_ thd dm_sys_halt now!!
[FATAL] database P0000003788 dm_sql_ thd total 2 rfil opened!
该信息表示数据文件出现损坏,应及时检查数据文件损坏情况,进行恢复,或使用备份文件还原数据库。
(3)FATAL:索引损坏
[ERROR]: database P0000043976 main_thread INDEX [MES_WIP_COMP_PK1] ID33698687 is corrupt! line 4809 in file: /data/jq/trunk7_ent/op/nupd2.c
数据库中索引损坏,导致数据库宕机,需对该表进行重建。
(4)FATAL:dm_sys_halt
[FATAL] database P000003788 dm_sql_thd dm_sys_halt now!!!
该信息表示达梦数据库 halt,应排查数据库日志或系统日志中导致数据库 halt 原因。