关于达梦sql日志开启的相关方法

我们可以通过打开sql日志来对所输入的sql语句进行记录,方便我们对慢sql进行分析解决,至于记录的sql语句包括哪些可以看下图,更改参数的位置是dm.ini中的SQL_TRACE_MASK。

 我们可以通过两种方式打开sql日志的记录功能。

方法一:通过配置文件。跟sql日志相关的文件是dm.ini、sqllog.ini。位于实例安装目录下,     sqllog.ini用于sql日志的配置。 当把INI参数SVR_LOG置为1,才会打开SQL日志。
如果在服务器启动过程中,修改了sqllog.ini文件。修改之后的文件,只要调用过程SP_REFRESH_SVR_LOG_CONFIG() 就会对后面新的会话生效。

  如果sqllog.ini文件存在,且相关配置无错误(sqllog.ini文件默认存在),且数据库SVR_LOG_NAME参数的值与sqllog.ini中模块名相同(默认为SLOG_ALL) ,将数据库SVR_LOG参数设置为1打开SQL日志,此时记录SQL日志属性以sqllog.ini中配置的为准。
如果sqllog.ini文件不存在或者 sqllog.ini 配置错误,SVR_LOG参数设置为1打开SQL日志,SQL日志属性以dm.ini里面配置的相关参数为准。

配置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    = /dm/dmdbms/log         #log文件存放的位置
    PART_STOR    = 0
    SWITCH_MODE  = 2                      #搭个文件达到100M后切换到新的日志文件
    SWITCH_LIMIT   = 100                  
    ASYNC_FLUSH   = 1                     #表示异步记录SQL日志
    FILE_NUM = 20                         #达到20个sql文件后删除第一个日志文件
    ITEMS    = 0 
    SQL_TRACE_MASK  = 7:22:25:28          #表示记录SQL的类型
    MIN_EXEC_TIME = 28                    #表示记录执行时间超过28ms的SQL语句
    USER_MODE   = 0 
    USERS =

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

方法二:使用语句完成sql日志配置

调用存储过程修改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文件中参数。

修改dm.ini中的参数:

SP_SET_PARA_VALUE(1,'SVR_LOG',1);

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

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

欢迎加入社区一起讨论:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值