达梦数据库sql日志开启之后可以抓取数据库中运行的sql语句,并且包含了sql执行的耗时,sql日志还包括参数信息,错误信息等,对于排除数据库执行过的SQL语句或者批量优化SQL语句时此功能尤为重要。
官方文档中对sql日志的描述如下。建议开启sql日志时开启异步SQL,这样对数据库系统运行的影响较小。
操作步骤如下:
1、创建SQL日志存放目录:
mkdir -p /opt/dmdbms/bin/bin/logcommit
2、检查SVR_LOG参数:
检查SVR_LOG参数是否为1,该参数的相关取值含义如下图
select * from v$parameter where para_name like ‘SVR_LOG%’;
或
select * from v$dm_ini where para_name = ‘SVR_LOG’;
或
查询DM数据库服务器的dm.ini文件
grep SVR_LOG dm.ini
3、修改sqllog.ini文件如下
sqllog.ini
用于
sql
日志的配置
,当且仅当
INI
参数
SVR_LOG=1
时使用。
如果在服务器启动过程中,修改了sqllog.ini
文件。修改之后的文件,只要调用过程 SP_REFRESH_SVR_LOG_CONFIG() 就会生效。
cd /data/dmdata/OA
vi sqllog.ini
BUF_TOTAL_SIZE = 10240
BUF_SIZE = 1024
BUF_KEEP_CNT = 6
[SLOG_ALL] FILE_PATH = /opt/dmdbms/bin/bin/logcommit #创建的sql日志存放目录
PART_STOR = 0
SWITCH_MODE = 2 #表示SQL日志文件切换的模式,2表示按文件大小切换
SWITCH_LIMIT = 256 #单个文件大小256M
ASYNC_FLUSH = 1 #开启异步SQL日志
FILE_NUM = 6 #总共记录6个日志文件
ITEMS = 0
SQL_TRACE_MASK = 1 #LOG记录的语句类型掩码,默认为1,可以不修改
MIN_EXEC_TIME = 0
USER_MODE = 0
USERS =
sqllog.ini详细配置如下图
设置sql日志为异步,按照文件大小进行切换,每个256M,6个文件循环写。根据实际情况修改
调用存储过程生效
SP_REFRESH_SVR_LOG_CONFIG();
4、检查SVR_LOG等参数:
select * from v$process; --当开启了sql日志时此视图的trace_name字段会显示实际的SQL日志路径
也可以再次到实际的路径下查看是否产生了SQL日志
注意,以下SQL也可以查询SQL日志的路径,但查到的sql日志的路径(SVR_LOG_FILE_PATH的值)并不正确。即便重启数据库仍然查到的是错误的值
select * from v$parameter where para_name like ‘SVR_LOG%’; --查看SVR_LOG_FILE_PATH的值与之际配置的并不同
select * from v$dm_ini where para_name like ‘SVR_LOG%’; --查看SVR_LOG_FILE_PATH的值与之际配置的并不同