Tomcat连接Oracle时出现ORA-01756等JDBC驱动异常求助
Tomcat连接Oracle数据库的偶发SQL语法错误问题
问题背景
- 环境:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0,Tomcat 8.5
- 几周前连接开始抛出错误:
Caused by: java.sql.SQLException: Locale not recognized - 尝试配置JVM参数
-Duser.language=es -Duser.region=ES未解决问题,联系Oracle技术支持后应用补丁p30649766_121020,原错误消失,但出现新的偶发异常:Caused by: java.sql.SQLException: ORA-00604: se ha producido un error a nivel 1 de SQL recursivo ORA-01756: la cadena entrecomillada no está terminada correctamente
排查过程
- Oracle技术支持无法定位问题根源,自行尝试复现查询错误失败
- 通过网络抓包对比发现异常与正常情况下驱动发送的SQL语句差异:
异常语句(缺少闭合引号):
正常语句:ALTER SESSION SET TIME_ZONE='Europe/MadridSESSION_CLIENT_LOBATTR1SESSION_CLIENT_DRIVER_NAMEjdbcthinALTER SESSION SET TIME_ZONE='Europe/Madrid' NLS_LANGUAGE='SPANISH' NLS_TERRITORY='SPAIN'SESSION_CLIENT_LOBATTR1SESSION_CLIENT_DRIVER_NAMEjdbcthin - 该错误为偶发,无法稳定复现,由于语句是JDBC驱动在应用查询前自动发送的,推测是驱动层面的问题
尝试过的解决动作
- 更换不同版本的ojdbc8驱动:
java -jar ojdbc8.jar Oracle 19.22.0.0.0 JDBC 4.2 compiled with javac 1.8.0_391 on Sun_Oct_29_03:24:04_PDT_2023 java -jar ojdbc8.jar Oracle 23.3.0.23.09 JDBC 4.2 debug compiled with javac 1.8.0_381-ea on Thu_Aug_31_22:00:13_PDT_2023 [Default Properties Resource] #Default Connection Properties Resource #Thu Mar 14 10:09:03 CET 2024 - 更换驱动后错误仍存在,仅出现频率有所降低
提问
是否有同行遇到过类似的偶发JDBC驱动SQL语句拼接错误问题?
内容的提问来源于stack exchange,提问作者Diego Porta Martinez
相关产品推荐
相关产品推荐

