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

应用连接Oracle数据库报ORA-28274错误排查求助

ORA-28274: No ORACLE password attribute corresponding to user nickname exists 问题排查(Tomcat环境连接失败,测试类正常)

问题描述

数据库正常运行,可通过SQLDeveloper正常连接(确认凭据正确),但Tomcat部署的应用连接Oracle时抛出如下错误,相同代码的独立测试类(执行Handle h = open();)却能正常连接。

报错日志:

09:27:06.190 [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0] DEBUG com.mchange.v2.resourcepool.BasicResourcePool - An exception occurred while acquiring a poolable resource. Will retry.
java.sql.SQLException: ORA-28274: No ORACLE password attribute corresponding to user nickname exists.

    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)

09:27:06.200 [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0] WARN com.mchange.v2.resourcepool.BasicResourcePool - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@58c010ac -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
java.sql.SQLException: ORA-28274: No ORACLE password attribute corresponding to user nickname exists.

    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)

技术栈:ojdbc-8 19.3.0.0、Java 8


可能的原因及解决方法

1. Tomcat数据源配置参数异常

ORA-28274错误核心是Oracle身份验证的属性不匹配,重点检查Tomcat的数据源配置(如context.xml/server.xml中的<Resource>标签):

  • 确认username配置的是数据库真实用户名,而非别名;
  • 若使用Oracle钱包或外部身份验证,检查connectionProperties中是否存在错误的属性(比如多余的oracle.net.authentication_services参数);
  • 对比测试类的连接参数,确保Tomcat数据源的url、username、password和测试类完全一致。

2. Tomcat环境类加载冲突

测试类正常但Tomcat下失败,大概率是驱动类加载冲突:

  • 检查Tomcat的lib目录,是否存在旧版本ojdbc驱动(如ojdbc6),和应用依赖的ojdbc-8 19.3.0.0冲突,导致加载了错误的驱动类;
  • 解决:清理Tomcat/lib下所有ojdbc相关jar包,确保应用依赖的ojdbc-8 19.3.0.0是唯一被加载的Oracle驱动。

3. 连接池配置干扰

从日志可见使用了c3p0连接池,检查连接池配置:

  • 确认没有添加额外的身份验证自定义配置(如connectionCustomizerClassName),避免传递给Oracle驱动异常参数;
  • 尝试简化连接池配置,仅保留jdbcUrl、user、password核心参数,排除多余配置的干扰。

4. 运行环境属性差异

测试类和Tomcat的JVM运行环境可能存在差异:

  • 检查Tomcat启动脚本(catalina.sh/catalina.bat),是否添加了Oracle身份验证相关的系统属性(如java.security.auth.login.config),这类属性可能干扰驱动的身份验证流程;
  • 对比测试类的启动参数,确保Tomcat的JVM参数和测试类一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:07:39