达梦8-SQL日志配置与分析工具

        以 dmsql_数据库实例名.log 类型命名的文件为跟踪日志文件,跟踪日志内容包含系统各会话执行的 SQL 语句、参数信息、错误信息等。跟踪日志主要用于分析错误和分析性能问题,比如,可以挑出系统现在执行速度较慢的 SQL 语句,进而对其进行优化。

        打开跟踪日志对系统的性能有较大影响,一般用于查错和调优的时候才会打开,默认情况下系统是关闭跟踪日志的。当把 dm.ini 参数 SVR_LOG 设置为 1,才会打开 SQL 日志,若需要跟踪日志但对日志的实时性没有严格的要求,又希望系统有较高的效率,可以设置参数 SQL_TRACE_MASK 和 MIN_EXEC_TIME 只记录关注的相关记录,减少日志总量。或者设置sqllog.ini参数ASYNC_FLUSH打开SQL日志异步刷盘提高系统性能。

在记录完成后,可执行: SP_SET_PARA_VALUE(1, 'SVR_LOG', 0); 进行关闭跟踪日志。

SQL日志文件是一个纯文本文件。

--命名格式

dmsql_实例名[_模式名][_用户名][_日期_事件].log

当sqllog.ini中存在多个有效模式名,日志文件名中会添加“_模式名”,否则不添加,

当sqllog.ini参数PART_STOR=1时,日志文件名中会添加“_用户名”,否则不添加,

当sqllog.ini参数SWITCH_MODE不为0时,日志文件名中会添加“_日期_时间”,否则不添加。

        SQL日志文件缺省生成在DM安装目录的log子目录下,管理员可通过sqllog.ini参数FILE_PATH设置其生成路径。

        系统中SQL日志的缓存时分块循环使用的,管理员可根据系统执行的语句情况以及压力情况设置恰当的日志缓存块大小及预留的缓存块个数。当预留的块不足以记录系统产生的任务时,系统会分配新的 用后即弃的缓存块,但是总的空间大小由sqllog.ini参数BUF_TOTAL_SIZE控制,管理员可根据实际情况进行设置。

1 查看SVR_LOG参数

[dmdba@kylin10 DAMENG]$ cat dm.ini | grep SVR_LOG

SVR_LOG_NAME= SLOG_ALL  #Using which sql log sys in sqllog.ini

SVR_LOG= 0   #Whether the Sql Log sys Is open or close. 1:open, 0:close, 2:use switch and detail mode. 3:use not switch and simple mode.

 

2 SQL日志使用方法 

sqllog.ini中配置块在INI参数SVR_LOG=1时使用。

sqllog.ini中可以配置多个模式,不同模式可以有不同的配置项,例如:记录过滤掩码、刷盘方式、文件切换方式等。当模式的items设置不同时,使用其并集。仅当配置的模式名存在于INI参数SVR_LOG_NAME时,该模式名对应配置才会生效。当配置为多模式时,会在日志文件名中的实例名后面加上该日志文件对应的模式名。

缺省情况下,SVR_LOG_NAME为SLOG_ALL。若SVR_LOG为1,但不存在sqllog.ini或sqllog.ini中配置的多个模式名均不在INI参数SVR_LOG_NAME中时,按照各配置项的系统默认值记录SQL日志。

2.1 sqllog.ini文件配置

[dmdba@kylin10 DAMENG]$ cat sqllog.ini 
#SQL日志BUFFER占用空间上限
BUF_TOTAL_SIZE  = 10240      #SQLs Log Buffer Total Size(K)(1024~1024000)
#一块SQL日志BUFFER的空间大小
BUF_SIZE         = 1024          #SQLs Log Buffer Size(K)(50~102400)
#系统保留的SQL日志缓存的个数,有效值1-100
BUF_KEEP_CNT    = 6             #SQLs Log buffer keeped count(1~100)

