即使按照以下设置,我也面临这个问题。
用ojdbc14.jar
替换ojdbc6.jar
[还尝试了ojdbc5.jar
]
添加" SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
"到sqlnet.ora
文件[在网络/管理文件夹下]。
将数据库从11g升级到12c后会发生这种情况。
答案 0 :(得分:3)
JDBC驱动程序同时具有Java版本和Oracle版本。版本通常是相关的,但是ojdbc14.jar可能支持Oracle的更高版本而不是ojdbc6.jar。确保您使用的是最新版本的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主目录不同,则应修改它们。
答案 1 :(得分:2)
ORA-28040: No matching authentication protocol
我在尝试连接
时遇到了类似的问题32位Oracle 11g客户端到64位Oracle 12c服务器
然后我继续将以下内容添加到 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)
答案 2 :(得分:1)
首先,ojdbc驱动程序版本之间的区别取决于您使用驱动程序的JDK的版本。
所以ojbdc14
适用于JDK 1.4版,ojdbc5
适用于JDK 1.5,依此类推。
我目前正在使用带有12c数据库版本的ojdbc7.jar
,因为我的环境使用的是JDK 1.7,所以请先升级它。
话虽如此,在{12 {3}}版本的Oracle 12c发布页面中,您可以阅读:
<强>目的强>
设置客户端允许的最低身份验证协议,以及 当服务器充当客户端时,例如通过连接 连接到Oracle数据库实例时的数据库链接。
使用说明
参数名称中的术语VERSION指的是版本 身份验证协议,而不是Oracle数据库版本。
如果版本不符合或超过此定义的值 参数,然后使用ORA-28040验证失败:无匹配 身份验证协议错误。
此属性的默认值为11.
允许值为8,10,11,12和12a。
推荐值为12.试试这个。
此外,还有一个有用且有趣的解决方案Parameters for the sqlnet.ora File
答案 3 :(得分:0)
您应该使用最新的JDBC瘦驱动程序(12.1.0.2)和JDK8。使用此配置,您的驱动程序将支持最新版本的数据库密码验证程序,您的问题应该得到解决。