Oracle运维管理——Navicat连接Oracle 19c报ORA-28547错误的解决办法
一、问题描述
由于 Navicat 版权管控非常严格,随时都在给盗版用户发律师函,所以我之前对于Oracle的管理都是使用的开源软件DBeaver顶着,最近公司采购了几套Navicat,我也就顺理成章转了过来。然而虽然已经是2026年10月份,虽然使用的已经是Navicat Premium 17,但是还是遇到了无法顺利连接Oracle 19c(或者更高版本)的问题。

从 ORA-28547 报错的字面意思是 Oracle Net 配置有问题,我顺着这个去排查了监听、tnsnames、防火墙等问题,但方向其实都错了。问题的根因其实是在客户端,也就是我的 Windows 电脑上。在本机通过 Navicat 去连接 Oracle 所调用的 oci.dll 版本太老而导致的。
而 DBeaver 连接 Oracle 默认使用 JDBC Thin 驱动(ojdbc 的 jar 包),整个过程都是纯 Java 实现,所以不依赖 oci.dll,所以出现两种客户端一个能连一个不能连的情况。
二、解决办法
1、查看库文件路径
通过Navicat"工具 → 选项 → 环境"可以看到Navicat Premium 17 默认的 OCI 库路径,截图里我已经替换为了高版本的 oci.dll ,而实际Navicat 自带的是11.2 的 Instant Client。

2、下载Instant Client
知道问题后就好办了,只需要在Oracle官网下载 19c 或更高版本的Instant Client 即可,下载的时候注意要和系统位数对齐,现在通常都是下载64位版本,下载链接为:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
这里我下载的是Basic Package。还有一个体积更小的 Basic Light ,区别是只带英文错误信息。小版本号(19.30、19.32 之类)随时在更新,选最新的就行,不用和数据库服务端对齐。

3、替换oci.dll
Instant Client 是个免安装压缩包,解压后就是一个文件夹,里面是一堆 dll 文件(oci.dll、oraociei19.dll 等),不需要安装到本地。它本质上就是 Oracle 官方提供的一套客户端连接库,Navicat 会调用这些 dll 去跟数据库服务端通信。
这里的 oci.dll 就是我们需要的新版本库文件

在 Navicat 的"工具 → 选项 → 环境"里,把 OCI 库路径改成 实际路径,然后完全退出一次 Navicat 让配置生效,然后就可以正常连接数据库了。需要注意后期也不要随意挪动这个文件或者删除掉,因为Navicat每次都会调用这个文件才能连接数据库。
猜你喜欢
MySQL | Oracle Oracle教程(8)Oracle 19C 单实例调整为 ADG 架构
一、ADG架构介绍Active Data Guard 简称ADG,是 Oracle Data Guard 架构下给物理备库(Physical Standby)追加的一个功能,非ADG模式下的物理备库只...
MySQL | Oracle Oracle教程(7)RMAN 物理备份教程与实战
一、RMAN 介绍RMAN 是 Oracle 自带的物理备份工具,它的核心作用是保护数据库的物理完整性,确保在发生磁盘损坏、误删数据文件、服务器整体故障等灾难场景下能够将数据库恢复到某个可用的状态。R...
MySQL | Oracle Oracle运维管理——修改用户密码过期时间
在 Oracle 数据库中,用户的密码有效期通过PROFILE(资源限制配置文件)中的 PASSWORD_LIFE_TIME 参数控制。如果没有为用户单独创建 PROFILE,默认使用一个...
MySQL | Oracle Oracle教程(6)SGA\PGA\REDO核心参数调优
一、Oracle核心参数介绍1、SGASGA(System Global Area)是 Oracle 实例启动时分配的共享内存区域,所有连接到该实例的会话都共用这块内存,是整个数据库实例对外提供服务的...
MySQL | Oracle Oracle教程(5)数据泵逻辑备份教程与实战
一、数据泵介绍数据泵(Data Pump)是 Oracle 10g 开始引入的命令行逻辑备份与恢复工具。通过 expdp / impdp ,可以对所有数据库对象(模式、表数据、表空间等)进行高效导出和...
文章评论