ORA-28040: No matching authentication protocol
说明
Oracle19c 的 oci.dll 驱动不能在 Win7 上使用, 必须在 Win8 或者 Windows Server 2012 及以上版本的 windows 系统中才能使用
但是现在还有很多公司使用 window 7 作为开发机, 尤其是那些自以为对安全性要求很高的公司,
——————/´ ¯/)
—————-/—-/
—————-/—-/
———--/´¯/'--'/´¯`·_
———-/'/--/—-/—--/¨¯\
——--('(———- ¯~/'--')
———\————-'—--/
———-'\'————_-·´
————\———--(
————-\———--
导致 win7 系统上不能使用 PLSQL 或者 Toad 等链接 Oracle19c
解决方式一
登录 Linux 终端, 进入 $ORACLE_HOME/network/admin 修改 sqlnet.ora 文件, 在这个文件末尾添加以下内容(如果没有这个文件则在这个目录中创建这个文件)
# 添加上这个配置以后可以使用 Oracle 11g 的 oci.dll 驱动连接 Oracle11g 及 Oracle19c 之间的任意一个版本的 Oracle
# 下面等号后的12可以在 8 10 11 12 几个值间进行切换
SQLNET.ALLOWED_LOGON_VERSION=12
SQLNET.ALLOWED_LOGON_VERSION_SERVER=12
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=12
SQLNET.AUTHENTICATION_SERVICES=(NONE)
添加完以上内容后, 正常使用 PLSQL 如果报 ORA-01017: invalid username/password; logon denied
则在 Linux 终端使用以下命令登录 sqlplus
sqlplus /nolog
conn sys / as sysdba
然后使用下面的语句修改登录的用户密码
alter user 用户名 identified by 密码;
# 例如: 修改 sys 用户的密码为 sys
alter user sys identified by sys;
解决方式二
使用 Oracle18c 的 oci.dll 驱动连接 Oracle19c