ORA-28040:没有匹配的身份验证协议

rta7y2nd  于 2022-09-18  发布在  Java
关注(0)|答案(5)|浏览(682)

即使在遵循以下设置之后,我也面临着这个问题。

1.将ojdbc14.jar替换为ojdbc6.jar[也尝试了ojdbc5.jar]
1.将SQLNET.ALLOWED_LOGON_VERSION_SERVER=8添加到sqlnet.ora文件[在Network/admin文件夹下]。

这是在将数据库从11g升级到12c之后发生的。

t8e9dugd

t8e9dugd1#

ORA-28040: No matching authentication protocol

我在尝试连接一个

32位Oracle11g客户端到64位Oracle12c服务器

然后,我继续将以下内容添加到sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

然后,我遇到了以下错误

ORA-01017: invalid username/password: logon denied

将以下内容添加到客户端sqlnet.ora和服务器中,我能够将旧版本的Toad和PL/SQL连接到新的12c服务器。

SQLNET.AUTHENTICATION_SERVICES = (NONE)
6tqwzwtp

6tqwzwtp2#

JDBC驱动程序既有Java版本,也有Oracle版本。这些版本通常是相关的,但ojdbc14.jar也可能支持比ojdbc6.jar更高的Oracle版本。确保您使用的是最新版本的ojdbc6.jar。

运行此命令以查看驱动程序是为哪个版本的Oracle构建的:

>java -jar ojdbc6.jar -getversion
Oracle 11.2.0.3.0 JDBC 4.0 compiled with JDK6 on Thu_Jun_28_00:38:25_PDT_2012

# Default Connection Properties Resource

# Mon Dec 21 12:38:41 CST 2015

对于SQLNET.ORA更改,为了安全起见,您应该同时重新启动监听程序和数据库。这听起来很极端,但是有一些参数require restarting the database

还要确保您正在修改所有相关的SQLNET.ORA文件。如果数据库的Oracle主目录与监听程序的Oracle主目录不同,则应同时修改两者。

7uzetpgm

7uzetpgm3#

首先,ojdbc驱动程序版本之间的差异取决于您使用驱动程序的JDK版本。因此,ojbdc14适用于JDK版本1.4,ojdbc5适用于JDK 1.5,依此类推。

我目前使用的是ojdbc7.jar和12c数据库版本,因为我的环境使用的是JDK 1.7,所以首先升级这个版本。

话虽如此,在用于Oracle 12c的sqlnet.ora文件发布页的参数中,您可以阅读:

目的

设置客户机以及在服务器充当客户机时允许的最低验证协议,例如在连接到Oracle数据库示例时通过数据库链接进行连接。

使用说明

参数名称中的术语版本指的是身份验证协议的版本,而不是Oracle数据库发行版。

如果版本不满足或超过此参数定义的值,则身份验证失败,并显示ORA-28040:没有匹配的身份验证协议错误。

此属性的默认值为11。

允许值为8、10、11、12和12a。

推荐值是12。试试这个。

此外,还有一个有用且有趣的解决方案Database Administrators Stack Exchange

qhhrdooz

qhhrdooz4#

您应该使用最新的JDBC瘦驱动程序(12.1.0.2)和JDK8。使用此配置,您的驱动程序将支持最新版本的数据库密码验证器,您的问题应该会得到解决。

q8l4jmvw

q8l4jmvw5#

升级Oracle 12c或更高版本后

对于Java版本,jdk7和jdk8支持ojdcc7.jar

对于Java版本jdk6 ojdbc6.jar

这对我们来说很管用。下载[ojdcc7.jar]:https://mvnrepository.com/artifact/com.oracle/ojdbc7/12.1.0.2

相关问题