日志文件信息¶
说明¶
elog文件记录了神通数据库运行时的日志,执行的SQL语句(可能还包含语句的执行时间、报错等)。
mlog文件额外保存了elog文件里重要的那些日志与SQL。
注解
当神通数据库报错或者宕机时才会产生堆栈信息。堆栈信息只存在于elog文件中。
报错时elog堆栈信息示例:
2023-08-17 16:29:56, /*Session 1*/ LOG, /*User SYSDBA*/ drop table t1;
2023-08-17 16:29:56, /*Session 1*/ ERROR, 表不存在, table "T1" does not exist
ERROR SQL: drop table t1
ERROR STACK: 0xd606b4 0xd613b6 0x1061b71 0x1071c3c 0x107abfd 0x107484d 0x104ebcd 0x104ec63 0x4cf680
2023-08-17 16:29:56, /*Session 1*/ LOG, completed: 3ms
注解
报错时,当sql语句执行超过1秒,则会在elog文件中显示执行时间 EXEC TIME: n(s)。n表示执行时间。
2023-09-26 14:08:26, /*Session 2*/ LOG, EXEC proc0();
2023-09-26 14:08:28, /*Session 2*/ NOTICE, Error at "PROC0", line 4
2023-09-26 14:08:28, /*Session 2*/ ERROR, 表已经存在, 同名关系(包括表、视图、索引、序列、同义词或包'TB126395')存在
ERROR SQL: EXEC proc0()
EXEC TIME: 2(s)
ERROR STACK: 0x141304932 0x140c348d7 0x140c2f0d3 0x140c31984 0x140c3b391 0x140e84322 0x140c0baa2 0x140ca7507 0x14146c000 0x141422d08 0x141425292 0x14141f8d9 0x14140bfe1 0x14140bc49 0x14003d0ec
2023-09-26 14:08:28, /*Session 2*/ LOG, completed: 2022ms
数据库宕机时elog堆栈信息示例:
2023-11-09 16:48:53, /*Session 3*/ LOG, /*User SYSDBA*/ drop table cegudehq;
utility.c:178 ElogObjNotExistForIfExists: ASSERT `FALSE` failed!
2023-11-09 16:49:02, database crashed!
session id: 3
prev sql: SELECT ENCODING FROM V_SYS_DATABASE
current sql: drop table cegudehq
crash stack: 0x141bf8925 0x141bf8b33 0x141ba1aad 0x1400290fa 0x140cee1c1 0x140cb728d 0x140cb7167 0x1415e4361 0x1415b1336 0x1415b41bf 0x1415ae2e6 0x14159873d 0x141598309 0x14003e7e2
crash non-default-parameter:
name val
DEBUG_PRINT_SQL 2
TRANSACTION ISOLATION LEVEL READ COMMITTED
宕机的elog信息中除了显示堆栈外,还会显示:宕掉时的会话号、执行SQL,以及非默认值配置参数。
日志打印控制参数¶
在神通数据库中,可以设置配置参数 DEBUG_PRINT_SQL,ENABLE_MONITOR_SESSION,MONITOR_CLIENT_NAMES 来控制是否打印当前执行的SQL语句到控制台或日志文件中。介绍如下:
| 参数名称 | 参数说明 |
|---|---|
| DEBUG_PRINT_SQL | 调试选项,打印输入的SQL语句:
0-不打印SQL语句
2-以LOG级别打印Session号和SQL语句到控制台,并输出到日志文件中
|
| ENABLE_MONITOR_SESSION | 是否开启在会话中记录SQL的功能:将符合条件的会话中执行的 SQL 保存到 elog 文件里,不受参数 DEBUG_PRINT_SQL 的影响。
默认开启。
|
| MONITOR_CLIENT_NAMES | 指定要监控的客户端名称,它们执行的 SQL 会记录到 elog 和 mlog 文件里,名称区分大小写。
其值以!开头表示:除了指定的客户端外都监控。
可指定多个名称,名称间以 | 间隔。缺省值为 "isql|Analyze Query SQL|DBA Manager|DBStudio|brcmd|oscaragent"
|