欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle 低版本客户端连接19C报错ORA-28040

程序员文章站 2022-05-11 13:48:49
...

问题现象:

如使用Oracle11.2客户端连接Oracle 19c的时候,报错:

ORA-28040: No matching authentication protocol

ORA-28040: 没有匹配的验证协议

Oracle 低版本客户端连接19C报错ORA-28040


问题原因:

原因客户端与服务器段的密码生成版本(dba_users.password_versions)不一致导致

Effect of SQLNET.ALLOWED_LOGON_VERSION_SERVER on Password Version Generatio
SQLNET.ALLOWED_LOGON_VERSION_SERVER Setting 8 11 12 12a

Server runs in Exclusive Mode

No

No

Yes

Yes

Generate the 10G password version

Yes

Yes

No

No

Generate the 11G password version

Yes

Yes

Yes

No

Generate the 12C password version

Yes

Yes

Yes

Yes

 

 

 

 

 

 

解决方法:

在数据库服务器上的$ORACLE_HOME/network/admin/sqlnet.ora文件添加相应参数

注:单实例或RAC都是此目录的sqlnet.ora文件

Oracle12c以下版本

SQLNET.ALLOWED_LOGON_VERSION=##

Oracle12c及以上版本

SQLNET.ALLOWED_LOGON_VERSION_SERVER=##

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=##

两者区别

SQLNET.ALLOWED_LOGON_VERSION_SERVER:控制可以连接到12c数据库的客户端版本(client -->12c server

SQLNET.ALLOWED_LOGON_VERSION_CLIENT:控制12c数据库可以连到哪些版本的数据库(12c server  -->其它版本dbserver),例如:控制通过DB LINK可连接到哪些版本的oracle库。

添加参数以后无需重启数据库或监听,但需要重置数据库用户密码,否则会报错

ORA-01017: 用户名/口令无效; 登录被拒绝

修改完数据库用户密码后再重新登录,搞定

Oracle 低版本客户端连接19C报错ORA-28040