达梦8开启关闭SQL 日志文件

sqllog.ini用于SQL日志的配置,当且仅当INI参数SVR_LOG=1时使用。
如果在服务器启动过程中,修改了sqllog.ini文件。修改之后的文件,只要调用过程SP_REFRESH_SVR_LOG_CONFIG() 就会生效。
sqllog.ini的详细配置请参考下表

参数名 缺省值 属性 说明
SQL_TRACE_MASK 1

动态,

系统级

指定 SQL 日志中需要被记录的语句类型。 指定方式为 SQL_TRACE_MASK=位号:位号:位号„„。 例如: 3:5:7 表示第 3,第 5,第 7
位号代表的类型需要被记录在 SQL 日志中。
位号 24、 25、 26、 28 需和 2~17 搭配使用。 例如: SQL_TRACE_MASK=3:24:26; SQL_TRACE_MASK=4:5:24:25:28 等。
位号 22、 23、 27、 29、 30 可分别单独使用,也可和 2~30 的其它位号同时使用。 例如: SQL_TRACE_MASK=27; SQL_TRACE_MASK=2:27
等。
位号的含义如下所示:
1 全部记录(等同于同时设置 4~30)
2 DML 类型相关语句(等同于同时设置 4~10)
3 DDL 类型相关语句(等同于同时设置 11~17)
4 UPDATE 类型语句(更新)

5 DELETE 类型语句(删除)
6 INSERT 类型语句(插入)
7 SELECT 类型语句(查询)
8 COMMIT 类型语句(提交)
9 ROLLBACK 类型语句(回滚)
10 CALL 类型语句(过程调用)
11 BACKUP 类型语句(备份)
12 RESTORE 类型语句(恢复)
13 创建对象操作(CREATE DDL)
14 修改对象操作(ALTER DDL)
15 删除对象操作(DROP DDL)
16 授权操作(GRANT DDL)
17 回收操作(REVOKE DDL)
22 记录绑定参数
23 记录存在错误的语句(语法错误,语义分析错误等)
24 记录执行语句
25 记录执行语句、 执行语句的时间、 语句的影响行数(只有增删改查有行数,其它语句无行数)
26 记录执行语句的时间、 语句的影响行数(只有增删改查有行数,其它语句无行数) 。 25 和 26 二者只能选择其一。 25 和 26 同时存
在时,只有 25 有效
27 记录原始语句(服务器从客户端收到的未加分析的语句)
28 记录参数信息,包括参数的序号、数据类型和值
29 记录事务相关事件,包括锁类型、锁等待时间等
30 记录 XA 事务

FILE_NUM 5

动态,

系统级

总共记录多少个日志文件,当日志文件达到这个设定值以后,再生成新的文件时,会删除最早的那个日志文件,日志文件的命令格式为dmsql_实例名_日期_时间.log。
当这个参数配置成 0 时,只会生成两个日志相互切换着记录。有效值范围(0~1024)。例如,当 FILE_NUM=0, 实例名为 pdm 时,根据当时的日期时间,生成的日志名称为: dmsql_pdm_20180719_163701.log, dmsql_pdm_20180719_163702.log
SWITCH_MODE 2 手动

表示 SQL 日志文件切换的模式:
0:不切换

1:按文件中记录数量切换
2:按文件大小切换
3:按时间间隔切换

SWITCH_LIMIT 128 动态,系
统级
不同切换模式 SWITCH_MODE 下,意义不同:
 按数量切换时,一个日志文件中的 SQL 记录条数达到多少条之后系统会自动将日志切换到另一个文件中。一个日志文件中的 SQL
记录条数达到多少条之后系统会自动将日志切换到另一个文件中。有效值范围(1000~ 10000000)
 按文件大小切换时,一个日志文件达到该大小后,系统自动将日志切换到另一个文件中,单位为 M。有效值范围(1~ 2000)
 按时间间隔切换时,每个指定的时间间隔,按文件新建时间进行文件切换,单位为分钟。有效值范围(1~ 30000)
ASYNC_FLUSH 1 动态,系统级 是否打开 SQL 日志异步刷盘功能。 0: 否,采用实时刷盘; 1: 是,采用异步刷盘
MIN_EXEC_TIME 0 动态,系统级 详细模式下,记录的最小语句执行时间,单位为毫秒。执行时间小于该值的语句不记录在日志文件中。有效值范围(0~ 4294967294)
FILE_PATH ..\LOG 动态,系统级 SQL 日志文件所在的文件夹路径
BUF_TOTAL_SIZE 10240 动态,系统级 SQL 日志 BUFFER 占用空间的上限,单位为 KB,取值范围(1024~1024000)
BUF_SIZE 1024 动态,系统级 一块 SQL 日志 BUFFER 的空间大小,单位为 KB,取值范围(50~409600)
BUF_KEEP_CNT 6 动态,系统级 系统保留的 SQL 日志缓存的个数,有效值范围(1~ 100)
PART_STOR 0 手动 SQL 日志分区存储,表示 SQL 日志进行分区存储的划分条件。
0 表示不划分; 1 表示 USER:根据不同用户分布存储
ITEMS 0 手动

