达梦数据库打开sql日志文件

以下引用达梦官方手册

用户在 dm.ini 中配置 SVR_LOG 参数后就会打开 SQL 日志。
SQL 日志文件是一个纯文本文件。当 PART_STOR=0 时,以“dmsql_实例名_日期_时
间”命名,当 PART_STOR=1 时,以“dmsql_实例名_用户名_日期_时间”命名。缺省生
成在 DM 安装目录的 log 子目录下面,管理员可通过 sqllog.ini 参数 FILE_PATH 设置其
生成路径。
SQL 日志内容包含系统各会话执行的 SQL 语句、参数信息、错误信息等。跟踪日志主要
用于分析错误和分析性能问题,基于跟踪日志可以对系统运行状态有一个分析,比如,可以
挑出系统现在执行速度较慢的 SQL 语句,进而对其进行优化。
系统中 SQL 日志的缓存是分块循环使用,管理员可根据系统执行的语句情况及压力情况
设置恰当的日志缓存块大小及预留的缓冲块个数。当预留块不足以记录系统产生的任务时,
系 统 会 分 配 新 的 用 后 即 弃 的 缓 存 块 , 但 是 总 的 空 间 大 小 由 sqllog.ini 参 数
BUF_TOTAL_SIZE 控制,管理员可根据实际情况进行设置。
打开 SQL 日志会对系统的性能会有较大影响,一般用于查错和调优的时候才会打开,默
认情况下系统是关闭跟踪日志的。若需要跟踪日志但对日志的实时性没有严格的要求,又希
望系统有较高的效率,可以设置 sqllog.ini 参数 SQL_TRACE_MASK 和 MIN_EXEC_TIME
只记录关注的相关记录,减少日志总量;设置 sqllog.ini 参数 ASYNC_FLUSH 打开 SQL
日志异步刷盘提高系统性能。

创建 sqllog目录
mkdir -p /dm8/dmdbms/log/logcommit

一、登录数据库查询 ‘SVR_LOG’ 修改方式


服务器[LOCALHOST:5241]:处于普通打开状态
登录使用时间 : 20.107(ms)
disql V8
SQL> 
SQL> 
SQL> 
SQL> select * from SYS."V$PARAMETER" tt where tt.name = 'SVR_LOG';

行号     ID          NAME    TYPE VALUE SYS_VALUE FILE_VALUE
---------- ----------- ------- ---- ----- --------- ----------
           DESCRIPTION                                                                                                                 DEFAULT_VALUE ISDEFAULT  
           --------------------------------------------------------------------------------------------------------------------------- ------------- -----------
1          553         SVR_LOG SYS  0     0         0
           Whether the Sql Log sys Is open or close. 1:open, 0:close, 2:use switch and detail mode. 3:use not switch and simple mode.  0             1

已用时间: 253.107(毫秒). 执行号:700.

type 为 SYS:动态(系统级)参数。即可以修改内存中的值,也可以修改参数文件中的值。可以通过 SQL 命令或函数修改。

二、修改 dm.ini 中 SVR_LOG值

SP_SET_PARA_VALUE(1,'SVR_LOG',1);

SP_SET_PARA_VALUE(1,‘SVR_LOG’,1);

参数说明:
1、SCOPE:修改范围(0:memory;1:both;2:spfile)
2、参数名称
3、要修改为的值

三、修改 sqllog.ini

cd /data/dmdata/OA 
 
vi sqllog.ini 
 
BUF_TOTAL_SIZE = 10240 
BUF_SIZE = 1024 
BUF_KEEP_CNT = 6
[SLOG_ALL] FILE_PATH = /opt/dmdbms/bin/bin/logcommit  #创建的sql日志存放目录
PART_STOR = 0 
SWITCH_MODE = 2  #表示SQL日志文件切换的模式,2表示按文件大小切换
SWITCH_LIMIT = 256  #单个文件大小256M
ASYNC_FLUSH = 1  #开启异步SQL日志
FILE_NUM = 6  #总共记录6个日志文件
ITEMS = 0 
SQL_TRACE_MASK = 1   #LOG记录的语句类型掩码,默认为1,可以不修改
MIN_EXEC_TIME = 0 
USER_MODE = 0 
USERS = 

此文件修改后,需要执行CALL SP_REFRESH_SVR_LOG_CONFIG(); 生效

四、检查SVR_LOG等参数:

 
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语句

SQL> select count(*) from v$sessions;

行号     COUNT(*)            
---------- --------------------
1          1

五、查询sqllog日志内容
tail -f /dm8/dmdbms/log/logcommit/dmsql_DMSOU_20220620_172801.log

2022-06-20 17:30:39.921 (EP[0] sess:0x7fd4fc012170 thrd:35981 user:SYSDBA trxid:8063 stmt:0x7fd4fc034968 appname:disql ip:::1) [ORA]: select count(*) from v$session;
2022-06-20 17:30:39.925 (EP[0] sess:0x7fd4fc012170 thrd:35981 user:SYSDBA trxid:8063 stmt:0x7fd4fc034968 appname:disql ip:::1) [ERR(-2106)]: select count(*) from v$session;
2022-06-20 17:30:51.219 (EP[0] sess:0x7fd4fc012170 thrd:35981 user:SYSDBA trxid:8063 stmt:0x7fd4fc034968 appname:disql ip:::1) [ORA]: select count(*) from v$sessions;
2022-06-20 17:30:51.232 (EP[0] sess:0x7fd4fc012170 thrd:35981 user:SYSDBA trxid:8063 stmt:0x7fd4fc034968 appname:disql ip:::1) [SEL] select count(*) from v$sessions;
2022-06-20 17:30:51.237 (EP[0] sess:0x7fd4fc012170 thrd:35981 user:SYSDBA trxid:8063 stmt:0x7fd4fc034968 appname:disql ip:::1) [SEL] select count(*) from v$sessions; EXECTIME: 4(ms) ROWCOUNT: 1(rows).

到此文章结束,有不足地方,欢迎批正!
更多达梦技术资讯,请访问达梦技术社区:
达梦数据库 - 新一代大型通用关系数据库 | 达梦云适配中心
https://eco.dameng.com/

你可能感兴趣的:(数据库,sql,java)