请问下目前开源版是不是没有sql记录功能,我看目前sqlaudit功能只支持内存记录sql,不能落盘,如果想要该功能是不是需要使用收费版本,或者第三方工具
好像是增值收费吧
仅适用于 OceanBase 数据库企业版,而社区版暂不支持审计功能。
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002012644
trace_id 的唯一性, 可以写个存储过程 几分钟replace到一个物理表里面
大佬你好,你的思路我懂了,但我想看具体的执行时间能查出来吗
这种操作有人在生产上这样做的吗?
一条sql 实际的执行时间吗 ?
- select * from gv$ob_sql_audit;
EXECUTE_TIME: 213
ob_enable_sql_audit =on 变量开关 。
是不是这个意思呢 ?
是这个sql的执行的开始时间
找到了requesttime,是微秒查出来了
目前看可行,到时候测试测试对性能的影响。感谢大佬
根据文档库中的信息,OceanBase 数据库社区版支持查找特定 SQL 请求的日志,但其功能实现依赖于系统日志级别和具体的 SQL 异常场景。以下是对您问题的详细解答:
-
SQL 日志记录功能
根据文档片段(查找特定 SQL 请求的日志),OceanBase 数据库社区版支持通过TRACE_ID
和节点 IP 在日志文件中检索特定 SQL 请求的日志。虽然社区版可能不直接提供将 SQL 审计日志落盘的功能,但可以通过系统日志和相关工具间接实现。 -
SQL 执行时间的查询
您提到已经找到了REQUEST_TIME
字段,该字段可以用于记录 SQL 请求的开始时间(微秒级)。这是可行的,并且是获取 SQL 执行时间的一种有效方法。您可以结合GV$SQL
视图或其他性能视图来进一步分析 SQL 的执行情况。 -
性能影响评估
开启 SQL 日志记录或审计功能可能会对系统性能产生一定影响,具体取决于日志级别的设置和日志量的大小。建议在测试环境中进行充分验证,以评估实际性能开销。 -
是否需要收费版本或第三方工具
如果社区版的功能无法完全满足需求,企业版确实提供了更全面的 SQL 审计和日志管理功能。不过,在社区版中,您也可以通过以下方式增强 SQL 日志记录能力:- 使用 OCP 或其他第三方监控工具。
- 配置 OceanBase 的日志级别以捕获更多细节。
- 利用实时 SQL Plan Monitor 功能(从 V4.0 开始支持),通过查询
GV$SQL_PLAN_MONITOR
视图获取 SQL 的执行计划和性能指标。
总结:
- 社区版支持通过系统日志和
TRACE_ID
查找特定 SQL 请求的日志。 - 您可以通过
REQUEST_TIME
字段获取 SQL 执行的开始时间。 - 如果需要更高级的功能,可以考虑企业版或第三方工具,但在社区版中已有多种方法可以满足大部分需求。
希望以上信息对您有所帮助!如果还有其他疑问,请随时提问。
具体信息可参考以下文档:
可以自己写个存储过程定期持久化,企业版好像有个Sqlauditstore 工具可以做持久化,不知道正不正常社区版