DM8开启开启 SQLLOG
DM8开启 SQLLOG 功能,可以跟踪和记录DM数据库所有或指定 SQL 语句的执行情况,通常用于性能优化、故障排查、审计追踪。
本文仅写如何开启 SQLLOG ,不涉及性能优化。
1、开启 SQLLOG
编辑 sqllog.ini 文件
在 dm.ini 文件同目录下,编辑 sqllog.ini 文件,该文件是配置 SQLLOG 的位置、大小、文件个数等信息
# 全局配置区
# SQL日志缓存占用空间上限,生产256G为例,可调为最大
BUF_TOTAL_SIZE = 1024000 #SQLs Log Buffer Total Size(K)(1024~1024000)
# 一块SQL日志缓存的空间大小
BUF_SIZE = 10240 #SQLs Log Buffer Size(K)(50~409600)
# 系统保留的SQL日志缓存的个数
BUF_KEEP_CNT = 20 #SQLs Log buffer keeped count(1~100)
# 模式配置区
[SLOG_ALL]
FILE_PATH = /data/sqllog # SQLLOG所在目录
PART_STOR = 0 # 日志分区存储的划分条件,0不划分,1根据用户划分(就是日志名带用户名)
SWITCH_MODE = 2 # 日志文件切换模式:0不切换 1按SQL数量切换 2按文件大小切换 3按时间间隔切换
SWITCH_LIMIT = 1024 # 默认128MB,可选 1~2000MB,生产配256或512、1024,配置大一些
ASYNC_FLUSH = 1 # 日志刷盘,0实时刷盘 1异步刷盘,生产配置1
FILE_NUM = 50 # 生产中配置 50。总共记录多少个日志文件,达到50个,生成新的,然后删除最早的一个。可选 2~1024 .
ITEMS = 0
SQL_TRACE_MASK = 1 # 指定SQL日志中需要被记录的语句类型,参照附录1
MIN_EXEC_TIME = 0 # 记录语句最小的执行时间(毫秒) SQL执行时间小于这个值就不记录
USER_MODE = 0 # 0关闭用户过滤;1记录列出的用户SQL;2不记录列出的用户SQL
USERS = # 列出的用户
EXECTIME_PREC_FLAG = 0 # 设置SQL日志中执行时间EXECTIME的时间单位。0:单位为毫秒MS;1:单位为微秒US
[SLOG_ERROR]
SQL_TRACE_MASK = 23
FILE_PATH = ../log
[SLOG_DDL]
SQL_TRACE_MASK = 3
[SLOG_LONG_SQL]
SQL_TRACE_MASK = 25
MIN_EXEC_TIME = 60000
2、修改 SVR_LOG 参数
修改的方式一:从 dm.ini 里修改,修改文件需要重启达梦数据库
#request trace
SVR_LOG_NAME = SLOG_ALL #Using which sql log sys in sqllog.ini
SVR_LOG = 1 #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.
• 参数 SVR_LOG = 1 为打开
• 参数 SVR_LOG_NAME 对应着 sqllog.ini 里边的日志名称
修改的方式二:通过 SQL 语句在线修改,即时生效,无需重启数据库(推荐)
-- 修改 SVR_LOG = 1
SP_SET_PARA_VALUE(1,'SVR_LOG',1);
-- 刷新 SQLLOG 配置
SP_REFRESH_SVR_LOG_CONFIG();
执行后,达梦数据库会自动在 sqllog 目录下生成 SQL 日志文件。
到这里配置 SQLLOG 就完成。
本文仅写如何开启 SQLLOG ,不涉及性能优化。
1、开启 SQLLOG
编辑 sqllog.ini 文件
在 dm.ini 文件同目录下,编辑 sqllog.ini 文件,该文件是配置 SQLLOG 的位置、大小、文件个数等信息
# 全局配置区
# SQL日志缓存占用空间上限,生产256G为例,可调为最大
BUF_TOTAL_SIZE = 1024000 #SQLs Log Buffer Total Size(K)(1024~1024000)
# 一块SQL日志缓存的空间大小
BUF_SIZE = 10240 #SQLs Log Buffer Size(K)(50~409600)
# 系统保留的SQL日志缓存的个数
BUF_KEEP_CNT = 20 #SQLs Log buffer keeped count(1~100)
# 模式配置区
[SLOG_ALL]
FILE_PATH = /data/sqllog # SQLLOG所在目录
PART_STOR = 0 # 日志分区存储的划分条件,0不划分,1根据用户划分(就是日志名带用户名)
SWITCH_MODE = 2 # 日志文件切换模式:0不切换 1按SQL数量切换 2按文件大小切换 3按时间间隔切换
SWITCH_LIMIT = 1024 # 默认128MB,可选 1~2000MB,生产配256或512、1024,配置大一些
ASYNC_FLUSH = 1 # 日志刷盘,0实时刷盘 1异步刷盘,生产配置1
FILE_NUM = 50 # 生产中配置 50。总共记录多少个日志文件,达到50个,生成新的,然后删除最早的一个。可选 2~1024 .
ITEMS = 0
SQL_TRACE_MASK = 1 # 指定SQL日志中需要被记录的语句类型,参照附录1
MIN_EXEC_TIME = 0 # 记录语句最小的执行时间(毫秒) SQL执行时间小于这个值就不记录
USER_MODE = 0 # 0关闭用户过滤;1记录列出的用户SQL;2不记录列出的用户SQL
USERS = # 列出的用户
EXECTIME_PREC_FLAG = 0 # 设置SQL日志中执行时间EXECTIME的时间单位。0:单位为毫秒MS;1:单位为微秒US
[SLOG_ERROR]
SQL_TRACE_MASK = 23
FILE_PATH = ../log
[SLOG_DDL]
SQL_TRACE_MASK = 3
[SLOG_LONG_SQL]
SQL_TRACE_MASK = 25
MIN_EXEC_TIME = 60000
2、修改 SVR_LOG 参数
修改的方式一:从 dm.ini 里修改,修改文件需要重启达梦数据库
#request trace
SVR_LOG_NAME = SLOG_ALL #Using which sql log sys in sqllog.ini
SVR_LOG = 1 #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.
• 参数 SVR_LOG = 1 为打开
• 参数 SVR_LOG_NAME 对应着 sqllog.ini 里边的日志名称
修改的方式二:通过 SQL 语句在线修改,即时生效,无需重启数据库(推荐)
-- 修改 SVR_LOG = 1
SP_SET_PARA_VALUE(1,'SVR_LOG',1);
-- 刷新 SQLLOG 配置
SP_REFRESH_SVR_LOG_CONFIG();
执行后,达梦数据库会自动在 sqllog 目录下生成 SQL 日志文件。
到这里配置 SQLLOG 就完成。
本文来自博客园,作者:花之旭,转载请注明原文链接:https://www.cnblogs.com/huazhixu/p/19356198
浙公网安备 33010602011771号