怎么解决Oracle低版本客户端连接报ORA-28040和ORA-01017错误
本篇内容主要讲解“怎么解决Oracle低版本客户端连接报ORA-28040和ORA-01017错误”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决Oracle低版本客户端连接报ORA-28040和ORA-01017错误”吧!
Oracle 11g 的生命周期已经 ,18c 也已经正式发布,那么在安装Oracle 18c 之后,如果已低版本的客户端来连接18c ,就会报如下两个错误:
ORA-28040:NomatchingauthenticationprotocolORA-01017:invalidusername/password;logondenied
他们会先后出现,当解决ORA-28040错误后,就会出现ORA-01017错误。 这里重现一下错误并提供解决方法。
1. 问题重现数据库服务端版本:
[oracle@www.cndba.cndbs]$sqlplus/assysdbaSQL*Plus:Release18.0.0.0.0-ProductiononMonAug2706:42:492018Version18.3.0.0.0Copyright(c)1982,2018,Oracle.Allrightsreserved.Connectedto:OracleDatabase18cEnterpriseEditionRelease18.0.0.0.0-ProductionVersion18.3.0.0.0
客户端11.2.0.4,连接正常:
C:/Users/Dave>sqlplussystem/oracle@192.168.56.168:1522/daveSQL*Plus:Release11.2.0.4.0ProductiononFriAug3109:24:532018Copyright(c)1982,2013,Oracle.Allrightsreserved.Connectedto:OracleDatabase18cEnterpriseEditionRelease18.0.0.0.0-ProductionSQL>
但是11.2.0.1不行:
D:/instantclient_11>sqlplussystem/oracle@192.168.56.168:1522/daveSQL*Plus:Release11.2.0.1.0Productionon星期五8月3110:51:522018Copyright(c)1982,2010,Oracle.Allrightsreserved.ERROR:ORA-28040:Nomatchingauthenticationprotocol2. 处理ORA-28040错误
根据MOS文档 (ID 755605.1),ORA-28040的错误需要在Oracle 用户(非grid用户)的sqlnet.ora 文件中添加:
SQLNET.ALLOWED_LOGON_VERSION=8
或者使用更高版本的客户端。
但实际上,根据MOS文档(ID 2111876.1), 在Oracle 12c 以后的版本,
SQLNET.ALLOWED_LOGON_VERSION 参数已经弃用了,应该使用以下2个参数代替:
SQLNET.ALLOWED_LOGON_VERSION_SERVER = n
SQLNET.ALLOWED_LOGON_VERSION_CLIENT = n
这里的n默认为11. 第一个参数是客户端连接到服务器的时候启作用,第二个是做为客户端去连接其它数据库的时候启作用。例如创建db link。
其他可选值如下:
这里修改如下:
[oracle@www.cndba.cnadmin]$catsqlnet.ora#sqlnet.oraNetworkConfigurationFile:/u01/app/oracle/product/18.3.0/db_1/network/admin/sqlnet.ora#GeneratedbyOracleconfigurationtools.NAMES.DIRECTORY_PATH=(TNSNAMES,EZCONNECT)SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8SQLNET.ALLOWED_LOGON_VERSION_SERVER=8[oracle@www.cndba.cnadmin]$
修改后即可生效,在连接报错如下:
C:/Users/Dave>sqlplussystem/oracle@192.168.56.168:1522/daveSQL*Plus:Release11.2.0.1.0Productionon星期五8月3114:49:532018Copyright(c)1982,2010,Oracle.Allrightsreserved.ERROR:ORA-01017:invalidusername/password;logondenied3. 处理ORA-01017错误
从错误提示看是用户名或者密码错误,实际上这里用户名和密码没有问题。 这里的问题是我们配置的sqlnet对之前已经存在的帐号并没有生效,他们还保持在之前的兼容性。
SQL>setpages100SQL>selectusername,password_versionsfromdba_users;USERNAMEPASSWORD_VERSIONS----------------------------------------------------------------SYS11G12CSYSTEM11G12COUTLN11G12CSYS$UMF11G12CDBSNMP11G12CAPPQOSSYS11G12CDBSFWUSER11G12CGGSYS11G12C
这里的解决方法就是对用户修改下密码:
SQL>alterusersysidentifiedbyoracle;Useraltered.SQL>alterusersystemidentifiedbyoracle;Useraltered.
查看密码版本:
SQL>selectusername,password_versionsfromdba_users;USERNAMEPASSWORD_VERSIONS----------------------------------------------------------------SYS11G12CSYSTEM10G11G12C
注意这里虽然SYS并没有改变,但是SYSTEM的版本已经加上了10G。 实际上,现在这2个用户都可以连接了:
C:/Users/Dave>sqlplussystem/oracle@192.168.56.168:1522/daveSQL*Plus:Release11.2.0.1.0Productionon星期五8月3114:58:352018Copyright(c)1982,2010,Oracle.Allrightsreserved.连接到:OracleDatabase18cEnterpriseEditionRelease18.0.0.0.0-ProductionSQL>C:/Users/Dave>sqlplussys/oracle@192.168.56.168:1522/daveassysdbaSQL*Plus:Release11.2.0.1.0Productionon星期五8月3114:58:542018Copyright(c)1982,2010,Oracle.Allrightsreserved.连接到:OracleDatabase18cEnterpriseEditionRelease18.0.0.0.0-ProductionSQL>
到此,相信大家对“怎么解决Oracle低版本客户端连接报ORA-28040和ORA-01017错误”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。