DM达梦数据库开启SQL日志记录功能
DM达梦数据库开启SQL日志记录功能
配置SQL日志(非必须的配置步骤,与主备集群配置无关,如果没有需求可以跳过配置SQL日志)
sqllog.ini 配置文件用于SQL日志的配置,当且仅当 INI(dm.ini) 参数 SVR_LOG = 1 时使用。SQL日志主要用于慢SQL定位等分析跟踪用途。
SVR_LOG:系统级别配置参数,是否打开SQL日志功能。
0 表示关闭;
1 表示打开;
2 表示按文件中记录数量切换日志文件,日志记录为详细模式;
3 表示不切换日志文件,日志记录为简单模式,只记录时间和原始语句。
SVR_LOG_NAME:系统级别配置参数,默认为 SLOG_ALL ,使用 sqllog.ini 中预设的模式的名称。
sqllog.ini 主要配置参数
# 所有节点修改 sqllog.ini
vi /opt/dm/dmdbms/data/testdb/sqllog.ini
BUF_TOTAL_SIZE = 10240
BUF_SIZE = 1024
BUF_KEEP_CNT = 6
[SLOG_ALL]
FILE_PATH = ../log
PART_STOR = 1 #SQL日志分区存储配置参数,0 表示不划分;1 表示 USER,根据不同用户分布存储
SWITCH_MODE = 2 #日志文件切换模式 2 表示按文件大小切换
SWITCH_LIMIT = 512 #文件大小限制、单位MB
ASYNC_FLUSH = 1 #日志刷盘模式,默认1异步刷盘,0表示实时刷盘(要考虑性能影响)
FILE_NUM = 20 #打印日志文件个数,默认5个,建议配置20
ITEMS = 0 #指定一条SQL日志中应包含的内容,位号:位号:位号...,如果配置为 0 表示记录所有的列(记录SQL全部信息),默认 0。其他内容详情参考后面的内容详情介绍
SQL_TRACE_MASK = 1 #打印全部类型SQL日志,默认 1
MIN_EXEC_TIME = 1500 #详细模式下,记录的最小语句执行时间,单位毫秒
USER_MODE = 0 #SQL日志按用户过滤时的过滤模式。0 表示关闭用户过滤;1 表示白名单模式,只记录列出的用户操作的SQL日志;2 表示黑名单模式,列出的用户不记录SQL日志
USERS = #打开 USER_MODE 时指定的用户列表。格式为:用户名:用户名:用户名...
重启数据库才能生效。
ITEMS支持记录的内容详情:
0 表示记录所有内容
1 TIME 执行的时间
2 SEQNO 服务器的站点号
3 SESS 操作的SESS地址
4 USER 执行的用户
5 TRXID 事务ID
6 STMT 语句地址
7 APPNAME 客户端工具
8 IP 客户端IP
9 STMT_TYPE 语句类型。分别为
[ORA]表示原始语句(服务器从客户端收到的未加分析的语句) 、
[DDL]表示DDL 语句、
[INS]表示INSERT语句、
[DML]表示DML语句、
[CAL]表示CALL语句、
[UPD] 表示UPDATE语句、
[DEL] 表示DELETE 语句、
[SEL]表示SELECT语句、
[LGN]表示登录登出语句
10 INFO 记录内容,记录当前执行的SQL语句
11 RESULT 运行结果,包括运行用时、影响行数和EXEC_ID(可能没有)
12 THRD 线程地址
配置示例:ITEMS = 1:4:5:6:7:8:10
另外也可以在线动态修改参数的方式打开、无需重启数据库、修改立即生效:
修改动态参数开启SQL日志记录功能:
disql SYSDBA/'"password"'@localhost:5236
call SP_SET_PARA_VALUE(1,'SVR_LOG',1);
查询日志记录功能是否开启(0 表示关闭;1/2/3 表示开启):
-- 修改配置(打开)
SP_SET_PARA_VALUE(1,'SVR_LOG',1);
或者(按需)
SP_SET_PARA_VALUE(1,'SVR_LOG',2);
-- 查询配置
SELECT SF_GET_PARA_VALUE (1, 'SVR_LOG');
关闭SQL日志记录功能:
SP_SET_PARA_VALUE(1,'SVR_LOG',0);