
达梦数据库教程(15)SQL跟踪日志与慢查询日志
一、达梦跟踪日志
达梦数据库跟踪日志即trace log,是数据库的详细诊断信息文件,该日志记录了包含系统各个会话所执行的 SQL 语句信息、参数信息、错误信息、执行时间等,用于排查故障、性能问题或内部错误。由于跟踪日志对磁盘IO影响较大,默认是关闭状态,建议在需要进行调优和排查问题时临时开启。跟踪日志开启后存放于数据目录中,通常以dmsql_实例名.log命名,当存在多分日志文件时会在文件名后追加具体时间信息(数据库运行日志在数据库初始化完成后是存放在数据库安装目录log下,非数据目录)
1、启用跟踪日志
修改 dm.ini 文件,设置 SVR_LOG = 1 启用 sqllog.ini 配置,该参数为动态参数,也可通过调用数据库函数在线修改
SP_SET_PARA_VALUE(1,'SVR_LOG',1);
2、跟踪日志配置
当日志开启后,会在达梦实例目录(如/data/dmdbms/DAMENG)生成配置文件sqllog.ini,该文件主要参数配置如下:
cat sqllog.ini BUF_TOTAL_SIZE = 10240 #SQLs Log Buffer Total Size(K)(1024~1024000) BUF_SIZE = 1024 #SQLs Log Buffer Size(K)(50~409600) BUF_KEEP_CNT = 6 #SQLs Log buffer keeped count(1~100) [SLOG_ALL] FILE_PATH = ../log PART_STOR = 0 SWITCH_MODE = 1 SWITCH_LIMIT = 100000 ASYNC_FLUSH = 0 FILE_NUM = 50 ITEMS = 0 SQL_TRACE_MASK = 2:3:23:24:25 MIN_EXEC_TIME = 0 USER_MODE = 0 USERS =
· FILE_NUM:总共记录多少个日志文件,默认为0时会生成2个日志文件,当日志数超出设定值后将进行日志轮询
· SWITCH_MODE:日志文件切换模式,0为不切换、1为按文件中记录数量切换、2为按文件大小切换、3为按时间间隔切换,建议为2
· SWITCH_LIMIT:不同日志切换模式下文件的切换规则,如果SWITCH_MODE为1,这里的设置就是SQL记录条数达到多少后进行日志切换;如果SWITCH_MODE为2,则是日志文件达到大小后进行切换,单位为MB;如果SWITCH_MODE为3,则是达到指定时间间隔进行日志切换,单位为分钟
· MIN_EXEC_TIME:当SQL语句的执行时间小于该值则不记录,单位为毫秒
· SQL_TRACE_MASK:LOG 记录的语句类型掩码,如1表示全部记录、2为 全部 DML 类型语句、3为 全部 DDL 类型语句、4为UPDATE 类型语句、5为DELETE 类型语句、6为INSERT 类型语句、7为SELECT 类型语句
3、加载日志配置
如果对 sqllog.ini 进行了修改,可通过调用函数即时生效,无需重启数据库
SP_REFRESH_SVR_LOG_CONFIG();
4、查看日志
sqllog.ini 配置成功后将在数据目录生成 dmsql 开头的 log 纯文本文件,命名规则通常是"dmsql_实例名_日期_时间.log"
日志记录了详细的SQL语句,如需进行更为系统全面的分析,可使用 DMLOG 工具对 SQL 进行分类汇总
二、达梦慢查询
1、开启慢查询记录
当 DM.INI 中参数 ENABLE_MONITOR = 1 时将开启对SQL语句的监控,默认会将最近 N 条执行时间超过 M 毫秒的 SQL 语句记录到V$LONG_EXEC_SQLS 视图 。其中 N 的值由参数 LONG_EXEC_SQLS_CNT 指定,取值范围为 1000 ~ 1000000,默认1000。而 M 的值由系统函数 SP_SET_LONG_TIME 进行修改,默认1000毫秒,取值范围 50 ~ 360000)
#查看是否打开SQL监视器,1为开启,0为关闭,该参数在DM.INI中默认为开启状态 SELECT SF_GET_PARA_VALUE(1,'ENABLE_MONITOR'); #手动打开MONITOR SP_SET_PARA_VALUE(1,'ENABLE_MONITOR',1); #查看当前慢查询阈值,默认1000 SELECT SF_GET_LONG_TIME() #监控执行时间超过5秒的SQL语句 SP_SET_LONG_TIME(5000);
2、查询慢SQL
查询结果中 EXEC_TIME记录了语句的执行时间,SQL_TEXT 列记录了 SQL 语句
#模拟慢查询 SQL> begin dbms_lock.sleep(3); select * from dual; end; #查询视图 SELECT * FROM SYS.V$LONG_EXEC_SQLS
猜你喜欢

国产数据库 达梦数据库教程(14)统计信息与执行计划
一、达梦数据库执行计划所有DBMS的执行计划作用基本都是相同的,用于显示一条 SQL 语句在数据库中的执行过程,通过执行计划可以看出SQL影响数据量、是否有使用合理的索引等,有助于SQL优化1、达梦数...

国产数据库 达梦数据库教程(13)如何查找并解决阻塞事务
一、数据库阻塞的原因当一个数据库提交DML、DDL语句时出现阻塞现象通常有两种情况,一是该语句影响的数据量太多,数据库需要时间来处理,这种情况一般无需处理,等事务正常结束即可;另一种则是被其他事务的锁...

国产数据库 达梦数据库教程(12)守护集群部署与管理
一、达梦数据库守护集群介绍达梦数据库通过守护集群可以实现主备模式或读写分离集群,二者在搭建过程上基本一致,区别在于:· 数据守护集群:通常使用实时归档 + ARCH WAIT APPLY=0 (高性能...

国产数据库 达梦数据库教程(11)达梦数据库授权与版本更新
一、达梦数据库授权管理1、查询授权查询授权到期时间,如果是永久授权,EXPIRED_DATE 列值是 NULL,AUTHORIZED_CUSTOMER 是用户名称SELECT * ...
国产数据库 达梦数据库教程(9)达梦数据库定时备份配置




一、达梦数据库备份管理达梦数据库通过自带的一些函数以及动态视图可以实现定期物理备份、清理历史备份集等自动化操作,不需要再额外配置操作系统的计划任务。如果是需要自动化逻辑备份的话,则需要使用dexp结合...
文章评论