1,问题报错如图所示;
在java链接oracle21c时出现java.sql.SQLException: ORA-28040: 没有匹配的验证协议
2,出现以上问题,是由于 连接数据库驱动 和 oracle版本不一致造成的;有两种解决方式:
(1):下载新的对应驱动;
(2):修改oracle配置,在Oracle安装路径下 找到sqlnet.ora文件,下图所示
(3):加上如下配置;
SQLNET.ALLOWED_LOGON_VERSION=
8
SQLNET.ALLOWED_LOGON_VERSION_SERVER=
8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=
8
如图所示:
4、重启oracle数据库服务,主要是监听,不过最好都重启一下。
(1):重启Oracle数据库和监听命令
在Oracle数据库中,可以使用SQL*Plus工具来重启数据库和监听器。以下是相关的命令:
..1, 重启监听器:
lsnrctl stop
lsnrctl start
..2,重启数据库:
首先登录到SQL*Plus:
sqlplus / as sysdba
然后执行以下命令来关闭数据库:
shutdown immediate;
最后执行以下命令来启动数据库:
startup;
如果你有多个实例或者特定的数据库名,你可以在startup
命令后面指定数据库名:
startup mount;
alter database open;
5、此时通过java连接出现
java.sql.SQLException: ORA-
01017
: 用户名/口令无效; 登录被拒绝
但是通过PLSQL Developer 13 (64 bit)和sqldeveloper又能正常连接。
6、解决办法就是重新修改用户的密码即可,通过如下命令登录到sysdba中:
sqlplus / as sysdba
conn / as sysdba;
alter user user1 identified by 123456;
如下图所示