[SLOG_ALL]
#SQL日志文件所在的目录路径,通常在安装目录dmdbms/log目录下。也可以手动指定
FILE_PATH    = ../log
#SQL日志分区存储,表示日志分区存储,表示SQL日志进行分区存储的划分条件
PART_STOR    = 0
#SQL日志文件切换的模式,2表示按文件大小切换
SWITCH_MODE  = 2
#不同切换模式switch_mode下,意义不同
SWITCH_LIMIT   = 128
#是否打开SQL日志异步刷盘功能。0否,是
ASYNC_FLUSH   = 1
#总共记录多少个日志文件,当日志文件达到这个设定值以后,再生成新的文件时,会删除最早那个日志文件
FILE_NUM = 5
#指定一条SQL日志中应包含的内容,指定方式为ITEMS=位号,0表示所有
ITEMS    = 0 
#指定SQL日志中需要被记录的列
SQL_TRACE_MASK  = 1 
#详细模式下,记录的最小语句执行时间,单位毫秒。执行时间小于该值的语句不记录在日志文件。
MIN_EXEC_TIME = 0
#SQL日志按用户过滤时的过滤模式
USER_MODE   = 0 
#打开SVR_LOG_USER_MODE时指定的用户列表。格式为:用户名:用户名
USERS =
EXECTIME_PREC_FLAG = 0 
    
[SLOG_ERROR]
#指定SQL日志中需要被记录的语句类,23为记录存在错误的语句(错误语法,语义分析错误等等)
SQL_TRACE_MASK = 23
FILE_PATH      = ../log
    
[SLOG_DDL]
#3包含DDL类型相关语句(等同于同时设置11-17)
SQL_TRACE_MASK = 3
    
[SLOG_LONG_SQL]
#记录执行语句、执行语句的时间、语句的影响行数(只有增删改查有行数,其他语句无行数)
SQL_TRACE_MASK = 25
#详细模式下,记录的最小语句执行时间,单位毫秒,执行时间小于该值的语句不记录在日志文件中。
MIN_EXEC_TIME = 60000

2.2 sqllog.ini详细参数说明 

BUF_TOTAL_SIZE = 10240
SQL日志BUFFER占用空间的上限。单位KB,取值范围1024-1024000。

BUF_SIZE = 1024
一块SQL日志BUFFER的空间大小,单位KB,取值范围50-409600。

BUF_KEEP_CNT = 6
系统保留SQL日志缓存的个数,取值范围1-100。

SQL_TRACE_MASK = 1
指定SQL日志中需要被记录的语句类型。指定方式:SQL_TRACE_MASK=位号:位号:位号…….。
位号含义:
	1:全部记录(等同于同时设置4-31)
	2:DML类型相关语句(等同于同时设置4-10)
	3:DDL类型相关语句(等同于同时设置11-17)
	4:UPDATE类型语句
	5:DELETE
	6:INSERT
	7:SELECT 
	8:COMMIT
	9:ROLLBACK
	10:CALL类型语句(过程调用)
	11:BACKUP(备份)
	12:RESTORE(恢复)
	13:创建对象操作(CREATE DDL)
	14:修改对象操作(ALTER DDL)
	15:删除对象操作(DROP DDL)
	16:授权操作(GRANT DDL)
	17:回收操作(REVOKE DDL)
	22:记录绑定参数
	23:记录存在错误的语句
	24:记录执行语句
	25:记录执行语句、执行语句时间、语句影响行数(只有增删改查有行数,其他语句无行数)
	26:记录执行语句的时间、语句的影响行数,25和26选其一,同时存在,25生效。
	27:记录原始语句(服务器从客户端收到的未加分析的语句)
	28:记录参数信息,包括参数的序号、数据类型和值
	29:记录事务相关事件,包括锁类型、锁等待时间等。
	30:记录XA事务
	31:记录数据库操作,包括登录成功、登录失败、退出登录。

FILE_NUM = 5
总共记录多少个日志文件,当日志文件达到这个设定值以后,在生成新的文件时,会删除最早的那个日志文件。日志文件名称中将包含日期时间信息。
当这个参数设置为0时,只会生成两个日志文件相互切换着记录,取值范围0-1024。例如当file_num=0,实例名为pdm时,根据当时的日期时间,生成的日志名称可以为:
dmsql_pdm_20180719_163701.log, 
dmsql_pdm_20180719_163702.log

SWITCH_MODE = 2
表示SQL日志文件切换模式:
	0:不切换;
	1:按文件中记录数量切换;
	2:按文件大小切换;
	3:按时间间隔切换。

