问题背景
系统Oracle版本从原来的Oracle 11g 升级到 Oracle 19c后,PLSQL客户端连接报错:

ORA-28040: No matching authentication protocol
ORA-28040: 没有匹配的验证协议
问题原因
客户端与服务器端的密码生成版本
dba_users.password_versions不一致导致,升级前客户端密码版本如下:
–查询Oracle服务器端密码版本
select d.password_versions from dba_users d;

解决方案
1、在数据库服务器上找到sqlnet.ora文件
/oracle/app/oracle/product/19.0.0.0/db_1/network/admin/sqlnet.ora

2、如果有直接修改,没有直接创建

3、配置内容: 本地的PLSQL客户端是8.5版本,所以版本号配置为8就行。
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
4、注意事项:
如果没有sqlnet.ora文件可以直接创建 vi sqlnet.ora
如果有不能直接vi 需要使sed -a 命令追加,否则会导致ora文件乱码
添加参数后新无需重启数据库或者监听,但是需要修改用户密码,否则会报错
5、修改用户名密码:
用Oracle 用户以sysdba身份登录sqlplus
sqlplus / as sysdba

修改用户密码
alter user 用户名 identified by 新密码;

end
解决Oracle升级后PLSQL连接报ORA-28040错误
在将Oracle版本从11g升级到19c后,由于客户端与服务器端的密码版本不一致,导致PLSQL连接出现ORA-28040错误。解决方案包括修改服务器上的sqlnet.ora文件,设置SQLNET.ALLOWED_LOGON_VERSION_SERVER和CLIENT为8,然后以Oracle用户sysdba身份登录sqlplus修改用户密码。
2612





