分析解决JDBC连接ORACLE12c报错ORA-01017或Oracle ORA-28040问题,亲测有效

本文介绍了ORACLE12c中JDBC连接报错OracleORA-28040的原因,主要由于JDBC包与数据库版本不一致。解决方法包括修改sqlnet.ora配置文件设置SQLNET.ALLOWED_LOGON_SERVER,以及确保密码版本兼容。
摘要由CSDN通过智能技术生成

1、JDBC连接ORACLE12c报错Oracle ORA-28040都是由于JDBC包版本与数据库版本不一致导致的,ORACLE版本为12以上时,SQLNET.ALLOWED_LOGON_VERSION_SERVER默认为12,与登录在JDBC jar包版本不一致。

2、如果ORACLE版本为12以上时,SQLNET.ALLOWED_LOGON_VERSION_SERVER默认为12或者12C这时的密码认证协议默认为独家模式(Exclusive Mode),在这种情况下生成的PASSWORD_VERSIONS字段为11G, 12C,可以通过查看表DBA_USERS中的PASSWORD_VERSIONS字段进行查看。即在进行密码验证时,客户端发起的请求加密级别与服务器端生成的密码加密级别不一致就导致了ORA-01017用户名/口令无效;登录被拒绝报错。

解决方法:
1. 修改数据库端sqlnet.ora配置文件(解决客户端与服务器端版本不兼容报错Oracle ORA-28040问题
修改 $ORACLE_HOME/network/admin/sqlnet.ora 文件,增加一行配置如下

SQLNET.ALLOWED_LOGON_SERVER=8
注:如果是RAC集群,只修改oracle用户下所有节点sqlnet.ora 的配置,配置增加保存后立即生效

2、修改数据库端sqlnet.ora配置文件后,重新修改所有数据库用户的密码,表DBA_USERS中的PASSWORD_VERSIONS字段会多出一个版本兼容10C,11G,12C  ,这样就可解决ORA-01017 :用户名/口令无效;登录被拒绝报错问题。

--修改system用户密码为 12345678 的语句
alter user system identified by 12345678;
 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值