oracle10G/oracle11G连接oracle12c,ORA-28040的解决

oracle10G/oracle11G连接oracle12c,ORA-28040的解决

    • 1、修改oracle12c数据库的sqlnet.ora 配置
    • 2、修改用户密码
    • 参考

在使用oracle10G/oracle11G的客户端或者服务端连接oracle12c数据库时,会提示以下错误:
ORA-28040: No matching authentication protocol

可以通过以下修改,进行解决该问题

1、修改oracle12c数据库的sqlnet.ora 配置

该文件在product\12.2.0\dbhome_1\network\admin下面,添加如下语句

SQLNET.ALLOWED_LOGON_VERSION=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

上面是对数据库服务端oracle12c进行修改,可以允许oracle10G、oracle11G进行连接。如果允许oracle11G进行连接,oracle10G不可以,上面的语句可变为

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=11
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 11

这里是修改允许用户密码的版本,可通过下面语句在服务端查询

select username,account_status,password_versions from dba_users where a
nt_status=‘OPEN’;

之前只允许oracle12c的密码版本,上面的修改,分别允许“10G、11G、12C”,“11G、12C”。

客户端:再次尝试连接,提示用户名密码错误:
ORA-01017: invalid username/password; logon denied
接着进行第二步,用户密码修改

2、修改用户密码

在数据库服务端oracle12c进行修改对应用户的密码

alter user XXX identified by XXX;

密码修改后,用客户端再次尝试连接,用户登录成功。

在JAVA WEB项目中,连接数据库时,也会发生该问题,是因为连接Oracle数据库对应的jar包中,包含了连接版本信息,密码版本在服务端不支持造成的,跟用低版本客户端连接服务端的问题一样,按上述修改可以解决。

参考

1: https://blog.csdn.net/huryer/article/details/88685779
2: https://community.oracle.com/message/14446765

你可能感兴趣的:(Oracle)