ITPub博客

首页 > 数据库 > 国内数据库 > 达梦慢SQL记录

达梦慢SQL记录

原创 国内数据库 作者:eternayong 时间:2022-10-03 16:30:15 0 删除 编辑

如下两种配置方法可打开sql日志的记录功能。


方法一:操作系统层面编辑配置文件。

sql日志记录相关的参数是SVR_LOG ,有如下值:

0: 关闭;
1: 打开,按照 SQLLOG.INI 中配置记录 SQL 日志;
2: 打开, 按文件中记录数量切换日志文件, 日志记录为详细模式;
3: 打开, 不切换日志文件,日志记录为简单模式,只记录时间和原始语句;


当 SVR_LOG=1 时,表示启用SQLLOG.INI配置,但同时 dm.ini中 参数 SVR_LOG_NAME必须和 sqllog.ini 中的SVR_LOG_NAME 名称一样(默认为SLOG_ALL), sqllog.ini 配置块才会生效。 若SVR_LOG 为 1,但不存在 sqllog.ini 或 sqllog.ini 配置错误, 则配置无效,此时,使用 DM.INI 中的系统默认值。


sqllog.ini,和dm.ini一样,均位于实例安装目录下。

如果在服务器启动过程中,修改了sqllog.ini文件。修改之后的文件,只要调用过程SP_REFRESH_SVR_LOG_CONFIG() 就会对后面新的会话生效。

配置sqllog.ini,查看数据库的相关参数:

SQL> SELECT para_name,para_value,sess_value,file_value FROM V$DM_INI where para_name in ('SVR_LOG','SVR_LOG_NAME');

行号     PARA_NAME    PARA_VALUE SESS_VALUE FILE_VALUE
---------- ------------ ---------- ---------- ----------
1          SVR_LOG_NAME SLOG_ALL   SLOG_ALL   SLOG_ALL
2          SVR_LOG      0          0          0

#SVR_LOG=0表示未打开SQL日志
对配置文件进行修改,一般采用异步sql日志,即ASYNC_LIMIT设置为1,注意中括号的模块名需要和dm.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    = /dm8/data/log         #log文件存放的位置
        PART_STOR    = 0
        SWITCH_MODE  = 2                              #文件达到100M后切换到新的日志文件
        SWITCH_LIMIT   = 100                  
        ASYNC_FLUSH   = 1                              #表示异步记录SQL日志
        FILE_NUM = 20                                     #保留文件最大数,达到最大后删除第一个
        ITEMS    = 0
        SQL_TRACE_MASK  = 7:22:25:28          #表示记录SQL的类型,详见下图解释
        MIN_EXEC_TIME = 100                         #表示记录执行时间超过100ms的SQL语句
        USER_MODE   = 0
        USERS =

在更改完配置文件后可以选择重启,也可以调用存储过程刷新配置文件:SP_REFRESH_SVR_LOG_CONFIG() 对后面新的会话生效。


SQL_TRACE_MASK说明如下:



方法二:数据库存储过程及函数完成sql日志配置


修改dm.ini中的参数:
SP_SET_PARA_VALUE(1,'SVR_LOG',1);



修改sqllog.ini中参数:

    #记录SQL的类型
    SF_SET_SYSTEM_PARA_VALUE('SQL_TRACE_MASK','7:22:25:28',0,1);
     
    #异步记录SQL日志
    SF_SET_SYSTEM_PARA_VALUE('SVR_LOG_ASYNC_FLUSH',1,0,1);
     
    #记录执行时间超过20ms的SQL语句
    SF_SET_SYSTEM_PARA_VALUE('SVR_LOG_MIN_EXEC_TIME',20,0,1);  
     
    #总共记录20个日志文件
    SF_SET_SYSTEM_PARA_VALUE('SVR_LOG_FILE_NUM',20,0,1);

第一个参数为ini 参数的参数名。
第二个参数为要设置的新值。
第三个参数为是否立即生效。为 0 表示当前 session 修改的参数立即生效,为 1 表示当前 session 不生效,后续再生效,默认为 0。
第四个参数为scope,取值为 0、1、2 。0表示修改内存中的参数值,1表示修改内存和INI文件中参数值,0和1都只能修改动态的配置参数。2表示修改INI文件中参数。


最后检查确认配置:


SELECT para_name,para_value,sess_value,file_value FROM V$DM_INI where para_name in ('SVR_LOG','SVR_LOG_NAME');可以查看sql是否启动成功,为1则启动成功。


生成的日志名称一般为dmsql_实例名_日期时间.LOG,在数据库中执行增删改查,就可以在日志文件中看到对应的操作时间及其他信息。



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70022022/viewspace-2917024/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2022-09-13

  • 博文量
    2
  • 访问量
    1891