SWITCH_LIMIT = 128
不同切换模式SWITCH_MODE下,意义不同:
(1)按数量切换时,一个日志文件中的SQL记录条数达到多少条之后系统会自动将日志切换到另一个文件中。取值范围1000-10000000.
(2)按文件大小切换时,一个日志文件达到该大小后,系统会将日志切换到另一个文件中,单位MB。取值范围1-2000.
(3)按时间间隔切换时,每个指定的时间间隔,按文件新建时间进行文件切换,单位分钟,取值范围1-30000。

ASYNC_FLUSH = 1
是否打开SQL日志异步刷盘功能。
	0:否,采用实时刷盘;
	1:是,采用异步刷盘。

MIN_EXEC_TIME = 0
详细模式下,记录的最小语句执行时间,单位毫秒。执行时间小于该值的语句不记录在日志文件中。取值范围:0-4294967294.

FILE_PATH = ../log
SQL日志文件所在目录路径。默认生成在达梦安装目录的log目录下。

PART_STOR = 0
SQL日志分区存储,表示SQL日志进行分区存储的划分条件。
	0:不划分
	1:USER:根据不同用户分布存储

ITEMS = 0
指定一条SQL日志中应包含的内容,指定方式为ITEMS=位号:位号:位号…。例如ITEMS=3:5:7,表示包含第3、第5、第7位代表的内容。
	0: 表示记录所有的列(等同于同时设置1-12)
	1: TIME 执行时间
	2: SEQNO 服务器的站点号
	3: SESS 操作的会话地址
	4:THRD 线程地址
	5: USER 执行的用户
	6: TRXID 事务ID
	7:STMT 语句地址
	8: APPNAME 客户端工具
	9: IP 客户端IP
	10: STMT_TYPE语句类型。分别为
	11: INFO 记录当前执行的SQL语句
	12: RESULT 运行结果,包括运行用时、影响行数和EXEC_ID

USER_MODE = 0
SQL日志按用户过滤时的过滤模式,取值
	0:关闭用户过滤
	1:白名单模式,只记录列出的用户操作的SQL日志
	2:黑名单模式,列出的用户不记录SQL日志

users = 
打开SVR_LOG_USER_MODE时指定的用户列表。格式为:用户名:用户名:用户名,一般为空串。

EXECTIME_PREC_FLAG = 0
设置SQL日志中执行时间EXECTIME的时间单位。
	0:单位为毫秒MS
	1:单位为微秒US

2.3 开启SQL日志记录 

查看SVR_LOG参数
1、	SQL查询
SQL> select * from v$parameter where name like 'SVR_LOG%';或者
SQL> select * from v$dm_ini where para_name like 'SVR_LOG%';
2、	查看配置文件dm.ini
cat dm.ini | grep SVR_LOG
3、	开启SQL日志记录
sp_set_para_value(1,’SVR_LOG’,1);
4、	调用存储过程生效
call sp_refresh_svr_log_config();

 2.4 SQL日志内容

1 TIME 执行的时间
2 SEQNO 服务器的站点号
3 SESS 操作的 SESS 地址
4 USER 执行的用户
5 TRXID 事务 ID
6 STMT 语句地址
7 APPNAME 客户端工具
8 IP 客户端 IP
9 STMT_TYPE 语句类型
10 INFO 记录内容
11 RESULT 运行结果,包括运行用时和影响行数(可能没有)

 

2.5 关闭SQL日志跟踪记录 

sp_set_para_value(1,’SVR_LOG’,0);

3 达梦 SQL 日志分析工具 DMLOG 

运行环境需预先安装 Java 环境,DMLOG 支持在 Liunx 和 Windows 系统运行。推荐使用 java1.8 版本,linux 最小化安装最少要安装打印服务组件,windows 下不支持 java1.6 版本。

需要初始化页大小为32K的库,进行操作。

程序运行需要在后台数据库建 log_commit 表,建表前会删除同名表。 

java版本

参数文件

[dmdba@KylinV10 DMLOG8.13]$ cat dmlog.properties
#分析非MPP产生的日志为0,MPP产生的日志为1
ismpp=0

#数据库IP地址
ip=192.168.6.110

#数据库端口号
port=5239

#数据库用户名
username=SYSDBA

#数据库密码
password=Dameng123

#根据已存在的数据生成结果为1,根据LOG日志新生成数据为0
use_result=0

#SQL日志的文件夹绝对路径,并保证文件夹中只有SQL日志文件,路径请用两个反杠,例如:D:\\360Downloads\\log
sqlpath=/dm8/log/log_fenxi

