SQL跟踪日志用于记录用户执行的SQL语句、参数信息、错误信息等。用户可以通过设置INI参数SVR_LOG来开启SQL日志功能,并且可以在sqllog.ini文件中进行SQL日志的详细配置,例如指定SQL日志中需要被记录的语句类型、SQL日志文件切换模式以及SQL日志占用空间等,详细介绍请参考《DM8系统管理员手册》。
为了帮助用户更好分析SQL日志,本文档将针对事务相关SQL日志中各字段含义进行详细说明。
2023-12-13 11:25:46.537 (EP[0] sess:0x7f23a823c1e8 thrd:31811 user:SYSDBA
trxid:480521 stmt:NULL appname:manager.exe) TRX: START^M
2023-12-13 11:27:45.003 (EP[0] sess:0x7f23a823c1e8 thrd:31811 user:SYSDBA
trxid:480521 stmt:NULL appname:manager.exe) TRX: COMMIT^M
事务提交时的SQL日志也可能包含LSN信息,如下所示:
2023-12-13 11:27:45.003 (EP[0] sess:0x7f23a823c1e8 thrd:31811 user:SYSDBA
trxid:480521 stmt:NULL appname:manager.exe) TRX: COMMIT LSN[12592783]^M
LSN[12592783]表示事务提交的回滚记录的lsn。
2023-12-13 11:30:26.537 (EP[0] sess:0x7f23a823c1e8 thrd:31811 user:SYSDBA
trxid:480521 stmt:NULL appname:manager.exe) TRX: ROLLBACK^M
当事务因封锁冲突而产生封锁等待时,生成相应的SQL日志。
生成SQL日志的时机:事务由wait状态变更为其它状态时记录。
当前存在两种版本的锁等待SQL日志,如果可以准确获取当前事务所等待的其他事务信息,则生成精确版SQL日志。然而在部分场景下无法准确获取当前事务所等待的其他事务信息,典型的如DMDSC场景,有时本地事务仅知道自身对于某个锁发生了锁等待,但是无法获取具体的冲突信息,因此只能打印粗略版SQL日志。
精确版SQL日志如下所示:
2023-12-13 11:25:46.537 (EP[0] sess:0x7f23a823c1e8 thrd:31811 user:SYSDBA
trxid:480521 stmt:NULL appname:manager.exe) trx[480521] LOCK_TID (mode:X, table
id:1143) wait for 3 trxs, trx[480511, 480512, 480513] used time:23896(ms)
以上述SQL日志为例,各字段含义如下:
粗略版SQL日志如下所示:
2023-12-13 11:25:46.537 (EP[0] sess:0x7f23a823c1e8 thrd:31811 user:SYSDBA
trxid:480521 stmt:NULL appname:manager.exe) trx[480521] LOCK_TID (mode:X, table
id:1143, tid[480511]) wait used time:23896(ms)
以上述SQL日志为例,各字段含义如下:
对于以上粗略版SQL日志,由于是LOCK_TID类型,至少会打印一个等待事务ID,根据该事务ID可以进一步追溯其他等待事务信息。但如果是LOCK_OBJ类型的粗略版SQL日志,则可能不会打印等待事务ID,此时需要根据当前对象名,检查附近日志中是否有对该对象的操作,以此来进一步分析事务封锁冲突,该方法不保证能成功检索到冲突操作。比如对触发器对象的封锁冲突,因为SQL日志中不会打印触发器名因此无法检索。
当申请、清理回滚页时,生成相应的SQL日志。
2024-03-15 14:14:20.362 (EP[0] sess:0x7f9740010bd8 thrd:8139 user:SYSDBA
trxid:32072 stmt:NULL appname:disql) trx[32072] alloc pseg page[0, 28557],
page_lsn[10612892], n_pages[13843]
以上述SQL日志为例,各字段含义如下:
2023-12-13 11:25:46.537 (EP[0] sess:0x7f23a823c1e8 thrd:31811 user:SYSDBA
trxid:480521 stmt:NULL appname:manager.exe) trx[32076]: purg2_page free pseg
page (0, 14169), page_lsn = 14169
以上述SQL日志为例,各字段含义如下:
2023-12-13 11:25:46.537 (EP[0] sess:0x7f23a823c1e8 thrd:31811 user:SYSDBA
trxid:480521 stmt:NULL appname:manager.exe) trx[32076]: pseg_reset_last_page
free pseg page (0, 14169)
以上述SQL日志为例,各字段含义如下:
2023-12-13 11:25:46.537 (EP[0] sess:0x7f23a823c1e8 thrd:31811 user:SYSDBA
trxid:480521 stmt:NULL appname:manager.exe) trx[32076]: pseg_rollback free pseg
page (0, 14169) page_lsn[12592786]
以上述SQL日志为例,各字段含义如下:
2023-12-13 11:25:46.537 (EP[0] sess:0x7f23a823c1e8 thrd:31811 user:SYSDBA
trxid:480521 stmt:NULL appname:manager.exe) trx[32076]:
pseg_page_free_for_insert_only_trx free pseg page (0, 14169), page_lsn =
12592786
以上述SQL日志为例,各字段含义如下:
文章
阅读量
获赞