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

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

参数名缺省值属性说明
SQL_TRACE_MASK1

动态,

系统级

指定 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_NUM5

动态,

系统级

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

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

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

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

指定一条 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_MODE0手动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

默认配置 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 表示获取内存中配置参数的值。
 

在更改完配置文件后需要重启生效,也可以调用存储过程刷新配置文件: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

<think>嗯,用户问的是达梦数据库如何配置SQL日志文件。首先,我需要回忆一下达梦数据库的相关文档。记得达梦日志分为几种,比如操作日志SQL日志等等。SQL日志可能记录执行的SQL语句,对调试和审计很重要。 首先,用户可能需要知道如何开启SQL日志达梦通常使用参数文件dm.ini来配置,里面有很多参数项。应该有一个叫SVR_LOG的开关,用来控制是否启用SQL日志。默认可能是关闭的,需要设置为1。然后,还有相关的参数,比如SQL_TRACE_MASK,这个控制日志记录的内容,比如SELECT、INSERT等操作。可能需要说明不同的掩码值对应的不同操作类型。 接下来,日志文件的位置和大小限制也很重要。参数如SVR_LOG_FILE_PATH设置路径,SVR_LOG_FILE_NUM决定保留多少个日志文件,每个文件的大小由SVR_LOG_FILE_SIZE指定。用户可能需要根据实际需求调整这些值,避免日志占用太多磁盘空间。 另外,日志的详细级别可能由参数SVR_LOG_OPTION控制,比如记录执行时间、参数等。不同的组合值会影响日志的详细程度。需要提醒用户根据需求选择,避免日志过于庞大。 还有动态修改和持久化的问题。用户可能不想重启数据库,所以需要用SQL语句在线修改参数,但要注意有些参数可能需要重启才能生效。同时,修改dm.ini文件可以保证配置持久化,否则重启后可能恢复原设置。 最后,可能需要给出查看日志的方法,比如在配置的路径下查看日志文件,或者使用管理工具。还要提醒用户定期清理日志,注意安全,不要记录敏感信息。 需要检查是否有遗漏的参数或步骤,比如是否还有其他相关参数影响SQL日志的记录。另外,确保提到的参数名称和示例值正确,比如SVR_LOG的有效值是否为0和1,掩码参数是否正确等。可能还需要提到不同版本的达梦数据库是否有差异,建议用户参考对应版本的文档确认参数。 总结下来,回答的结构应该是先介绍相关参数,然后分步骤说明如何配置,包括修改配置文件或动态调整,最后给出查看日志的方法和注意事项。确保用中文,术语准确,步骤清晰,帮助用户正确配置SQL日志。</think>以下是在达梦数据库中配置SQL日志文件的步骤说明: ### 一、SQL日志相关参数 达梦通过`dm.ini`配置文件中的参数控制SQL日志记录,关键参数如下: 1. **SVR_LOG** - 作用:是否启用SQL日志 - 值类型:`0`(关闭,默认)或 `1`(开启) - 示例:`SVR_LOG = 1` 2. **SQL_TRACE_MASK** - 作用:设置记录SQL的类型 - 值类型:掩码组合(十进制) - `1`:INSERT - `2`:DELETE - `4`:UPDATE - `8`:SELECT - `16`:COMMIT/ROLLBACK - 示例:`SQL_TRACE_MASK = 15`(记录所有DML) 3. **SVR_LOG_FILE_PATH** - 作用:日志文件存储路径 - 示例:`SVR_LOG_FILE_PATH = /opt/dmdbms/log` 4. **SVR_LOG_FILE_NUM** - 作用:保留的日志文件个数(默认10) - 示例:`SVR_LOG_FILE_NUM = 20` 5. **SVR_LOG_FILE_SIZE** - 作用:单个日志文件大小(单位MB,默认100) - 示例:`SVR_LOG_FILE_SIZE = 50` ### 二、配置步骤 #### 方法1:通过配置文件修改 1. 打开`dm.ini`文件 ```bash vi /opt/dmdbms/data/DAMENG/dm.ini ``` 2. 修改参数后保存 ```ini SVR_LOG = 1 SQL_TRACE_MASK = 15 SVR_LOG_FILE_PATH = /opt/dmdbms/log ``` 3. 重启数据库服务生效 ```bash systemctl restart DmServiceDMSERVER ``` #### 方法2:动态修改(无需重启) 通过SQL命令在线调整: ```sql -- 启用SQL日志 SP_SET_PARA_VALUE(1, 'SVR_LOG', 1); -- 设置记录所有DML操作 SP_SET_PARA_VALUE(1, 'SQL_TRACE_MASK', 15); -- 修改日志路径(需重启生效) SP_SET_PARA_VALUE(2, 'SVR_LOG_FILE_PATH', '/opt/dmdbms/log'); ``` ### 三、查看SQL日志 1. **直接查看文件** 日志文件命名格式:`dmsql_实例名_日期.log` 示例路径: ```bash tail -f /opt/dmdbms/log/dmsql_DMSERVER_20231020.log ``` 2. **通过管理工具** 使用达梦管理工具(DM Management Tool)连接数据库,在"日志管理"模块查看。 ### 四、注意事项 1. **性能影响** 持续记录SQL日志可能增加I/O负载,建议生产环境按需开启。 2. **日志轮转** 当日志文件达到`SVR_LOG_FILE_SIZE`设定值时,会自动生成新文件。 3. **敏感信息过滤** 通过`SQL_TRACE_MASK`控制记录内容,避免记录敏感操作。 4. **版本差异** 不同版本参数可能略有差异,可通过`V$PARAMETER`视图验证: ```sql SELECT * FROM V$PARAMETER WHERE NAME LIKE '%SVR_LOG%'; ``` > 建议结合`SVR_LOG_OPTION`参数(日志详细级别)进一步控制输出内容,例如记录执行时间、绑定参数等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值