IT运维笔记


连接池溢出以及大量查询系统表的问题

AWR检查,发现一个SQL在4个小时内居然执行196w次.占用数据库负载3%左右. SELECT NULL AS table_cat, o.owner AS table_schem, o.object_name AS table_name, o.object_type AS table_type, NULL AS remarks FROM all_objects o WHERE o.owner LIKE :1 AND o.object_name LIKE :2 AND o.object_type IN ('xxx', 'TABLE') ORDER BY table_type, table_schem, table_name 刚开始以为是系统被SQL注入了.. 因为之前正在排查硬解析过高的问题 后来发现是JDBC Metadata的调用. 但是这个调用的频率,明显异常. 最后发现,原来是我使用c3p0连接池的时候,还需要配置preferredTestQuery参数. 否则,默认测试连接的行为,就是DatabaseMetaData.getTables()这种操作. preferredTestQuery设置为"select 1 from dual" 问题解决.