本地连接数据库时出现ORA-28040: No matching authentication protocol
在配置本地连接数据库时出现ORA-28040: No matching authentication protocol 错误,这个错误的意思是没有匹配的认证协议;
原因分析: 主要是说电脑上orcale的客户端版本和访问的oracle服务端的版本不一致
解决方案: 官方解释是:
This issue is caused by the default setting for allowed logon version in the 12 database. Note that the SQLNET.ALLOWED_LOGON_VERSION parameter has been deprecated in 12c. That parameter has been replaced by these:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=n SQLNET.ALLOWED_LOGON_VERSION_CLIENT=n
The default setting for the new parameters is 11. Any client that attempts to connect must be at version 11 or higher unless these parameters are explicitly set in the server side sqlnet.ora file.
这段话的意思是,(SQLNET.ALLOWED_LOGON_VERSION)参数在12c中已经被弃用了,被另外两个参数所取代(SQLNET.ALLOWED_LOGON_SERVER,SQLNET.ALLOWED_LOGON_CLIENT)。该参数用来限制可以连接到数据库服务器上的最小客户端版本,12c中这两个新参数的默认值为11,即11g及以上客户端版本可以连接到数据库服务器上。
两个参数区别如下:
SQLNET.ALLOWED_LOGON_VERSION_SERVER:控制可以连接到12c数据库的客户端版本(client —>orace 12c db)
SQLNET.ALLOWED_LOGON_VERSION_CLIENT:控制12c数据库可以连到哪些版本的数据库(orace 12c db —>其它版本的oracle db),例如:控制通过DB LINK可连接到哪些版本的oracle库。
具体解决办法:
在Oracle用户下,将%ORACLE_HOME%/network/admin/sqlnet.ora文件(如果没有sqlnet.ora文件,那么就创建一个)最后添加如下的行:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8