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 5 DELETE 类型语句(删除) |
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 日志文件切换的模式: 1:按文件中记录数量切换 |
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 位 2 SEQNO 服务器的站点号 |
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
默认配置 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