指定一条 SQL 日志中应包含的内容。指定方式为 ITEMS=位号:位号:位号……。 例如: ITEMS=3:5:7。表示应包含第 3、 第 5、 第 7 位
代表的内容。
0 表示记录所有的列(等同于同时设置 1~12)
1 TIME 执行的时间

2 SEQNO 服务器的站点号
3 SESS 操作的会话地址
4 THRD 线程地址
5 USER 执行的用户
6 TRXID 事务 ID
7 STMT 语句地址
8 APPNAME 客户端工具
9 IP 客户端 IP
10 STMT_TYPE 语句类型。分别为[ORA]表示原始语句(服务器从客户端收到的未加分析的语句) 、 [DDL]表示 DDL 语句、 [INS]
表示 INSERT 语句、 [DML]表示 DML 语句、 [CAL]表示 CALL 语句、 [UPD] 表示 UPDATE 语句、 [DEL] 表示 DELETE 语句和[SEL]表
示 SELECT 语句
11 INFO 记录当前执行的 SQL 语句
12 RESULT 运行结果,包括运行用时和影响行数(可能没有)

USER_MODE 0 手动 SQL 日志按用户过滤时的过滤模式,取值
0:关闭用户过滤
1:白名单模式,只记录列出的用户操作的 SQL 日志
2:黑名单模式,列出的用户不记录 SQL 日志
USERS 空串 手动 打开 SVR_LOG_USER_MODE 时指定的用户列表。格式为:用户名:用户名:用户名


sqllog.ini 中配置块的使用方法:
sqllog.ini 中配置块在 INI 参数 SVR_LOG=1 时使用。且 INI 参数 SVR_LOG_NAME 必须和 sqllog.ini 中的 SVR_LOG_NAME 名称一样,sqllog.ini 配置块才会生效。 缺省情况下, SVR_LOG_NAME 为 SLOG_ALL。 若 SVR_LOG 为 1,但不存在 sqllog.ini 或 sqllog.ini 配置错误,则配置无效,此时,使用 DM.INI 中的系统默认值。
例如:下面是一个 SVR_LOG_NAME 为 SLOG_ALL 的 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 = ..\log
PART_STOR = 0
SWITCH_MODE = 2
SWITCH_LIMIT = 128
ASYNC_FLUSH = 1
FILE_NUM = 5
ITEMS = 0
SQL_TRACE_MASK = 1
MIN_EXEC_TIME = 0
USER_MODE = 0
USERS =

开启方式1:配置文件开启

dm.ini配置文件SVR_LOG=1

达梦8开启关闭SQL 日志文件_第1张图片

默认配置 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    = ../log
    PART_STOR    = 0
    SWITCH_MODE  = 2
    SWITCH_LIMIT   = 128
    ASYNC_FLUSH   = 1
    FILE_NUM = 5
    ITEMS    = 0 
    SQL_TRACE_MASK  = 1 
    MIN_EXEC_TIME = 0 
    USER_MODE   = 0 
    USERS =

1. SF_GET_PARA_VALUE (scope int, paraname varchar(256))
配置参数的值类型为数值类型时使用该函数来获取当前值。 SCOPE 参数为 1 表示获取
INI 文件中配置参数的值,为 2 表示获取内存中配置参数的值。
2. SF_GET_PARA_DOUBLE_VALUE(scope int, paraname varchar(8187))
配置参数的值类型为浮点型时使用该函数来获取当前值。SCOPE参数为1表示获取INI
文件中配置参数的值,为 2 表示获取内存中配置参数的值。
3. SF_GET_PARA_STRING_VALUE (scope int, paraname varchar(8187))
配置参数的值为字符串类型时用该系统函数来获取当前值。 SCOPE 参数为 1 表示获取
INI 文件中配置参数的值,为 2 表示获取内存中配置参数的值。
 

达梦8开启关闭SQL 日志文件_第2张图片

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

执行方式二中的关闭和开启的存储过程即可。

开启方式2:

调用存储过程修改sqllog.ini中参数:


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

第一个参数:需要修改变更ini文件参数的名称

第二个参数:需要变更的新值

第三个参数:0 表示当前 session 修改的参数立即生效,为 1 表示当前 session不生效,后续再生效,默认为 0。

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

--开启SQL日志即可生效

SP_SET_PARA_VALUE(1,'SVR_LOG',1);

--查询是否生效

select PARA_NAME,PARA_VALUE from v$dm_ini where para_name ='SVR_LOG' or  para_name = 'SVR_LOG_NAME';

在线服务平台地址:

https://eco.dameng.com

你可能感兴趣的:(达梦数据库,mysql,数据库)