#您想分析多少毫秒以上的SQL语句
time=0

#您想分析执行多少次以上的SQL语句
frequency=0

#此参数已废弃,excel中增加一列替换参数后的sql
is_replace=1

#参数队列的长度,默认4000,当出现找不到有效参数时可以适当加大此参数
queue_length=40000

#散点图中最大执行时间ms LEAST(exetime,2000) 
max_exetime=10000

#echarts散点图中最小执行时间ms(DML、SEL、UPD、INS、DEL,不包含DDL、CAL)
min_exetime=100

#取值范围(0~100),echart散点图中取小于min_exetime多少百分比的数据
e_percent=10

#是否生成excel的统计结果
if_excel=1

#日志表的表名
tab_name=log_commit
#此处填入待拆分的TRXID,将把该事务的日志单独写入文件中,如果非空则只做事务拆分,不做其他分析
trx_id=

#待分析事务的日志文件名,此处为空则分析整个文件夹中的所有文件
file_name=

运行

[dmdba@KylinV10 DMLOG8.13]$ java -jar Dmlog_DM_8.13.jar  

 

生成的文件

 

more_than_0_ms_log_result.xls:

 

more_than_0_times_log_result.xls: 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/893680.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

以JavaScript的学习角度看Axios,并以spring boot+vue3为例具体分析实现

什么是Axios Axios 是一个基于 Promise 的 HTTP 客户端,用于在浏览器和 后端 中发送异步的 HTTP 请求。它功能强大、易用,常用于与 API 交互,发送 GET、POST、PUT、DELETE 等请求。 Axios 的主要特点: 支持 Promise Axios 基于 …

鸿蒙应用开发:全面认识鸿蒙系统

前言 随着智能设备的普及和物联网的发展,对操作系统的需求也越来越多样化。鸿蒙操作系统作为一款面向全场景的分布式操作系统,其适用范围非常广泛,从智能手机到家用电器,再到工业设备,都能找到应用场景。特别是在智能…

【含开题报告+文档+PPT+源码】基于SSM的景行天下旅游网站的设计与实现

开题报告 随着互联网的快速发展,旅游业也逐渐进入了数字化时代。作为一个旅游目的地,云浮市意识到了互联网在促进旅游业发展方面的巨大潜力。为了更好地推广云浮的旅游资源,提高旅游服务质量,云浮市决定开发一个专门的旅游网站。…

使用开源的 Vue 移动端表单设计器创建表单

FcDesigner Vant 版是一款基于 Vue3.0 的移动端低代码可视化表单设计器工具,通过数据驱动表单渲染。可以通过拖拽的方式快速创建表单,提高开发者对表单的开发效率,节省开发者的时间。 源码下载 | 演示地址 | 帮助文档 本项目采用 Vue3.0 和 …

数字后端零基础入门系列 | Innovus零基础LAB学习Day1

一 Floorplan 数字IC后端设计如何从零基础快速入门?(内附数字IC后端学习视频) Lab5-1这个lab学习目标很明确——启动Innovus工具并完成设计的导入。 在进入lab之前,我们需要进入我们的FPR工作目录。 其中ic062为个人服务器账户。比如你端…

竞品分析|用户体验五要素|KANO模型

用户体验五要素 我感觉产品的设计师从最底层的战略层确定,再依次上升一层层确定直至最后确定表现层输出给用户的视觉效果。 KANO模型 KANO 模型是东京理工大学教授狩野纪昭(Noriaki Kano)发明的对用户需求分类和优先排序的有用工具,以分析用户需求对用…

harbor 如何做到物理删除镜像 harbor镜像清理脚本

一、背景 相比于nexus,harbor的一大优点是方便及时清理无用的docker镜像。本文就harbor怎么设置清理,梳理一下具体的操作办法。 harbor 版本是 v2.9.0 二、目标 随着我们推送至仓库的镜像越来越多,带来的一个最大运维问题就是存储空间的浪…

SL3037B降压恒压芯片DC24伏输入5伏输出带单片机,电流100mA

一、SL3037B芯片概述 SL3037B是一款内置功率MOSFET的单片降压型开关模式转换器,具有高效、稳定、外围元器件少等特点。它能够在宽输入电源范围(5.5~60V)内实现0.6A的峰值输出电流,并具有出色的线电压和负载调整率。此外&#xff…

