ocp sql诊断不显示数据

【 使用环境 】 测试环境
【 OB or 其他组件 】OCP
【 使用版本 】4.2.1
【问题描述】我们自己的应用不连接数据库的时候,sql诊断中有数据显示,会显示会话执行过的SQL
,但是应用连接到数据库之后,sql诊断中就不再显示数据了,应用停掉之后,sql诊断中会立刻显示数据
【复现路径】
应用启动的时候ocp sql诊断页面显示


应用停止后 ocp sql诊断页面显示

排查路径:
step 1: 去ocp的monitordb中查这几张表ob_hist_sql_audit_stat_0、ob_hist_sql_audit_sample、ob_hist_sqltext是否有最新的数据,可以加时间条件去过滤;如果有最新的数据,则需要触发一次ocp白屏上的top sql,然后发一下最新的ocp日志;如果没有最新的数据则看第二步骤;

step 2: 去对应集群的任意一台agent,拿一下agent的日志,默认目录是:/home/admin/ocp_agent/log

收到


老师 我是用obd搭建的集群 您说的monitordb是这个ocp自动创建的这个数据库吗?

老师,我这边是社区版的ob,是不是没有这个monitorDB啊

看截图你们用的是ocp-express,ocp-express中没有monitordb用来存储SQL诊断的数据,ocp-express的SQL诊断的数据都是基于ob的内部视图的内存数据的(gv$ob_sql_audit等),这些数据会存在淘汰过期的机制在,如果业务量qps高或者ob的sys租户内存小的话,内存数据过期的太快就会出现SQL诊断白屏没有展示的问题。业务低峰期或者业务不接入的时候,因为gv$ob_sql_audit保存的时间长一点,就可以看到。

可以看一下sql_audit数据过期的策略:https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000510560

好的