
1 前言
通过上一篇文章内容,我们对达梦数据库的SQL日志有了更为深入的了解。可以看到,在新环境完成初始化后,sqllog.ini
文件的具体内容如下(实际内容请以实际情况为准)。本次分享的重点在于针对个别参数展开个性化的调整操作,旨在实现将不同类型的日志存放到不同的路径下,以满足多样化的日志管理需求。
[dmdba@dm91 DEM]$ cat sqllog.ini
BUF_TOTAL_SIZE = 10240 #SQLs Log Buffer Total Size(K)(1024~1024000)
BUF_SIZE = 1024 #SQLs Log Buffer Size(K)(50~102400)
BUF_KEEP_CNT = 6 #SQLs Log buffer keeped count(1~100)
[SLOG_ALL]
FILE_PATH = ../log
PART_STOR = 0
SWITCH_MODE = 2
SWITCH_LIMIT = 128
ASYNC_FLUSH = 1
FILE_NUM = 5
ITEMS = 0
SQL_TRACE_MASK = 1
MIN_EXEC_TIME = 0
USER_MODE = 0
USERS =
EXECTIME_PREC_FLAG = 0
[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
[dmdba@dm91 DEM]$
2 参数介绍
这里展开说下dm.ini
中用户请求跟踪相关参数 【SVR_LOG】
参数类型:动态·系统级 默认值:0 功能说明: 控制SQL日志记录功能及模式 ▶ 0:关闭日志记录 ▶ 1:启用标准日志记录(按SQLLOG.INI配置) ▶ 2:启用轮转日志记录(详细模式,按文件数量切换) ▶ 3:启用固定日志记录(简单模式,仅记录时间戳和原始语句)
【SVR_LOG_NAME】
参数类型:动态·系统级 默认值:SLOG_ALL 配置规范: 支持最多10个预设模式名(逗号分隔) 单个模式名≤128字节,超长则失效 总配置长度≤256字节(超限强制使用SLOG_ALL) 模式有效性验证: • 不存在于SQLLOG.INI的名称自动失效 • 全部无效时默认启用SLOG_ALL 修改限制: • 运行期修改需保证新值≤256字节 • 超长报错(ERR_LOG_CONFIG) 示例配置: SVR_LOG_NAME = SLOG_ALL,SLOG_DEL,SLOG_DEL,SLOG_SLT,SLOG_ERROR,SLOG_DDL
【SVR_LOG_PLN_STR】
参数类型:动态·会话级 默认值:1 日志计划记录级别: ├ 0:禁用所有计划记录 ├ 1:记录基础执行计划 └ 2:记录动态语句及游标计划 特性说明: ▶ 会话级参数:不同客户端会话可设置不同值 ▶ 影响范围:仅对当前会话执行的SQL语句生效 ▶ 性能考量:1/2级记录可能增加I/O负载,建议做好合理的规划
3 案例分享
❝注意:
SQL_TRACE_MASK
日志记录的详细程度与参数的日志文件大小呈正相关。也就是说,日志记录得越详尽,相应的参数日志文件就会越大。
因此,在实际生产环境中,为确保系统的稳定高效运行,建议提前对存储资源的分配进行合理规划。这不仅有助于避免因日志文件过大而占用过多存储空间,还能有效防止因 I/O 过度消耗而导致的数据库性能下降。
3.1 创建日志文件存放目录
mkdir {SLOG_DEL,SLOG_ERROR,SLOG_SLT,SLOG_DDL}
[dmdba@dm91 dmback]$ mkdir {SLOG_DEL,SLOG_ERROR,SLOG_SLT}
[dmdba@dm91 dmback]$ ls -l
drwxr-xr-x 2 dmdba dinstall 6 2月 26 09:40 SLOG_DEL
drwxr-xr-x 2 dmdba dinstall 6 2月 26 09:40 SLOG_ERROR
drwxr-xr-x 2 dmdba dinstall 6 2月 26 09:40 SLOG_SLT
drwxr-xr-x 10 dmdba dinstall 248 2月 19 12:44 tomcat-9.0.99
[dmdba@dm91 dmback]$
3.2 备份并修改sqllog.ini文件
[dmdba@dm91 DEM]$ cp sqllog.ini sqllog.ini_bak
[dmdba@dm91 DEM]$ cat sqllog.ini
BUF_TOTAL_SIZE = 10240 #SQLs Log Buffer Total Size(K)(1024~1024000)
BUF_SIZE = 1024 #SQLs Log Buffer Size(K)(50~102400)
BUF_KEEP_CNT = 6 #SQLs Log buffer keeped count(1~100)
[SLOG_ALL]
FILE_PATH = ../log#默认存放在$DM_HOME/log路径
PART_STOR = 0
SWITCH_MODE = 2
SWITCH_LIMIT = 256
ASYNC_FLUSH = 1
FILE_NUM = 5
ITEMS = 0
SQL_TRACE_MASK = 1 #表示记录所有,可以根据需求调整
MIN_EXEC_TIME = 1000
USER_MODE = 0
USERS =
EXECTIME_PREC_FLAG = 0
[SLOG_ERROR]
SQL_TRACE_MASK = 23
FILE_PATH = dm/dmback/SLOG_ERROR #新目录
[SLOG_DDL]
SQL_TRACE_MASK = 3
FILE_PATH = dm/dmback/SLOG_DDL #新目录
[SLOG_LONG_SQL]
SQL_TRACE_MASK = 25
MIN_EXEC_TIME = 60000
[SLOG_DEL]
SQL_TRACE_MASK = 5
MIN_EXEC_TIME = 10
FILE_PATH = dm/dmback/SLOG_DEL #新目录
[SLOG_SLT]
SQL_TRACE_MASK = 7
MIN_EXEC_TIME = 10 #单位毫秒
FILE_PATH = dm/dmback/SLOG_SLT #新目录
[dmdba@dm91 DEM]$
3.3 查询参数并记录
[dmdba@dm91 DEM]$ disql SYSDBA/'"Dameng123"':5237
服务器[LOCALHOST:5237]:处于普通打开状态
登录使用时间 : 4.101(ms)
disql V8
SQL> select PARA_NAME,PARA_VALUE,PARA_TYPE,FILE_VALUE from v$dm_ini where para_name in('SVR_LOG_NAME','SVR_LOG');
行号 PARA_NAME PARA_VALUE PARA_TYPE FILE_VALUE
---------- ------------ ---------- --------- ----------
1 SVR_LOG_NAME SLOG_ALL SYS SLOG_ALL
2 SVR_LOG 0 SYS 0
已用时间: 15.198(毫秒). 执行号:11474501.
SQL>
参数调整可以使用SP_SET_PARA_STRING_VALUE
或者ALTER SYSTEM SET
调整
SP_SET_PARA_STRING_VALUE(2,'SVR_LOG_NAME','SLOG_ALL,SLOG_DEL,SLOG_DEL,SLOG_SLT,SLOG_ERROR,SLOG_DDL');
ALTER SYSTEM SET 'SVR_LOG_NAME' ='SLOG_ALL,SLOG_DEL,SLOG_DEL,SLOG_SLT,SLOG_ERROR,SLOG_DDL' BOTH;
熟悉oracle大佬都了解如何使用,语法如下:
参数详解说明如下
ALTER SYSTEM SET '<参数名称>' =<参数值> [DEFERRED] [MEMORY|BOTH|SPFILE];
<参数名称> 指静态、动态(系统级、会话级)INI 参数名字; <参数值> 指设置该 INI 参数的值; [DEFERRED] 只适用于动态会话级参数,若指定 DEFERRED,则参数值延迟生效,对当前会话不生效,只对新创建的会话生效;若不指定 DEFERRED,则参数值立即生效,对当前会话和新创建的会话都生效。针对动态系统级参数,无论是否指定 DEFERRED,参数值均对所有会话生效,包括所有已经创建的会话以及新创建的会话;针对静态参数,指定 DEFERRED 将报错; [MEMORY|BOTH|SPFILE] 设置 INI 参数修改的位置。其中,MEMORY 只对内存中的 INI 值做修改;SPFILE 则只对 INI 文件中的 INI 值做修改;BOTH 则内存和 INI 文件都做修改。默认情况下,为 MEMORY。对于静态参数,只能指定 SPFILE。

3.4 调整SVR_LOG_NAME参数
SQL> ALTER SYSTEM SET 'SVR_LOG_NAME' ='SLOG_ALL,SLOG_DEL,SLOG_DEL,SLOG_SLT,SLOG_ERROR,SLOG_DDL' BOTH;
DMSQL 过程已成功完成
已用时间: 15.097(毫秒). 执行号:11474502.
SQL> sp_set_para_value(1,'SVR_LOG',1);
DMSQL 过程已成功完成
已用时间: 24.840(毫秒). 执行号:11474503.
使用SP_REFRESH_SVR_LOG_CONFIG重新生效配置
SQL> SP_REFRESH_SVR_LOG_CONFIG();
DMSQL 过程已成功完成
已用时间: 2.500(毫秒). 执行号:11474504.
SQL> select PARA_NAME,PARA_VALUE,PARA_TYPE,FILE_VALUE from v$dm_ini where para_name in('SVR_LOG_NAME','SVR_LOG');
行号 PARA_NAME PARA_VALUE PARA_TYPE FILE_VALUE
---------- ------------ ---------------------------------------------- --------- -------------------------------------------------------
1 SVR_LOG_NAME SLOG_ALL,SLOG_ERROR,SLOG_DDL,SLOG_DEL,SLOG_SLT SYS SLOG_ALL,SLOG_DEL,SLOG_DEL,SLOG_SLT,SLOG_ERROR,SLOG_DDL
2 SVR_LOG 1 SYS 1
已用时间: 12.500(毫秒). 执行号:11630703.
SQL>
SQL> exit
3.5 测试配置参数时候生效
[dmdba@dm91 DEM]$ ls SLOG_SLT/
dmsql_DEM_SLOG_SLT_20250226_090846.log dmsql_DEM_SLOG_SLT_20250226_090852.log
[dmdba@dm91 DEM]$ disql SYSDBA/'"Dameng123"':5237
服务器[LOCALHOST:5237]:处于普通打开状态
登录使用时间 : 5.252(ms)
disql V8
SQL> SP_SET_PARA_STRING_VALUE(2,'SLOG_DEL,SLOG_DEL,SLOG_SLT,SLOG_ERROR,SLOG_DDL');
SP_SET_PARA_STRING_VALUE(2,'SLOG_DEL,SLOG_DEL,SLOG_SLT,SLOG_ERROR,SLOG_DDL');
第1 行附近出现错误[-2207]:无法解析的成员访问表达式[SP_SET_PARA_STRING_VALUE].
已用时间: 2.101(毫秒). 执行号:0.
SQL> exit
[dmdba@dm91 DEM]$ disql SYSDBA/'"Dameng123"':5237
服务器[LOCALHOST:5237]:处于普通打开状态
登录使用时间 : 5.768(ms)
disql V8
SQL> createtable tsql (idint);
操作已执行
已用时间: 11.435(毫秒). 执行号:11483801.
执行DDL
语句后,目录生成对应的日志,记录结果符合预期。如下图所示:
3.6 测试select记录
--插入数据测试
SQL> insertinto tsql values(1);
影响行数 1
已用时间: 2.912(毫秒). 执行号:11630705.
SQL> insertinto tsql values(2);
影响行数 1
已用时间: 3.026(毫秒). 执行号:11630706.
SQL> commit;
操作已执行
已用时间: 1.795(毫秒). 执行号:11630707.
SQL>
SQL> select * from tsql;
行号 ID
---------- -----------
1 1
2 2
执行select
语句后,目录生成对应的日志,记录结果符合预期。如下图所示:
3.7 验证del配置记录
SQL> delete tsql where id=1;
影响行数 1
已用时间: 2.745(毫秒). 执行号:11483807.
SQL> commit;
操作已执行
已用时间: 3.105(毫秒). 执行号:11483808.
SQL> exit
执行delete
语句后,目录生成对应的日志,记录结果符合预期。如下图所示:
4 总结
以上内容是个人针对学习情况所做的总结。若将其应用于生产环境,强烈建议预先做好相关测试工作。
文章转载自国产数据库学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




