Navicat 连接 Oracle 数据库时出现报错:

ORA-28547: connection to server failed, probable Oracle Net admin error

通常表示 Oracle 的网络配置存在问题,尤其是 Net 服务名(TNS)、监听器或 Oracle 客户端配置不正确。这是一个 Oracle Net 层的错误,与 Navicat 本身无关。


✅ 一、错误含义简要

ORA-28547 是 Oracle 报出的“连接服务器失败”错误,常出现在:

  • TNS 名称未配置或错误;
  • Listener 未正确监听数据库;
  • 客户端未正确读取 tnsnames.ora
  • 使用了外部数据网关(如连接 MySQL、SQL Server)但配置不完整(Heterogeneous Services);

✅ 二、Navicat 连接 Oracle 的三种方式

在 Navicat 中,你可以用以下三种方式连接 Oracle:

模式描述是否依赖 Oracle 客户端
Basic直连方式,填写主机/IP、端口、SID否 ✅ 推荐使用
TNS使用 Oracle 客户端的 TNS 名称是,必须正确配置 tnsnames.ora
LDAP使用 Oracle Internet Directory一般用不到

✅ 三、推荐:使用 Basic 方式 连接 Oracle

解决步骤:

  1. 打开 Navicat,新建连接,选择 Oracle
  2. 连接方式选择:Basic
  3. 填写连接信息:Host Name: 127.0.0.1 或远程主机 IP Port: 1521(Oracle 默认端口) Service Name: 或 SID,如 orcl(根据实际设置) User Name: 你的 Oracle 用户名(如 system) Password: 对应密码
  4. 点击 “测试连接”,应可成功连接。

✅ 四、如果你使用的是 TNS 方式连接,请检查以下内容:

1. 是否正确安装 Oracle Client

你需要安装:

  • Oracle Instant Client(推荐)
  • 或 Oracle Full Client(包含 SQL*Plus 和 Net Manager)

Navicat 64 位必须匹配 64 位 Oracle Client,32 位同理

2. 检查 tnsnames.ora

路径通常在:

$ORACLE_HOME/network/admin/tnsnames.ora

示例配置:

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

确保:

  • SERVICE_NAME 与你的数据库一致;
  • HOST 可访问;
  • PORT 正确。

3. 设置环境变量(Windows)

确保系统环境变量中存在:

TNS_ADMIN = C:\your_oracle_client\network\admin

用于告诉 Navicat 去哪里找 tnsnames.ora


✅ 五、测试 TNS 是否正常(可选)

如果你安装了 Oracle 客户端,可以使用命令行测试:

tnsping ORCL

返回成功说明 TNS 正常工作,否则请修复 TNS 配置。


✅ 六、其他可能原因

🔸 监听器未启动

使用如下命令检查监听状态(在数据库主机上):

lsnrctl status

如果未启动,使用:

lsnrctl start

🔸 防火墙拦截

确认 Oracle 监听端口(默认 1521)未被防火墙屏蔽,可尝试:

telnet 127.0.0.1 1521

✅ 七、最终建议:尽量使用 Basic 模式

✅ 不依赖 Oracle Client,不需要配置 TNS,更稳定简单。


✅ 八、示例 Basic 模式填写

字段示例值
Host Name192.168.1.100
Port1521
Service Nameorcl(或你的实际名称)
User Namescott 或 system
Passwordtiger 或你的密码

如果你仍然遇到 ORA-28547,可以贴出你的连接配置截图、tnsnames.ora 内容、Oracle 版本、Navicat 版本,我可以继续帮你排查。