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
解决步骤:
- 打开 Navicat,新建连接,选择 Oracle
- 连接方式选择:
Basic
- 填写连接信息:
Host Name: 127.0.0.1 或远程主机 IP Port: 1521(Oracle 默认端口) Service Name: 或 SID,如 orcl(根据实际设置) User Name: 你的 Oracle 用户名(如 system) Password: 对应密码
- 点击 “测试连接”,应可成功连接。
✅ 四、如果你使用的是 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 Name | 192.168.1.100 |
Port | 1521 |
Service Name | orcl (或你的实际名称) |
User Name | scott 或 system |
Password | tiger 或你的密码 |
如果你仍然遇到 ORA-28547
,可以贴出你的连接配置截图、tnsnames.ora
内容、Oracle 版本、Navicat 版本,我可以继续帮你排查。
发表回复