即使在遵循以下设置之后,我也面临着这个问题。
1.将ojdbc14.jar替换为ojdbc6.jar[也尝试了ojdbc5.jar]1.将SQLNET.ALLOWED_LOGON_VERSION_SERVER=8添加到sqlnet.ora文件[在Network/admin文件夹下]。
ojdbc14.jar
ojdbc6.jar
ojdbc5.jar
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
这是在将数据库从11g升级到12c之后发生的。
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)
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主目录不同,则应同时修改两者。
7uzetpgm3#
首先,ojdbc驱动程序版本之间的差异取决于您使用驱动程序的JDK版本。因此,ojbdc14适用于JDK版本1.4,ojdbc5适用于JDK 1.5,依此类推。
ojbdc14
ojdbc5
我目前使用的是ojdbc7.jar和12c数据库版本,因为我的环境使用的是JDK 1.7,所以首先升级这个版本。
ojdbc7.jar
话虽如此,在用于Oracle 12c的sqlnet.ora文件发布页的参数中,您可以阅读:
目的
设置客户机以及在服务器充当客户机时允许的最低验证协议,例如在连接到Oracle数据库示例时通过数据库链接进行连接。
使用说明
参数名称中的术语版本指的是身份验证协议的版本,而不是Oracle数据库发行版。
如果版本不满足或超过此参数定义的值,则身份验证失败,并显示ORA-28040:没有匹配的身份验证协议错误。
此属性的默认值为11。
允许值为8、10、11、12和12a。
推荐值是12。试试这个。
此外,还有一个有用且有趣的解决方案Database Administrators Stack Exchange
qhhrdooz4#
您应该使用最新的JDBC瘦驱动程序(12.1.0.2)和JDK8。使用此配置,您的驱动程序将支持最新版本的数据库密码验证器,您的问题应该会得到解决。
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
5条答案
按热度按时间t8e9dugd1#
我在尝试连接一个
32位Oracle11g客户端到64位Oracle12c服务器
然后,我继续将以下内容添加到sqlnet.ora
然后,我遇到了以下错误
将以下内容添加到客户端sqlnet.ora和服务器中,我能够将旧版本的Toad和PL/SQL连接到新的12c服务器。
6tqwzwtp2#
JDBC驱动程序既有Java版本,也有Oracle版本。这些版本通常是相关的,但ojdbc14.jar也可能支持比ojdbc6.jar更高的Oracle版本。确保您使用的是最新版本的ojdbc6.jar。
运行此命令以查看驱动程序是为哪个版本的Oracle构建的:
对于SQLNET.ORA更改,为了安全起见,您应该同时重新启动监听程序和数据库。这听起来很极端,但是有一些参数require restarting the database。
还要确保您正在修改所有相关的SQLNET.ORA文件。如果数据库的Oracle主目录与监听程序的Oracle主目录不同,则应同时修改两者。
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
qhhrdooz4#
您应该使用最新的JDBC瘦驱动程序(12.1.0.2)和JDK8。使用此配置,您的驱动程序将支持最新版本的数据库密码验证器,您的问题应该会得到解决。
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