Oracle 11g升级19c 后部分查询功能很慢

时间:2024-04-16 07:51:51

*Oracle 11g升级19c 后部分查询功能很慢

今天生产突然有个查询非常慢,日志显示执行了50秒左右,但是从日志中拿出SQL在PLSQL执行,发现用时不到1秒,查看SQL,怀疑是下面几种原因导致

1、使用函数不当
UNIT.UNIT_CODE LIKE CONCAT(‘%’, CONCAT(#{unitCodeOrName}, ‘%’)
修改为 INSTR(INFO.UNIT_CODE, ‘${unitCodeOrName}’) > 0
2、MyBatis解析花费时间较长
原因及参考方案可参考
https://blog.****.net/WO8451401/article/details/126948846?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-126948846-blog-106021178.235%5Ev43%5Epc_blog_bottom_relevance_base3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-126948846-blog-106021178.235%5Ev43%5Epc_blog_bottom_relevance_base3&utm_relevant_index=6在这里插入图片描述
3、执行SQL驱动不对
升级19c后,默认驱动为19c的,可指定SQL执行的驱动为11g
/*+ OPTIMIZER_FEATURES_ENABLE(‘11.2.0.4’) */
在这里插入图片描述

最终经过实际验证,第三种方案顺利解决问题,数据库和程序脚本执行时间基本一致,非常快