暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【干货攻略】达梦数据库日志监控与分析(一)

达梦E学 2025-03-28
6
引 言

数据库日志监控和分析是数据库故障诊断的重要手段之一。本文主要对达梦数据库的实例运行日志,SQL 日志,dmap 辅助进程日志,备份日志等日志文件进行分析讲解,了解数据库日志常见的异常信息,同时介绍达梦常见的接口日志开启方法。
本章内容已在如下环境上测试:
①数据库版本:达梦DM8。
相关关键字:日志监控和分析。

——正文——

01

常用日志的信息说明

达梦数据库日志主要有 INFO、WARNING、ERROR 和 FATAL 四类信息。

INFO(正常):用于打印程序应该出现的正常状态信息, 便于追踪定位;
WARNING(告警):表明系统出现轻微的不合理,一般不影响运行和使用;
ERROR(错误):表明出现了系统错误和异常,无法正常完成目标操作;
FATAL(致命):表明发生了严重的错误,会导致数据库宕机,服务停止。
2、一般在进行数据库日志监控时,主要关注以下内容:
(1)WARNING、ERROR 和 FATAL 类信息监控。
(2)INFO 类信息中涉及实例重启的信息。
3、在 Linux 环境中查看相关信息,可参考如下命令:数据库日志监控实现方法:通过 cat 命令进行数据库日志定期检查,过滤日志当中包含 ERROR、WARNING 信息的记录,并输出信息至前台监控显示界面,命令如下:
    cd $DM_HOME
    cd log
    ls -ltr *.log
    ##
    检查日志中是否有错误信息
    cat xxxx.log |grep
      
    '\[ERROR ' 
    ##
    检查日志中是否有警告信息
    cat xxxx.log |grep 
     
    '\[WARNING'   
    ##
    检查数据库是否重启过
    cat xxxx.log |grep
     
     
    'SYSTEM READY' 
    复制

    02

     实例运行日志

    实例运行日志记录了数据库服务启动,刷检查点,写归档、刷盘等一系列实例的运行过程,按月生成,一般默认命名为 “dm_实例名称_月份.log”。
    针对该日志的分析,可了解以上过程的运行状态,通过检查点刷盘,也可以分析业务的繁忙程度,作为调整内存、检查点参数的依据。
    主要日志信息解读:
    1. WARNING 信息。通常该信息为警告信息,需引起注意,但不影响数据库服务运行。常见 WARNING 场景如下:
    (1)库启动告警
      ##
      告警信息提示缺少部分动态库,不影响系统运行
      202
      5
      -03-06 17:13:57.999 [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
      202
      5
      -03-06 17:13:58.002 [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)网络延迟告警
        202
        4
        -11-05 11:23:14.633 [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)消息告警
            20
            24
            -10-09 10:04:00 [WARNING] database P0000003097 mian_thread comm_inet_msg_recv more msg too long to 1735290788
            该信息表示应用发到数据库服务器消息有问题。排查应用到数据库的网络及发送消息。
            复制
            (5)key 授权告警
              20
              24
              -10-09 10:04:00 [WARNING] database P0000003097 mian_thread License will expire on 20
              25
              -04-30
              该信息为表示
               
              key 
              即将到期,需更换新的授权文件。
              复制
              2. ERROR 信息。通常该信息为错误信息,可能会导致数据库宕机,停止服务。常见 ERROR 场景如下:
              (1)存储问题错误(温馨提示:如正式系统存在如下报错,请及时联系达梦技术服务团队或者拨打服务热线 400-991-6599 获取支持。)
                ##
                数据库服务无法启动,执行服务启动命令后提示
                os_file_flush error ! handle:3,ret:-1,code:30 ,desc:Read-only file system
                数据库服务启动后在进行数据文件变更操作出现此问题。可以尝试重新挂载文件系统,然后重启数据库服务。
                复制
                (2)文件写入错误(温馨提示:如正式系统存在如下报错,请及时联系达梦技术服务团队或者拨打服务热线 400-991-6599 获取支持。)
                  20
                  24
                  -10-21 12:11:23 [INFO] database P0000005642 main_thread SYSTEM IS READY.
                  20
                  24
                  -10-21 12:11:37 [FATAL] database P0000005642 main_thread Fatal error: desc is full while try alloc new page 
                  20
                  24
                  -10-21 12:11:37 [FATAL] database P0000005642 main_thread dm_sys_halt now!!!
                  20
                  24
                  -10-21 12:11:37 [INFO] database P0000005642 main_thread total 2 rfil opened!
                  根据报错信息可以看出是
                   
                  xx 
                  空间满了之类的问题,也有可能是数据文件损坏。可通过排查以下内容:
                  排查一:检查表空间和操作系统磁盘空间;
                  排查二:重启后,利用
                   
                  dbcheck 
                  检查是否有数据文件损坏。
                  复制
                  (3)实例启动错误(温馨提示:如正式系统存在如下报错,请及时联系达梦技术服务团队或者拨打服务热线 400-991-6599 获取支持。)
                    [buf4_fast_pool_init] malloc global_buf4_pool ctls failure
                    数据库实例在启动时,无法申请到足够多的内存资源。查看数据库实例所在服务器,根据实际可用内存,调整达梦数据库实例配置文件
                     
                    dm.ini 
                    中的 
                    buffer 
                    参数,使 
                    buffer 
                    所设数值小于实际可用内存。
                    复制
                    (4)REDO 校验错误(温馨提示:如正式系统存在如下报错,请及时联系达梦技术服务团队或者拨打服务热线 400-991-6599 获取支持。)
                      [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)数据文件损坏错误(温馨提示:如正式系统存在如下报错,请及时联系达梦技术服务团队或者拨打服务热线 400-991-6599 获取支持。)
                        20
                        24
                        -08-06 15:57:44 [ERRORDB 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)接口错误温馨提示:如正式系统存在如下报错,请及时联系达梦技术服务团队或者拨打服务热线 400-991-6599 获取支持。)

                          [error]: database P0000002968 main_thread cmd 5 validate error!
                          该错误表示使用了错误的接口,消息非法,比如使用不兼容的
                           
                          DPI 
                          或是 
                          JDBC 
                          来连接数据库,导致服务器认为客户端发过来的 
                          prepare 
                          消息数据不对,无法通过格式校验。
                          复制

                          7)连接数超出限定值错误温馨提示:如正式系统存在如下报错,请及时联系达梦技术服务团队或者拨打服务热线 400-991-6599 获取支持。)

                            [ERROR] database P0000006257 mian_thread Reached the max session limit.
                            该错误表示连接数超出限定值错误。
                            dm.key 
                            和 
                            max_session 
                            均存在最大连接数限制,且 
                            key 
                            的并发数和 
                            max_session 
                            中的最大连接数取最小值,若实际连接数超过限定值,则会出现此报错。
                            复制

                            3. FATAL 信息。通常该信息为“致命错误”,会导致数据库宕机,服务停止。

                            1FATAL:磁盘故障(温馨提示:如正式系统存在如下报错,请及时联系达梦技术服务团队或者拨打服务热线 400-991-6599 获取支持。)

                              20
                              24
                              -04-11 23:37:19:475 [FATAL] database P0000023070 T0000000000000023104 check page io timeout overtime 3 times of io TIMEOUT.please check the disk
                              20
                              24
                              -04-11 23:37:19.475 [FATAL] database P0000023070 T0000000000000023104 code=-1.dm_sys halt now!!
                              该信息表示磁盘故障,导致写
                               
                              redo 
                              一直写不进去,等待了 
                              IO_TIMEOUT*3 
                              次以后还是失败,直接 
                              halt
                              。可考虑调整 
                              dm.ini 
                              中 
                              IO_TIMEOUT 
                              参数值(动态参数),并检查磁盘的故障问题。
                              复制

                              2FATAL:数据文件损坏(温馨提示:如正式系统存在如下报错,请及时联系达梦技术服务团队或者拨打服务热线 400-991-6599 获取支持。)

                                20
                                24
                                -01-07 11:19:23 [INFO] database P0000003788 main_thread SYSTEM IS READY.
                                20
                                24
                                -01-07 11:22:32 [FATAL] database P0000003788 dm_sql_ thd Invalid xdec_length:0
                                20
                                24
                                -01-07 11:22:32 [FATAL] database P0000003788 dm_sql_ thd Invalid xdec_length
                                20
                                24
                                -01-07 11:22:32 [FATAL] database P0000003788 dm_sql_ thd dm_sys_halt now!!   
                                20
                                24
                                -01-07 11:22:32 [FATAL] database P0000003788 dm_sql_ thd total 2 rfil opened!
                                该信息表示数据文件出现损坏,应及时检查数据文件损坏情况,进行恢复,或使用备份文件还原数据库。
                                复制

                                3FATAL:索引损坏(温馨提示如正式系统存在如下报错,请及时联系达梦技术服务团队或者拨打服务热线 400-991-6599 获取支持

                                  [ERROR]: database P0000043976 main_thread INDEX [MES_WIP_COMP_PK1] ID33698687 is corrupt! line 4809 in file: data/jq/trunk7_ent/op/nupd2.c
                                  数据库中索引损坏,导致数据库宕机,需对该表进行重建。
                                  复制

                                  4FATALdm_sys_halt温馨提示:如正式系统存在如下报错,请及时联系达梦技术服务团队或者拨打服务热线 400-991-6599 获取支持。)

                                    202
                                    5
                                    -01-07 11:22:32 [FATAL] database P000003788 dm_sql_thd dm_sys_halt now!!!
                                    该信息表示达梦数据库
                                     
                                    halt
                                    ,应排查数据库日志或系统日志中导致数据库 
                                    halt 
                                    原因。
                                    复制

                                    可以通过 grep 筛选检查具有 ERROR 或者 FATAL 关键字的日志,并将结果输出至文件中:

                                      ##
                                      查看错误日志定位相关数据库报错
                                      cat dm_DMSERVER_202203.log | grep "ERROR" >1.log
                                      复制

                                      总结


                                      本期的日志监控和分析就到这里,下期会来介绍SQL日志分析、dmap 辅助进程日志、备份日志、接口日志的监控和分析。



                                      END


                                      以上为本期分享,希望能带给大家帮助。想要了解更多往期干货,可访问页面最下方#达梦技术干货攻略#合集或下方相关分享。在此邀请更多学员参与“达梦技术干货投稿活动”,稿件获选后将在达梦“干货分享”专栏进行发布,欢迎来稿!


                                      往期回顾


                                      【干货】达梦数据库初始化参数:字符串大小写敏感

                                      【干货】达梦数据库SQL评测

                                      【开班】达梦认证管理员DCA在线课程招生中

                                      【开班】达梦认证专家DCP在线课程招生中

                                      【开班】达梦认证大师DCM课程招生中


                                      达梦E学
                                      达梦数据  学习园地


                                      文章转载自达梦E学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                      评论