You need to enable JavaScript to run this app. 如何查看SAP HANA DB事务日志内容 排查SAP B1迁移时日志过大问题
优惠活动
大模型
产品
解决方案
定价
更多

如何查看SAP HANA DB事务日志内容 排查SAP B1迁移时日志过大问题

HANA DB事务日志异常暴涨排查及日志内容查看方法

一、先排查日志暴涨的常见前置原因

  • 确认HANA日志配置:先校验日志模式和归档状态,默认log_mode=normal模式下如果归档路径不可写、归档任务未正常运行,日志会持续堆积无法被覆盖回收,执行命令SELECT VALUE FROM M_INIFILE_CONTENTS WHERE SECTION = 'persistence' AND KEY = 'log_mode'即可确认配置
  • 排查长事务/大事务:哪怕操作次数少,只要事务长时间不提交,就会持有旧日志段不允许被覆盖,执行SELECT TRANSACTION_ID, USER_NAME, START_TIMESTAMP, DURATION, MEMORY_SIZE FROM M_TRANSACTIONS ORDER BY DURATION DESC查看是否有运行超过30分钟的事务
  • 排查LOB相关操作:SAP B1的附件、大文本、二进制字段如果被反复更新,每次写入都会产生数倍于数据本身的日志量,700次更新如果涉及LOB全量写入,完全可能产生数十GB日志,且这类底层写入动作不一定会被普通SQL Trace完整捕获

二、查看事务日志具体内容的方法

  • 使用HANA内置视图M_LOG_CONTENTS直接查询日志明细,执行以下SQL可以快速定位大体积日志对应的操作:
SELECT 
  LOG_POSITION,
  TRANSACTION_ID,
  OPERATION_TYPE,
  SCHEMA_NAME,
  TABLE_NAME,
  RECORD_LENGTH,
  STATEMENT_STRING
FROM M_LOG_CONTENTS
WHERE LOG_TIME >= CURRENT_TIMESTAMP - INTERVAL 1 HOUR
ORDER BY RECORD_LENGTH DESC

该视图可以直接展示每条日志对应的操作类型、涉及的表、单条日志大小、执行的SQL语句,按记录长度排序可以快速定位产生大日志的具体操作。

  • 如需查看更底层的日志内容,使用HANA自带的hdbcons工具的logparser功能,执行命令hdbcons "logparser -a -t 3600"即可导出最近1小时所有事务日志的完整内容,包括LOB写入、页级修改、索引更新这类不会在普通视图中暴露的底层操作。
  • 自研程序关联排查:给所有自研程序的数据库连接增加会话标记,程序连接数据库后先执行SET 'CLIENT_APPLICATION' = '自研程序对应模块名',之后在M_LOG_CONTENTS中关联M_CONNECTIONS视图即可过滤出所有自研程序产生的日志,快速定位问题模块。

三、验证步骤

  • 临时停止所有自研程序运行,观察1小时内日志增长量,如果日志不再暴涨可直接确认是自研程序导致的问题;
  • 如果停掉自研程序后日志依然暴涨,排查SAP B1自带的后台作业,比如索引重建、统计信息更新、数据同步这类默认自动运行的后台任务,这类任务不会出现在普通SQL Trace中,执行SELECT JOB_NAME, STATUS, START_TIME, END_TIME FROM M_JOBS WHERE START_TIME >= CURRENT_TIMESTAMP - INTERVAL 1 HOUR即可查看近1小时的后台作业记录。

内容的提问来源于stack exchange,提问作者Mark Rabjohn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 15:36:03