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

Spring Boot连接Oracle数据库遇ORA-01017认证错误求助

我之前也遇到过几乎一样的问题,结合你给出的配置和错误信息,咱们来一步步解决:

1. 修正application.properties里的核心配置错误

你在application.properties里写错了用户名的配置项:

# 错误的配置
spring.datasource.name=talon
# 改成正确的用户名配置
spring.datasource.username=talon

spring.datasource.name是用来给数据源实例命名的,不是数据库登录的用户名,正确的登录用户名配置是spring.datasource.username,这应该是导致ORA-01017的最直接原因——Spring Boot没有用正确的用户名去连接Oracle。

同时,你可以删掉冗余的oracle.dbsource.*配置,因为Spring Boot会自动使用spring.datasource.*下的配置,重复配置只会增加干扰。修正后的application.properties应该是这样:

spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.username=talon
spring.datasource.password=talon
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect

2. 清理persistence.xml里的冗余JPA框架配置

你的persistence.xml里同时配置了TopLink、Hibernate、OpenJPA、EclipseLink四种JPA实现的连接参数,这会导致Spring在初始化JPA时出现配置混乱。既然你用的是Spring Boot + Hibernate(从spring.jpa.database-platform配置可以看出来),只需要保留Hibernate相关的必要配置,甚至可以完全依赖application.properties的配置,把数据库连接相关的参数从persistence.xml里删掉:

<persistence-unit name="NewPersistenceUnit" transaction-type="RESOURCE_LOCAL">
    <class>springoraclesql.demo.domain.Book</class>
    <properties>
        <!-- 只保留Hibernate的核心配置,比如DDL策略,根据你的需求调整 -->
        <property name="hibernate.hbm2ddl.auto" value="validate"/>
    </properties>
</persistence-unit>

这样Spring会自动把application.properties里的数据源配置注入到JPA中,避免配置冲突。

3. 额外排查点(如果上面两步还没解决)

  • 检查Oracle用户的权限:确保talon用户有连接数据库的权限,并且没有被锁定(可以用SQLPlus登录sys用户,执行SELECT username, account_status FROM dba_users WHERE username='TALON';查看状态)。
  • 大小写问题:Oracle的用户名和密码在11g及以后默认是大小写敏感的(如果创建用户时加了双引号),确认你在配置里写的talon和数据库里的用户名大小写一致,DriverManager能连上可能是因为你传参时大小写匹配,但Spring的配置可能因为某些原因转成了大写/小写。

做完以上调整后,重启Spring Boot项目,应该就能解决ORA-01017的登录拒绝错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:01:07