生产环境Oracle 查询慢排查
现象是生产环境Oracle rac有一个查询很慢(比较少用),查询大概10秒钟才返回,但是有时又很快,而且其他的查询都没问题。
但是把sql语句单独在pl/sql 上执行也很快,执行计划也没有啥问题,有走索引。
打开debug日志,发现不了什么,就是数据库返回的时间很慢,又不是每次都必现。
初步怀疑是druid的问题、或者是oracle rac集群的问题。
开始疑难杂症必备的排除大法。
把数据库连接池druid换成springboot 默认的hikari,现象依旧。排除了druid的问题。
把数据源配置改为只连接到节点1,现象依旧。排除oracle rac的问题。
把数据源配置改为只连接到节点2,查询变快了。
所以定位到是数据库节点1的问题。
所以还是百度下,搜到类似现象。搜索关键字是关键(oracle一个节点查询慢,另一个节点查询快)
现象非常一致,想了一下,非常有可能是这个原因。
接下来问题是不知道这个sql的SQL_ID。也可以清空所有shared pool ,执行alter system flush shared_pool;这样风险比较大。
所以还是优先找到SQL_ID
select *