ora-28547错误本质是navicat缺少匹配oracle 11g的oci.dll,需先确认navicat位数(32/64),再下载对应架构的instant client(如11.2.0.4.0),在“工具→选项→环境→oci library”中指定其oci.dll路径,重启后方可连接。
ora-28547 不是网络不通、服务没开,也不是用户名密码错了——它本质是 navicat 找不到能跟 oracle 11g(或更高版本)正常“对话”的 oci.dll。
确认你的 Navicat 是 64 位还是 32 位
这是最容易被跳过的一步,但错配直接导致闪退或报错。在 Windows 上:
- 右键 Navicat 快捷方式 → “属性” → “快捷方式”选项卡 → 查看目标路径里是否含
Navicat64.exe(64 位)或Navicat.exe(32 位) - 或者打开任务管理器 → “详细信息”页 → 找到
navicat.exe或navicat64.exe,看“平台”列标的是“64 位”还是“32 位” - 必须下载对应架构的 Oracle Instant Client:64 位 Navicat 就只能用 64 位
instantclient-basic-windows.x64-*.zip,反之亦然
下载并配置匹配版本的 Instant Client
Oracle 官方不再维护旧版下载页,但截至 2026 年 6 月,instantclient-basic-windows.x64-11.2.0.4.0.zip 和 instantclient-basic-windows.x64-12.2.0.1.0.zip 仍是连接 Oracle 11g/12c 最稳定的组合。不要用 21c 或 23c 的客户端去连 11g。
- 从 Oracle 官网搜索 “Oracle Instant Client for Microsoft Windows (x64)” → 下载
Basic Package(不是 SDK 或 SQL*Plus) - 解压后,确保目录里有
oci.dll(不是oci.dll.bak或其他重命名文件) - 在 Navicat 中:工具 → 选项 → 环境 → OCI Library → 点击浏览,**直接选中该目录下的
oci.dll文件**(不是整个文件夹) - 切勿把 Instant Client 路径加进系统
PATH,Navicat 会优先读自己配置项,加 PATH 反而容易引发冲突
连接时仍失败?检查 SERVICE_NAME 和监听状态
ORA-28547 有时会掩盖更底层的问题。即使 oci.dll 正确,如果服务名写错或监听未就绪,也会触发同一错误码。
- 确认 Oracle 服务端用的是
SERVICE_NAME而非SID:在 Navicat 连接设置里,“服务名”字段填的是devdb这类名称,不是ORCL这种传统 SID - 在 Oracle 服务器上执行:
lsnrctl status,确认输出中包含你填写的服务名,且状态为READY - 本地测试连通性:用服务器上的
sqlplus user/pass@//host:1521/devdb能连上,才说明服务端无问题;若这里也报 ORA-28547,说明 Instant Client 配置根本没生效
最常被忽略的点:Navicat 配置完 OCI 路径后必须完全退出再重启,仅“测试连接”或“刷新”无效;另外,某些杀毒软件会拦截 oci.dll 加载,临时禁用可快速验证是否为此类干扰。











