oceanbasev4.1.5.5事务回滚

一个事务内的sql执行失败 , 事务内的其他sql进行了回滚 , 有什么方式能查询到这个事务内执行的sql

通过 gv$ob_sql_audit. 为查询到该事务内回滚的sql

@论坛小助手

可以通过以下步骤尝试查询事务内执行的 SQL 语句:

  1. 首先检查 enable_sql_audit 参数是否已开启,确保 SQL 审计功能启用。

    show parameters where name = 'enable_sql_audit';
    

    如果查询结果为 False,则需要将其设置为 True

    alter system set enable_sql_audit = true;
    
  2. 通过 gv$ob_sql_audit 视图查询事务内执行的 SQL 语句。假设已知事务 ID(TX_ID),可以使用以下 SQL 查询:

    SELECT usec_to_time(REQUEST_TIME), TRACE_ID, TX_ID, QUERY_SQL FROM gv$ob_sql_audit WHERE TX_ID = '事务ID' ORDER BY REQUEST_TIME;
    
  3. 如果仍然无法找到相关 SQL 语句,可以通过日志进一步排查。使用事务中涉及的 SQL 的 TRACE_ID 在日志文件中搜索相关信息:

    grep '[trace id]' observer.log*
    
  4. 如果没有相关日志,可以考虑调整日志级别和日志带宽限制,以便捕获更多日志信息:

    alter system set syslog_level='WDIAG';
    alter system set syslog_io_bandwidth_limit='2G';
    

更多信息请查看:

  1. OceanBase Sysbench 高性能部署和问题分析
  2. GV$OB_SQL_AUDIT
  3. 使用命令行进行运维
  4. 使用 MySQL 租户做常见数据库开发