利用LangChain实现大语言模型与数据库的交互对话

大语言模型使用LangChain与数据库对话 大型语言模型(LLMs)的兴起在技术上带来了重大转变,使开发者能够创建曾经难以想象的应用程序。LangChain 是一个提示编排工具,利用LLMs的能力改变你与数据库的通信方式。通过LangChain&#…

从零讲解线性回归(Linear Regression)

Linear Regression 线性回归 线性回归是一种简单且常用的技术,用来预测连续变量,假设预测变量(自变量, x_i )和结果变量(因变量, y_i )之间存在线性关系。线性回归公式&#xff08…

Qt自定义一个圆角对话框

如何得到一个圆角对话框? 步骤: 1、继承自QDiaglog 2、去掉系统自带的边框 3、设置背景透明,不设置4个角会有多余的部分出现颜色 4、对话框内部添加1个QWidget,给这个widget设置圆角,并添加到布局中让他充满对话框 5、后续对…

智慧校园打架斗殴检测预警系统 异常奔跑检测系统 Python 和 OpenCV 实现简单

在当今数字化时代,智慧校园建设已成为教育领域的重要发展方向。校园安全作为学校管理的重中之重,如何借助先进的技术手段实现高效、精准的安全监控,成为了教育工作者和技术专家共同关注的焦点。其中,智慧校园打架斗殴检测预警系统…

linux线程 | 线程的控制(上)

前言:本节内容为线程的控制。在本篇文章中, 博主不仅将会带友友们认识接口, 使用接口。 而且也会剖析底层,带领友友们理解线程的底层原理。 相信友友们学完本节内容, 一定会对线程的控制有一个很好的把握。 那么&#…

Spring AI 整体介绍_关键组件快速入门_prompt_embedding等

Spring AI:Java开发者的AI集成新利器 在过去,Java开发者在构建AI应用时面临着缺乏统一框架的问题,导致不同AI服务的集成过程复杂且耗时。Spring AI应运而生,旨在为基于Java的应用程序提供一个标准化、高效且易于使用的AI开发平台…

用PHP爬虫API数据获取商品SKU信息实战指南

在电子商务的精细化运营中,SKU(Stock Keeping Unit,库存单位)信息是商品管理的核心。它不仅包含了商品的规格、价格、库存等关键数据,还直接影响到库存管理、价格策略和市场分析等多个方面。本文将介绍如何使用PHP爬虫…

Java程序设计:spring boot(3)——spring boot核心配置

目录 1 设置 Banner 图标 1.1 Banner 图标⾃定义 1.2 Banner 图标关闭 2 Spring Boot 配置⽂件 3 Starter 坐标 & ⾃动化配置 3.1 Starter坐标配置 3.1.1 Web starter 3.1.2 Freemarker Starter & Thymeleaf starter 3.1.3 JavaMail邮件发送 Starter 3.1.4 引…

mysql--表的约束

目录 理解表的约束和操作 如何理解? 1、空属性null 2、默认值default 3、列描述comment 4、自动填充zorefill 5、主键primary key (1)创建表时指定可以 (2)创建表后指定key (3)删除主…

注册函数和回调函数使用讲解

1.概念 注册和回调函数在C语言编程中非常常见,也经常用到。注册和回调的机制也大量使用在Linux内核中。学会使用注册和回调函数是C语言开发者应当掌握的一项编程技能。 函数的本质在内存上体现的是地址。我们知道函数的地址后,就能够调用这个函数。 …

ESP32移植Openharmony外设篇(1)MQ-2烟雾传感器

外设篇 实验箱介绍 旗舰版实验箱由2部分组成:鸿蒙外设模块(支持同时8个工作)、鸿蒙平板。 其中,鸿蒙平板默认采用RK3566方案。 OpenHarmony外设模块采用底板传感器拓展板方式,底板默认采用ESP32方案,也…

部署Qwen2.5-7b大模型详解

部署Qwen2.5-7b大模型详解 本文参考教程:https://qwen.readthedocs.io/en/latest/getting_started/quickstart.html 下载模型 https://modelscope.cn/organization/qwen 搜索 qwen2.5-7b 可以看到它提供了六个模型,以满足不同的需求,从下…