达梦数据库sql日志开启和关闭

达梦数据库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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容