You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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_NAMEjdbcthin
    
    正常语句:
    ALTER 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 02:58:31