温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

oracle 12C以上 版本数据库访问 ORA-28040 ORA-03134

发布时间:2020-08-11 21:52:04 来源:ITPUB博客 阅读:568 作者:Haoword_wang 栏目:关系型数据库

随着Oracle 12C 18C 19C 20C 的推出大家在核心或者非核心数据库开始升级,以保证数据库的安全性和稳定性,但在数据库升级后用旧版本的JDBC或者Oracle客户端访问数据库的时候会出现无法登陆,ORA-28040 0RA-03134报错问题,此次设计三个参数12C以前的参数ALLOWED_LOGON_VERSION 及12C 开始使用的新参数ALLOWED_LOGON_VERSION_SERVER/ALLOWED_LOGON_VERSION_CLIENT本章我们节点说明一下其中的缘由,希望可以为大家解惑!

低版本的数据库(11G及以下)的JDBC或者客户端访问高版本的数据库(12C及以上)报错信息

ORA-28040: No matching authentication protocol error

ORA-03134: Connections to this server version are no longer supported

原因:

我们先引入参数:

SQLNET.ALLOWED_LOGON_VERSION=9

该参数是在Oracle 下的Oracle_HOME/network/admin/sqlnet.ora 文件中调整。

该参数在这里的意思是版本9及以上将允许登录。上述参数允许9i、10g和11个版本访问数据库。版本8i在“ORA-28040:没有匹配的身份验证协议”时会失败。

如果我们选择了SQLNET.ALLOWED_LOGON_VERSION = 10,意思允许10g和11g版本访问数据库。对于ORA-28040, 9i和8i版本将失败。

在Oracle数据库12c中不在使用ALLOWED_LOGON_VERSION参数,改为两个新的Oracle Net服务参数:

SQLNET.ALLOWED_LOGON_VERSION_SERVER=n

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=n

在 12.1版本中,新参数的默认设置是11。任何试图连接的客户端都必须是11G 及以上,除非在服务器端sqlnet中显式设置了这些参数,否则应该使用version 11或更高版本。

在 12.2版本,SQLNET的默认值ALLOWED_LOGON_VERSION_SERVER设置在12.2中从11更改为12。如果您的客户端不超过11.2.0.3或包含CPUOCT2012补丁,这就是我们把数据库升级到12C,大家高频率出现该问题的原因。

注意:建议该参数调整成8或者9等当前环境的最低版本

注意:SQLNET.ORA 文件下,当数据库充当客户端时,服务器上需要使用ALLOWED_LOGON_VERSION_CLIENT。比如在dblink的使用情况下。在此更改之后,我们不需要重新启动侦听器或数据库。

具体说明如下链接:

https://docs.oracle.com/database/121/NETRF/sqlnet.htm#NETRF2010

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI