【微服务部署】Linux部署微服务启动报ORA-01005

问题背景:
Linux机器部署springboot微服务,部署完成后发现无法启动,后台报ORA-01005错误。
在这里插入图片描述
解决方案:
1.检查当前服务器是否已安装oracle客户端
命令行执行sqlplus username/passwd@实例名,如果执行成功,说明oracle环境是ok的。
检查无问题。

2.检查redis集群是否能正常访问
切换到/redis/src目录,执行./redis-cli -p 端口号,进入后执行info Replication查看节点信息。
检查也无问题。

3.检查当前安装的jdk版本问题
命令行输入java -version,如果已安装,全局搜索sunjce_provider.jar文件,拷贝至微服务的lib目录下,重启服务应该就能解决。

备注:openjdk问题,启动时数据库报null password given:在jre/lib/ext目录下, 应该有一个sunjce_provider.jar,拷贝到微服务lib/otherlib/base目录下就可以了。

### ORA-28040 错误的原因及解决方案 在Web项目启动过程中,如果遇到 **ORA-28040: No matching authentication protocol** 错误,通常是因为 Oracle 数据库与 JDBC 驱动版本不兼容所导致。此错误不仅会在使用 PL/SQL 或第三方工具连接数据库时出现,在 Java Web 项目中使用不匹配的 JDBC 驱动连接 Oracle 数据库时同样可能发生[^1]。 #### 原因分析 1. **JDBC 驱动版本与数据库版本不兼容** Oracle 数据库从 12c 开始对安全协议进行了更新,旧版本的 JDBC 驱动(如 ojdbc6.jar)无法支持新的认证协议,从而导致连接失败[^3]。 2. **驱动包未正确配置或缺失必要依赖** 在某些情况下,项目依赖管理工具(如 Maven 或 Gradle)可能引入了错误版本的 JDBC 驱动,或者构建过程中未正确打包驱动文件。 3. **日志被覆盖导致难以定位真实错误** 由于连接池(如 Druid)会持续尝试建立连接并不断输出异常信息,原始的 ORA-28040 错误可能会被后续的日志刷掉,增加排查难度[^1]。 #### 解决方案 1. **升级 JDBC 驱动版本** 将项目中使用的 `ojdbc6.jar` 替换为更高版本的驱动,例如 `ojdbc7.jar` 或 `ojdbc8.jar`,以支持 Oracle 12c 及以上版本的新协议[^3]。Maven 配置示例: ```xml <dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc8</artifactId> <version>21.10.0.0</version> </dependency> ``` 2. **检查数据库版本并确认兼容性** 使用 SQL 查询数据库版本信息,确保与当前 JDBC 驱动兼容: ```sql SELECT * FROM v$version; ``` 若数据库已升级至 12c 或更高版本,则必须使用 ojdbc7 或 ojdbc8 驱动。 3. **调试日志定位问题源头** 在连接池配置中启用详细日志记录,或在 `DruidDataSource.java` 的 `CreateConnectionThread.run` 方法中设置断点,以便捕获首次发生的 ORA-28040 异常。 4. **清理缓存和重新部署** 如果更换了 JDBC 驱动但问题依旧存在,建议清除项目构建缓存、重启应用服务器,并重新部署 WAR 包以确保新驱动生效。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值