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

GlassFish连接池Ping失败:ORA-00604与ORA-12705错误求助

解决GlassFish连接池Ping失败(ORA-00604/ORA-12705)的问题

这个ORA-12705错误我之前帮不少开发者排查过,核心就是NLS(国家语言支持)配置不匹配或者缺失,导致GlassFish无法和Oracle数据库正确建立会话。结合你遇到的递归SQL层级错误(ORA-00604),给你几个靠谱的解决步骤:

1. 检查并设置GlassFish服务器的环境变量

Oracle的JDBC驱动依赖NLS_LANG环境变量来确定字符集和语言设置,必须和你的Oracle数据库配置匹配:

  • 如果是Windows系统:找到GlassFish域的启动脚本(比如domain1/bin/domain.bat),在开头添加一行:
    set NLS_LANG=AMERICAN_AMERICA.AL32UTF8
    
    (这里的AL32UTF8要替换成你数据库实际使用的字符集,比如ZHS16GBK)
  • 如果是Linux/Unix系统:修改domain1/bin/domain.sh,添加:
    export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
    
    修改后重启GlassFish服务器。

2. 在GlassFish连接池里直接配置NLS属性

如果修改系统环境变量不方便,可以直接在连接池的额外属性里指定NLS参数:

  • 登录GlassFish Web管理界面,依次进入:资源 > JDBC > JDBC连接池
  • 选中你的MyPool,切换到额外属性标签页
  • 点击“添加属性”,输入名称NLS_LANG,值设为和数据库匹配的字符集(比如SIMPLIFIED CHINESE_CHINA.ZHS16GBK)
  • 保存配置后,重新尝试Ping连接池。

3. 验证Oracle客户端的NLS配置(如果使用胖客户端)

如果你的GlassFish使用的是Oracle胖客户端(而非瘦客户端JDBC驱动),需要确保客户端的NLS配置正确:

  • 检查客户端机器上的tnsnames.ora文件,确认没有错误的NLS参数
  • 确保客户端的NLS_LANG环境变量和数据库端一致

4. 查看server.log获取更细节的错误

报错提示里提到的server.log会有更详细的递归SQL调用栈,你可以重点看:

  • 递归SQL具体执行了什么操作(通常是Oracle初始化会话时的NLS相关查询)
  • 是否有其他关联错误,比如权限不足导致无法读取NLS数据文件

按照这些步骤排查,基本能解决大部分NLS相关的连接池Ping失败问题。

内容的提问来源于stack exchange,提问作者Youlfey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:58:53