sql日志咨询

请问下目前开源版是不是没有sql记录功能,我看目前sqlaudit功能只支持内存记录sql,不能落盘,如果想要该功能是不是需要使用收费版本,或者第三方工具

好像是增值收费吧

仅适用于 OceanBase 数据库企业版,而社区版暂不支持审计功能。
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002012644

trace_id 的唯一性, 可以写个存储过程 几分钟replace到一个物理表里面

2 个赞

大佬你好,你的思路我懂了,但我想看具体的执行时间能查出来吗

1 个赞

这种操作有人在生产上这样做的吗?

一条sql 实际的执行时间吗 ?

  1. select * from gv$ob_sql_audit;
    EXECUTE_TIME: 213

ob_enable_sql_audit =on 变量开关 。

是不是这个意思呢 ?

是这个sql的执行的开始时间

找到了requesttime,是微秒查出来了

目前看可行,到时候测试测试对性能的影响。感谢大佬

@论坛小助手

根据文档库中的信息,OceanBase 数据库社区版支持查找特定 SQL 请求的日志,但其功能实现依赖于系统日志级别和具体的 SQL 异常场景。以下是对您问题的详细解答:

  1. SQL 日志记录功能
    根据文档片段(查找特定 SQL 请求的日志),OceanBase 数据库社区版支持通过 TRACE_ID 和节点 IP 在日志文件中检索特定 SQL 请求的日志。虽然社区版可能不直接提供将 SQL 审计日志落盘的功能,但可以通过系统日志和相关工具间接实现。

  2. SQL 执行时间的查询
    您提到已经找到了 REQUEST_TIME 字段,该字段可以用于记录 SQL 请求的开始时间(微秒级)。这是可行的,并且是获取 SQL 执行时间的一种有效方法。您可以结合 GV$SQL 视图或其他性能视图来进一步分析 SQL 的执行情况。

  3. 性能影响评估
    开启 SQL 日志记录或审计功能可能会对系统性能产生一定影响,具体取决于日志级别的设置和日志量的大小。建议在测试环境中进行充分验证,以评估实际性能开销。

  4. 是否需要收费版本或第三方工具
    如果社区版的功能无法完全满足需求,企业版确实提供了更全面的 SQL 审计和日志管理功能。不过,在社区版中,您也可以通过以下方式增强 SQL 日志记录能力:

    • 使用 OCP 或其他第三方监控工具。
    • 配置 OceanBase 的日志级别以捕获更多细节。
    • 利用实时 SQL Plan Monitor 功能(从 V4.0 开始支持),通过查询 GV$SQL_PLAN_MONITOR 视图获取 SQL 的执行计划和性能指标。

总结:

  • 社区版支持通过系统日志和 TRACE_ID 查找特定 SQL 请求的日志。
  • 您可以通过 REQUEST_TIME 字段获取 SQL 执行的开始时间。
  • 如果需要更高级的功能,可以考虑企业版或第三方工具,但在社区版中已有多种方法可以满足大部分需求。

希望以上信息对您有所帮助!如果还有其他疑问,请随时提问。

具体信息可参考以下文档:

  1. 查找特定 SQL 请求的日志
  2. 备份架构
  3. 实时执行计划展示
  4. 通过 ODC 图形化开发工具进行 SQL 开发
  5. 使用数据编码和压缩
  6. OceanBase 数据库和 MySQL 兼容性介绍
  7. enable_clog_persistence_compress
  8. 使用 MySQL 租户做常见数据库开发
  9. OceanBase 数据库在 MySQL 模式租户下的扩展功能

可以自己写个存储过程定期持久化,企业版好像有个Sqlauditstore 工具可以做持久化,不知道正不正常社区版