达梦数据库sql日志开启之后可以抓取数据库中运行的sql语句,并且包含了sql执行的耗时,sql日志还包括参数信息,错误信息等,SQL 跟踪日志主要用于分析错误和分析性能问题,基于跟踪日志可以对系统运行状态有一个分析,比如,可以挑出系统现在执行速度较慢的 SQL 语句,进而对其进行优化。所以SQL日志功能对于排除数据库执行过的SQL语句或者批量优化SQL语句时此功能尤为重要。
打开 SQL 日志会对系统的性能会有较大影响,一般用于查错和调优的时候才会打开,默认情况下系统是关闭 SQL 跟踪日志的。若需要 SQL 跟踪日志但对日志的实时性没有严格的要求,又希望系统有较高的效率,可以设置 sqllog.ini 参数 SQL_TRACE_MASK 和 MIN_EXEC_TIME 只记录关注的相关记录,减少日志总量;设置 sqllog.ini 参数 ASYNC_FLUSH 打开 SQL 日志异步刷盘功能,以提高系统性能。
操作步骤如下:
1、创建SQL日志存放目录:
mkdir -p /data/dmdbms/log/sql_log
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';
3、修改sqllog.ini文件如下
sqllog.ini用于sql日志的配置,当且仅当INI参数SVR_LOG=1时使用。如果在服务器启动过程中,修改了sqllog.ini文件。修改之后的文件,只要调用过程 SP_REFRESH_SVR_LOG_CONFIG() 就会生效。设置 sql 日志为异步,按照文件大小进行切换,每个 1024M,20 个文件循环写,可根据实际情况修改
cd /data/dmdata/DAMENG
vi sqllog.ini
BUF_TOTAL_SIZE = 10240 #SQLs Log Buffer Total Size(K)(1024~1024000)
BUF_SIZE = 1024 #SQLs Log Buffer Size(K)(50~409600)
BUF_KEEP_CNT = 6 #SQLs Log buffer keeped count(1~100)
[SLOG_ALL]
FILE_PATH = /data/dmdbms/log/sql_log #sql 日志生成路径
PART_STOR = 0
SWITCH_MODE = 2
SWITCH_LIMIT = 1024 #每个日志文件 1024M
ASYNC_FLUSH = 1
FILE_NUM = 20 #循环收集 20 个可以根据实际情况做调整
ITEMS = 0
SQL_TRACE_MASK = 1
MIN_EXEC_TIME = 0
USER_MODE = 0
USERS =
调用存储过程生效,并开启 SQLLOG 日志。
SP_REFRESH_SVR_LOG_CONFIG();
sp_set_para_value(1,'SVR_LOG',1);
--检查 SVR_LOG 参数。
select * from v$parameter where name like 'SVR_LOG';
4、检查SVR_LOG等参数及SQL日志生成情况:
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的值与之际配置的并不同
--检查SQL日志生成情况
ls /data /sql_log
https://eco.dameng.com