DM数据库中SQL日志的作用,及其基本操作

        开启DM数据库的SQL日志功能,可以记录已经执行的SQL语句。通过分析日志,可以找出慢的SQL语句,对于SQL语句优化等操作,尤为重要。

        前情说明:每创建一个 DM 数据库,就会自动生成 dm.ini 文件。dm.ini 是 DM 数据库启动所必须的配置文件。dm.ini中,有三种参数属性:静态,可以被动态修改,修改后重启服务器才能生效;动态,可以被动态修改,修改后即时生效。动态参数又分为会话级和系统级两种。会话级参数被修改后,新参数值只会影响新创建的会话,之前创建的会话不受影响;系统级参数的修改则会影响所有的会话。

        手动,不能被动态修改,必须手动修改 dm.ini 参数文件,然后重启才能生效。动态修改是指 DBA 用户可以在数据库服务器运行期间,通过调用系统过程SP_SET_PARA_VALUE()、SP_SET_PARA_DOUBLE_VALUE()和SP_SET_PARA_STRING_VALUE()对参数值进行修改。而与SQL日志相关的参数SVR_LOG、SVR_LOG_NAME都属于动态系统级。

参数说明:

在dm.ini配置文件中,SVR_LOG缺省值为0。可选参数说明:是否打开 SQL 日志功能,0:表示关闭;1:表示打开;2:按文件中记录数量切换日志文件,日志记录为详细模式;3:不切换日志文件,日志记录为简单模式,只记录时间和原始语句。SVR_LOG_NAME缺省值为SLOG_ALL,使用 SQLLOG.INI 中预设的模式的名称。

总结以上,可以有俩种方式配置SQL日志:

第一种:直接修改dm.ini和sqllog.ini配置文件。只有先把 dm.ini配置文件中,参数 SVR_LOG 置为 1,且 SVR_LOG_NAME 为 SLOG_ALL 时,sqllog.ini 中名称为 SLOG_ALL 的配置块才会生效。若 SVR_LOG 为 1,但不存在sqllog.ini 或 sqllog.ini 配置错误,则仍旧使用 dm.ini 中的“用户请求跟踪相关参数”。

配置sqllog.ini,查看dm.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

[SLOG_ALL]

    FILE_PATH    = ..\log         #log文件存放的位置

    PART_STOR    = 0

    SWITCH_MODE  = 2              #表示 SQL 日志文件切换的模式:0:不切换;1:按文件中记录数量切换;2:按文件大小切换;3:按时间间隔切换

    SWITCH_LIMIT   = 128                 

    ASYNC_FLUSH   = 1             #是否打开异步 SQL 日志功能;1:打开

    FILE_NUM = 5                  #达到5个sql文件后删除第一个日志文件

    ITEMS    = 0                  #配置 SQL 日志记录中的那些列要被记录,0:表示记录所有的列

    SQL_TRACE_MASK  = 1           #LOG 记录的语句类型掩码;1:全部记录

    MIN_EXEC_TIME = 0             #详细模式下,记录的最小语句执行时间

    USER_MODE   = 0

    USERS =

完整参数配置可参考官网文档:https://eco.dameng.com/document/dm/zh-cn/pm/physical-storage.html

在更改完配置文件后可以选择重启,也可以调用存储过程刷新配置文件:

SP_REFRESH_SVR_LOG_CONFIG() 对后面新的会话生效。

第二种:使用系统存储过程和函数语句完成sql日志配置

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

#记录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);

#记录执行时间超过30ms的SQL语句

SF_SET_SYSTEM_PARA_VALUE('SVR_LOG_MIN_EXEC_TIME',30,0,1);  

#总共记录30个日志文件

SF_SET_SYSTEM_PARA_VALUE('SVR_LOG_FILE_NUM',30,0,1);

SF_SET_SYSTEM_PARA_VALUE功能说明:修改系统整型、double、varchar 的静态配置参数或动态配置参数。

定义:void SF_SET_SYSTEM_PARA_VALUE (

paraname varchar(256),

value bigint\double\varchar(256),

deferred int,

scope int)

参数说明:

paraname:ini 参数的参数名。value:要设置的新值。deferred:是否立即生效。为 0 表示当前 session 修改的参数立即生效,为 1 表示当前 session 不生效,后续再生效,默认为 0。

scope:取值为 0、1、2 。0 表示修改内存中的参数值,1 表示修改内存和INI 文件中参数值,0 和 1 都只能修改动态的配置参数。2 表示修改 INI 文件中参数,此时可用来修改静态配置参数和动态配置参数。

生成的日志名称一般为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则启动成功。

 更多有关达梦数据库相关内容,可通过以下链接查看

达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值