使用 Navicat 远程连接 Oracle 11g 报错:

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

这个错误意味着 Oracle 客户端在通过 Net 服务连接数据库时失败了,可能是由于 TNS 配置错误、监听器未配置或网络通信异常等原因。下面是详细的排查和解决步骤。


✅ 一、推荐使用 Navicat 的 Basic 连接模式

Navicat 支持三种连接方式,强烈推荐用 Basic 模式 来避免依赖 TNS 配置。

连接方式:Basic(推荐)

打开 Navicat → 新建 Oracle 连接 → 选择 连接类型:Basic

字段示例
Host Name远程 IP(如:192.168.1.100)
Port1521(Oracle 默认端口)
Service Nameorcl(与你数据库的实际 service name 保持一致)
User Name如 scott 或 system
Password用户密码

点击 “测试连接”,应能连接成功。


❌ 二、使用 TNS 连接模式时易触发 ORA-28547

如果你使用的是 Navicat 的 TNS 模式,则需确认本机已正确安装并配置 Oracle 客户端,包括:

1. 安装 Oracle Instant Client(或 Full Client)

  • Oracle 客户端必须与你的 Navicat 位数一致(64 位 vs 32 位)
  • 建议使用 Instant Client + 配置 tnsnames.ora

2. 配置 tnsnames.ora

位置示例(Windows):

C:\oracle\instantclient_19_11\network\admin\tnsnames.ora

内容示例:

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

注意:SERVICE_NAME 和你的数据库实际 show parameter service_names 一致。

3. 设置环境变量

添加系统环境变量(如果使用 TNS 模式):

TNS_ADMIN=C:\oracle\instantclient_19_11\network\admin

✅ 三、Oracle 服务器端的检查步骤

在远程 Oracle 11g 主机上,确认以下配置:

1. 确保监听器正常运行

lsnrctl status

如果未启动:

lsnrctl start

2. 检查监听器是否监听了正确的服务名(listener.ora)

$ORACLE_HOME/network/admin/listener.ora 中应包含:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
      (GLOBAL_DBNAME = orcl)
    )
  )

如果你数据库实际使用的是 Service Name(而非 SID),建议也配置 GLOBAL_DBNAME


3. 检查 Oracle 是否启用了远程连接

登录 SQLPlus,执行:

show parameter remote_login;

应看到:

remote_login_passwordfile  EXCLUSIVE

如果是 NONE,可能会有认证问题。


4. 防火墙配置

确保 Oracle 的监听端口(默认 1521)未被防火墙屏蔽:

telnet 192.168.1.100 1521

如果不能连接,请在远程主机上开放端口或关闭防火墙测试:

sudo ufw disable      # Ubuntu
sudo systemctl stop firewalld  # CentOS/RHEL

✅ 四、验证连接是否正常

  1. 使用 SQLPlus 本地连接:
sqlplus scott/tiger@//192.168.1.100:1521/orcl
  1. 使用 tnsping 工具:
tnsping orcl

✅ 五、Navicat 推荐配置方式(避开 TNS)

最稳定的方法是:Basic 模式 + 使用 Service Name + 指定 IP 和端口


✅ 六、总结快速排查表

检查项操作
Oracle 监听器是否正常lsnrctl status
监听端口是否开放telnet ip 1521
Navicat 是否用 Basic 模式是,避免用 TNS
服务名是否正确用 show parameter service_names 确认
是否用了 TNS 配置检查 tnsnames.ora 是否匹配
客户端是否与 Navicat 位数一致64 位 Navicat → 64 位 Oracle Client

如果你仍然无法解决,请提供以下信息,我可以进一步协助你排查:

  • Navicat 版本(32 位 or 64 位)
  • Oracle 数据库版本
  • 你是用 Basic 还是 TNS 模式连接?
  • 报错截图或配置截图

我可以根据你的实际环境写一个精准配置方案。