转载自:https://blog.csdn.net/wanghailong_qd/article/details/85887825

前言:本人换了电脑,安装了oracle11。
用navicat可以连接到公司开发数据库,连接测试数据库时出现了28040这个问题。
没问公司的数据库是个什么配置,从本地版本入手吧。
看了好几篇文章,困扰了一天,终于弄好了。
重点就是oci.dll的版本,原来navicat自带的配置是我oracle安装地址中的oci.dll,现在我改成了navicat安装时带的oci.dll。下图是我修改后的配置路径。
后来我对比了一下两个oci.dll,确实用大点的文件好啊!

在这里插入图片描述在这里插入图片描述

原文如下:
Navicat版本为12.0.29, Oracle数据库版本为12c. 新建一个数据库连接, 填写完主机, 服务, 用户名, 密码等信息后点击测试连接报错: ORA-28040 No matching authentication protocol.
在这里插入图片描述

错误原因就是oci.dll版本不匹配, 通常是过低, 即低版本的oci.dll连接高版本Oracle. 解决办法就是将oci.dll更换为高版本.

oci, racle call interface. 以动态链接库(dll, Dynamic Link Library)方式实现的Oracle访问接口. 而在java开发中常用的ojdbc.jar, 则是纯java实现, 以java socket进行通信的.

点击选工具菜单 -> 选项
在这里插入图片描述

左侧最下面一行 环境 -> 右侧OCI环境, 默认的配置为Navicat自带的oci.dll
在这里插入图片描述

重新选择, 可以看到Navicat自带的instant client版本为10_2. 下载一个最新版本的Oracle instant client, 并选择里面的oci.dll文件即可. 配置完成后需要重启Navicat才会生效在这里插入图片描述

附上Oracle官方Instant Client介绍及下载地址: 截至这篇文章的时候最新版本为18.3
https://www.oracle.com/technetwork/database/database-technologies/instant-client/overview/index-4369172.html

下载页面首先需要同意许可. 另外页面中包含多个下载链接, 请注意区分, 不要下载错了. 例如第2个只是SQL Plus工具, 并不包含我们需要的oci.dll. 相反地, 这个工具也需要oci.dll才能运行. 第1个才是我们需要的Instant Client. 下载后解压, 就可以找到oci.dll文件了
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