达梦数据库-SQL日志记录

达梦数据库开启SQL日志记录功能

达梦数据库的SQL日志功能可以将在数据库执行的SQL语句完美的记录下来。通过记录的日志可以找出慢的SQL语句,在进一步进行分析处理。
开启达梦SQL语句记录一共有两种方法:
1、通过配置sqllog.ini
2、通过执行系统过程修改dm.ini

一、sqllog.ini 配置文件介绍

sqllog.ini文件位置

在这里插入图片描述

打开sqlog.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    = ../log  
    PART_STOR    = 0 
    SWITCH_MODE  = 0
    SWITCH_LIMIT   = 0
    ASYNC_FLUSH   = 0
    FILE_NUM = 0
    ITEMS    = 0
    SQL_TRACE_MASK  = 0
    MIN_EXEC_TIME = 0
    USER_MODE   = 0
    USERS =

配置文件详细说明

在这里插入图片描述

二、配置sqllog.ini举例

举例:记录所有用户的原始SELECT语句大于100ms以上的语句,并记录参数信息、数据库类型和值。sql日志文件放在/dm/dmdbms/log下以dmsql_实例名_日期时间.LOG,单个日志文件达到200M后切换到新的日志文件,总共记录10个日志文件。

[dmdba@localhost ~]$ cd /opt/dmdbms/data/DAMENG/
[dmdba@localhost 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    = /opt/dmdbms/log   
    PART_STOR    = 0 
    SWITCH_MODE  = 2
    SWITCH_LIMIT   = 200
    ASYNC_FLUSH   = 1
    FILE_NUM = 10
    ITEMS    = 0
    SQL_TRACE_MASK  = 7:27:28
    MIN_EXEC_TIME = 100
    USER_MODE   = 0
    USERS =
设置SVR_LOG参数为1,打开SQL日志

SP_SET_PARA_VALUE(1,‘SVR_LOG’,1);

[dmdba@localhost ~]$ cd /opt/dmdbms/bin
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@localhost:5236

服务器[localhost:5236]:处于普通打开状态
登录使用时间: 7.548(毫秒)
disql V8
SQL> SP_SET_PARA_VALUE(1,'SVR_LOG',1);
DMSQL 过程已成功完成
已用时间: 31.549(毫秒). 执行号:4.
SQL> exit
[dmdba@localhost bin]$ 
注意!!!! 只有把INI参数SVR_LOG置为1,且SVR_LOG_NAME为SLOG_ALL时,sqllog.ini中名称为SLOG_ALL的配置块才会生效。若SVR_LOG为1,但不存在sqllog.ini或sqllog.ini配置错误,则仍旧使用dm.ini中的相关参数.
验证SQL日志记录的信息

测试环境是安装的达梦DEM工具,以下是达梦DEM工具的SQL查询语句。

[dmdba@localhost log]$ cd /opt/dmdbms/log/
[dmdba@localhost log]$ ls
DmAPService.log     dm_DMSERVER_202009.log  dmsql_DMSERVER_20200921_154946.log  dm_unknown_202009.log  install.log
dm_dmap_202009.log  DmServiceDMSERVER.log   dmsvc_sh.log                        install_ant.log        tool.log
[dmdba@localhost log]$ tail -f dmsql_DMSERVER_20200921_154946.log 
2020-09-21 15:49:59.201 (EP[0] sess:0x7fc9d80112f8 thrd:3194 user:SYSDBA trxid:1952127 stmt:0x7fc9d8033af0 appname: ip:::ffff:127.0.0.1) [ORA]: /***DEM***/select drs.id,drs.ddfs_id,drs.gmt_create,drs.gmt_modify,drs.mf_id,drs.auto_restart,drs.watcher_is_stop,drs.drs_id,drs.inst_name,drs.ip_address,drs.port,drs.grp_id,drs.grp_name,drs.mode$,drs.ts,drs.bin_path,drs.ini_path,drs.service_name ,(select count(1) from dem.dma_alert_his where exe_id = drs.id and valid = 1) alert_count from dem.dma_ddfs_drs drs where drs.flag=1  and drs.mf_id = ?
2020-09-21 15:49:59.201 (EP[0] sess:0x7fc9d80112f8 thrd:3194 user:SYSDBA trxid:1952127 stmt:0x7fc9d8033af0 appname: ip:::ffff:127.0.0.1) PARAMS(SEQNO, TYPE, DATA)={(0, VARCHAR, '000C29C5A229525400148874')}
2020-09-21 15:49:59.201 (EP[0] sess:0x7fc9d80112f8 thrd:3194 user:SYSDBA trxid:1952127 stmt:0x7fc9d8033af0 appname: ip:::ffff:127.0.0.1) [ORA]: /***DEM***/select dcs.id,dcs.ddfs_id,dcs.gmt_create,dcs.gmt_modify,dcs.mf_id,dcs.ddfs_db_id,dcs.port,dcs.micro_size,dcs.great_size,dcs.page_size,dcs.ts,dcs.ip_address,dcs.bin_path,dcs.ini_path,dcs.service_name,(select count(1) from dem.dma_alert_his where exe_id = dcs.id and valid = 1) alert_count from dem.dma_ddfs_dcs dcs where dcs.flag=1  and dcs.mf_id = ? order by dcs.ddfs_db_id 
2020-09-21 15:49:59.202 (EP[0] sess:0x7fc9d80112f8 thrd:3194 user:SYSDBA trxid:1952127 stmt:0x7fc9d8033af0 appname: ip:::ffff:127.0.0.1) PARAMS(SEQNO, TYPE, DATA)={(0, VARCHAR, '000C29C5A229525400148874')}
2020-09-21 15:49:59.202 (EP[0] sess:0x7fc9d80112f8 thrd:3194 user:SYSDBA trxid:0 stmt:0x7fc9d8033af0 appname: ip:::ffff:127.0.0.1) [ORA]: /***DEM***/select db.id,db.ddfs_id, db.gmt_create, db.gmt_modify, db.mf_id,db.ip_address,db.port,db.username,db.password,db.mode,db.bin_path,db.ini_path,db.service_name,(select count(1) from dem.dma_alert_his where exe_id = db.id and valid = 1) alert_count,mf.os_name,mf.outer_ip,mf.inner_ip  from dem.dma_ddfs_db db left join dem.dma_valid_mf_view mf on db.mf_id=mf.id  where db.flag=1  and db.ddfs_id = ? order by db.mode,db.id 
2020-09-21 15:49:59.202 (EP[0] sess:0x7fc9d80112f8 thrd:3194 user:SYSDBA trxid:1952128 stmt:0x7fc9d8033af0 appname: ip:::ffff:127.0.0.1) PARAMS(SEQNO, TYPE, DATA)={(0, DEC, NULL)}

修改sqllog.ini文件后,可以调用过程SP_REFRESH_SVR_LOG_CONFIG() 对后面新的会话生效。

三、dm.ini配置文件详细介绍

在这里插入图片描述

--#记录SQL的类型
SF_SET_SYSTEM_PARA_VALUE('SQL_TRACE_MASK','7::25:27:28',0,1); 
--#异步记录SQL日志
SF_SET_SYSTEM_PARA_VALUE('SVR_LOG_ASYNC_FLUSH',1,0,1);

--#记录执行时间超过100ms的SQL语句
SF_SET_SYSTEM_PARA_VALUE('SVR_LOG_MIN_EXEC_TIME',100,0,1);  
--#总共记录多少个日志文件
SF_SET_SYSTEM_PARA_VALUE('SVR_LOG_FILE_NUM',20,0,1);
--#开启SQL日志
SP_SET_PARA_VALUE(1,'SVR_LOG',1);
--#关闭SQL日志
SP_SET_PARA_VALUE(1,'SVR_LOG',0);

SF_SET_SYSTEM_PARA_VALUE	(paraname	varchar(256),	value t64\double\varchar256, deferred int,	scope int64)

该过程用于修改系统整型、double、varchar 的静态配置参数或动态配置参数。
DEFERRED 参数,为 0 表示当前 session 修改的参数立即生效,为 1 表示当前 session不生效,后续再生效,默认为 0。
SCOPE 参数为 1 表示在内存和 INI 文件中都修改参数值,此时只能修改动态的配置参数。参数为 2 表示只在 INI 文件中修改配置参数,此时可用来修改静态配置参数和动态配置参数。

四、修改dm.ini实现SQL语句的记录

注意!!!!除了配置sqllog.ini 以外,还可以配置dm.ini中相关数据库参数。但是需要注意的是,如果sqllog.ini配置文件存在且配置正确,那么SQL日志以sqllog.ini中的配置来记录符合条件的SQL信息。

举例:记录所有用户的原始SELECT语句大于100ms以上的语句,并记录参数信息、数据库类型和值。sql日志文件放在/dm/dmdbms/log下以dmsql_实例名_日期时间.LOG,单个日志文件达到1000条后切换到新的日志文件,共记录20个日志文件。

[dmdba@localhost log]$ 
[dmdba@localhost log]$ cd /opt/dmdbms/data/DAMENG/
[dmdba@localhost DAMENG]$ ls
bak           ctl_bak       DAMENG02.log  DMHR.DBF  dminit20200917141856.log  HMAIN     rep_conflict.log  sqllog.ini  TEMP.DBF
BOOKSHOP.DBF  DAMENG01.log  dm.ctl        dm.ini    dm_service.prikey         MAIN.DBF  ROLL.DBF          SYSTEM.DBF  trace
[dmdba@localhost DAMENG]$ mv sqllog.ini sqllog.ini.bak
[dmdba@localhost DAMENG]$ 
[dmdba@localhost DAMENG]$ cd /opt/dmdbms/bin
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 6.753(毫秒)
disql V8
SQL> SF_SET_SYSTEM_PARA_VALUE('SQL_TRACE_MASK','7:25:27:28',0,1); 

SF_SET_SYSTEM_PARA_VALUE('SVR_LOG_ASYNC_FLUSH',1,0,1);

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

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

SP_SET_PARA_VALUE(1,'SVR_LOG',1);DMSQL 过程已成功完成
已用时间: 5.762(毫秒). 执行号:33463.
SQL>DMSQL 过程已成功完成
已用时间: 4.114(毫秒). 执行号:33464.
SQL> DMSQL 过程已成功完成
已用时间: 4.322(毫秒). 执行号:33465.
SQL>DMSQL 过程已成功完成
已用时间: 4.168(毫秒). 执行号:33466.
SQL> exit;
[dmdba@localhost bin]$ 
[dmdba@localhost bin]$ cd /opt/dmdbms/log/
[dmdba@localhost log]$ ls
DmAPService.log     dm_DMSERVER_202009.log  dmsql_DMSERVER_20200921_154946.log  dmsvc_sh.log           install_ant.log  tool.log
dm_dmap_202009.log  DmServiceDMSERVER.log   dmsql_DMSERVER.log                  dm_unknown_202009.log  install.log
[dmdba@localhost log]$ tail -f dmsql_DMSERVER.log 
2020-09-21 16:55:08.293 (EP[0] sess:0x7fc9dc0112f8 thrd:3193 user:SYSDBA trxid:1974144 stmt:0x7fc9dc033af0 appname: ip:::ffff:127.0.0.1) PARAMS(SEQNO, TYPE, DATA)={(0, BIGINT, 1600678508274), (1, VARCHAR, '1600332513156'), (2, BIGINT, 140334902350584), (3, TEXT, ), (4, TIMESTAMP, 2020-09-21 16:55:08), (5, VARCHAR, 'SYSDBA'), (6, VARCHAR, '::ffff:192.168.1.32'), (7, VARCHAR, ''), (8, VARCHAR, 'ACTIVE'), (9, BIGINT, 0), (10, BIGINT, 1), (11, BIGINT, 2640), (12, BIGINT, 601), (13, BIGINT, 2), (14, BIGINT, 0), (15, BIGINT, 0), (16, BIGINT, 0), (17, BIGINT, 0), (18, BIGINT, 0), (19, BIGINT, 0), (20, BIGINT, 0), (21, BIGINT, 0), (22, BIGINT, 0), (23, BIGINT, 0), (24, BIGINT, 0), (25, BIGINT, 0), (26, BIGINT, 0)}
2020-09-21 16:55:10.299 (EP[0] sess:0x7fc9dc0112f8 thrd:3193 user:SYSDBA trxid:0 stmt:0x7fc9dc033af0 appname: ip:::ffff:127.0.0.1) [ORA]: select 1
2020-09-21 16:55:10.300 (EP[0] sess:0x7fc9dc0112f8 thrd:3193 user:SYSDBA trxid:0 stmt:0x7fc9dc033af0 appname: ip:::ffff:127.0.0.1) [ORA]: /***DEM***/insert into dem.dma_mainframe_stat(mf_id, ts, cpu_user_p, cpu_sys_p, cpu_wait_p, cpu_used_p, mem_total, mem_used, swap_total, swap_used, swap_page_in, swap_page_out, disk_total, disk_used, disk_i_speed, disk_o_speed, net_r_speed, net_t_speed) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2020-09-21 16:55:10.300 (EP[0] sess:0x7fc9dc0112f8 thrd:3193 user:SYSDBA trxid:1974146 stmt:0x7fc9dc033af0 appname: ip:::ffff:127.0.0.1) PARAMS(SEQNO, TYPE, DATA)={(0, VARCHAR, '000C29032D66525400148874'), (1, BIGINT, 1600678507771), (2, DEC, 0), (3, DEC, 0.49), (4, DEC, 0), (5, DEC, 0.49), (6, BIGINT, 1907818496), (7, BIGINT, 1479241728), (8, BIGINT, 2147479552), (9, BIGINT, 561774592), (10, BIGINT, 22543), (11, BIGINT, 161951), (12, BIGINT, 18849792), (13, BIGINT, 8033080), (14, DEC, 0), (15, DEC, 4091.908092), (16, DEC, 1484.55), (17, DEC, 4198.4)}
2020-09-21 16:55:10.653 (EP[0] sess:0x7fc9dc0112f8 thrd:3193 user:SYSDBA trxid:0 stmt:0x7fc9dc033af0 appname: ip:::ffff:127.0.0.1) [ORA]: select 1
2020-09-21 16:55:10.654 (EP[0] sess:0x7fc9dc0112f8 thrd:3193 user:SYSDBA trxid:0 stmt:0x7fc9dc033af0 appname: ip:::ffff:127.0.0.1) [ORA]: insert into dem.dma_database_event(ts, db_id, event#, event, total_waits, time_waited, time_waited_micro, average_wait_micro, smax_time, smin_time, wait_class#, wait_class) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2020-09-21 16:55:10.654 (EP[0] sess:0x7fc9dc0112f8 thrd:3193 user:SYSDBA trxid:1974148 stmt:0x7fc9dc033af0 appname: ip:::ffff:127.0.0.1) PARAMS(SEQNO, TYPE, DATA)={(0, BIGINT, 1600678510645), (1, VARCHAR, '1600332513156'), (2, INTEGER, 9), (3, VARCHAR, 'dbfile extend'), (4, INTEGER, 2), (5, INTEGER, 0), (6, BIGINT, 1179), (7, INTEGER, 589), (8, INTEGER, 633), (9, INTEGER, 546), (10, INTEGER, 1), (11, VARCHAR, 'System I/O')}

由于测试环境是安装的达梦DEM工具,以上是达梦DEM工具的SQL查询语句。

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值