数据库放在windows本机上root@mjg-VMware-Virtual-Platform:/home/mjg/桌面# telnet 192.168.110.14 1521 Trying 192.168.110.14... telnet: Unable to connect to remote host: 连接被拒绝
时间: 2025-06-13 13:30:26 浏览: 13
<think>好的,用户之前遇到了Tomcat部署问题,报错是数据库连接失败。现在他们提供了新的信息,数据库在Windows本机上,并且执行telnet命令时出现“连接被拒绝”。我需要先理解当前的情况。
首先,用户之前可能已经按照之前的建议检查了网络连通性,现在问题依旧存在。他们现在明确数据库在Windows主机上,而Tomcat运行在Ubuntu虚拟机里。telnet 192.168.110.14 1521失败,显示连接被拒绝,这说明端口无法访问。
接下来,我应该考虑可能的几个原因。首先,Windows防火墙可能阻止了1521端口的访问。其次,Oracle数据库的监听服务可能未启动或未正确配置。另外,虚拟机的网络设置是否正确,比如是否使用桥接模式或NAT,是否配置了正确的网络连接,让虚拟机能够访问主机的IP地址。
另外,用户可能在配置JDBC连接时使用了错误的IP、端口或服务名。需要检查应用的配置文件,确保数据库地址正确。同时,Oracle的监听程序listener.ora可能没有正确配置,导致监听不到来自虚拟机的连接请求。
可能的解决步骤包括:检查Windows防火墙设置,确保1521端口开放;验证Oracle监听服务是否运行;检查虚拟机的网络配置是否正确;确认JDBC连接字符串是否正确;查看Oracle的监听日志是否有错误信息。
用户可能需要逐步排查这些方面,从网络开始,再到数据库配置,最后检查应用配置。确保每一步都验证通过,才能解决连接问题。</think>根据您的描述,数据库部署在 **Windows本机**,而Tomcat运行在 **Ubuntu虚拟机**中,但通过`telnet 192.168.110.14 1521`测试端口连通性时返回**连接被拒绝**,以下是完整的排查和解决方案:
---
### 一、问题根本原因
**连接被拒绝(Connection refused)** 表明目标主机(Windows)的1521端口未开放或监听服务未启动。常见原因:
1. Windows防火墙拦截了1521端口
2. Oracle数据库监听服务未运行
3. Oracle监听配置未包含虚拟机IP或端口
4. 虚拟机与Windows主机网络不通
---
### 二、逐步排查指南
#### 步骤1:验证虚拟机到主机的网络连通性
在Ubuntu虚拟机执行:
```bash
ping 192.168.110.14 # 测试基础网络连通性
```
- ✅ 成功响应:网络层可达(如延迟 `<10ms`)
- ❌ 失败响应:检查虚拟机网络模式(建议使用**桥接模式**或**NAT端口映射**)
#### 步骤2:检查Windows防火墙规则
1. 打开Windows防火墙设置:
`控制面板 > Windows Defender 防火墙 > 高级设置`
2. 添加入站规则:
- 协议:TCP
- 端口:1521
- 作用域:允许所有IP或指定虚拟机IP(如`192.168.110.*`)
#### 步骤3:确认Oracle监听服务状态
1. 在Windows主机执行:
```bash
lsnrctl status # 命令行查看监听状态
```
- 若监听未启动:
```bash
lsnrctl start # 启动监听服务
```
#### 步骤4:检查Oracle监听配置
1. 打开监听配置文件:
`%ORACLE_HOME%\network\admin\listener.ora`
2. 确认监听地址包含主机IP或`0.0.0.0`:
```ini
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
)
)
```
#### 步骤5:验证Oracle端口监听
在Windows主机执行:
```bash
netstat -ano | findstr :1521
```
- 期望输出:
`TCP 0.0.0.0:1521 0.0.0.0:0 LISTENING`
#### 步骤6:检查JDBC连接配置
在Tomcat应用配置中确认:
```properties
# 示例配置(Oracle格式)
jdbc.url=jdbc:oracle:thin:@192.168.110.14:1521:ORCL
```
- 关键参数:
- IP地址:`192.168.110.14`(需与虚拟机可访问的Windows IP一致)
- 端口:`1521`
- 服务名:`ORCL`(需与实际数据库服务名一致)
---
### 三、虚拟网络配置建议
#### 1. 虚拟机网络模式选择
- **桥接模式**:虚拟机与主机处于同一局域网,可直接互通(推荐)
- **NAT模式**:需在VMware中配置端口转发:
```plaintext
主机端口:1521 → 虚拟机IP:1521
```
#### 2. 验证主机与虚拟机IP是否同网段
- Windows主机IP:`192.168.110.14`
- Ubuntu虚拟机IP:`192.168.110.x`(通过`ip a`命令查看)
---
### 四、Oracle数据库诊断工具
#### 1. 监听日志分析
查看日志文件:
`%ORACLE_HOME%\network\log\listener.log`
- 关注关键信息:
`TNS-12541: TNS:无监听程序`(监听未启动)
`TNS-01150: 监听地址错误`(配置错误)
#### 2. 使用TNSPING测试
在Ubuntu虚拟机执行:
```bash
tnsping 192.168.110.14:1521/ORCL
```
- ✅ 成功响应:`OK (XX msec)`
- ❌ 失败响应:检查服务名或网络
---
### 五、最终解决流程
```mermaid
graph TD
A[Telnet连接被拒绝] --> B{虚拟机能否ping通主机?}
B -->|否| C[调整虚拟机网络模式为桥接]
B -->|是| D{Windows防火墙是否开放1521?}
D -->|否| E[添加防火墙入站规则]
D -->|是| F{Oracle监听是否运行?}
F -->|否| G[启动监听服务lsnrctl start]
F -->|是| H{监听配置是否包含0.0.0.0?}
H -->|否| I[修改listener.ora]
H -->|是| J[检查JDBC连接字符串]
```
---
通过以上步骤,90%以上的同类问题可定位解决。若仍无法连接,建议提供`listener.log`和`jdbc配置`进一步分析。
阅读全文
相关推荐
















