You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VirtualBox NAT模式下主机SQL Developer连接虚拟机ORA数据库失败求助

排查VirtualBox NAT环境下Oracle 11G连接失败问题

我来帮你一步步排查这个Oracle连接问题,结合你受限于VirtualBox NAT网络的情况,咱们从几个核心关键点入手:

  • 确认虚拟机内Oracle监听状态
    先登录Ubuntu虚拟机,执行命令 lsnrctl status,重点看这几个信息:

    • 监听是否处于READY状态
    • 监听的端口是不是1521
    • 监听地址是否为0.0.0.0或者虚拟机的内网IP(如果监听只绑定了127.0.0.1,主机转发的请求会被拒绝)
      如果监听未启动,执行 lsnrctl start 启动;如果监听地址不对,修改$ORACLE_HOME/network/admin/listener.ora,把监听地址改成0.0.0.0。
  • 验证VirtualBox NAT转发规则有效性
    先在Windows主机上用命令提示符测试端口连通性:telnet localhost 2223。如果能连通,说明转发规则没问题;如果不通:

    • 检查VirtualBox的NAT转发规则:确保协议是TCP,主机IP留空或填127.0.0.1,主机端口2223,子系统IP填Ubuntu虚拟机的内网IP(用ip addr在虚拟机里查询),子系统端口1521
    • 临时关闭Windows主机的防火墙,测试是否是防火墙拦截了2223端口
  • 检查tnsnames.ora配置准确性
    不管是主机还是虚拟机的tnsnames配置,要对应主机的localhost和转发端口2223,示例配置如下:

    ORCL =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 2223))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )
    

    注意SERVICE_NAME必须和Oracle实例的服务名一致,你可以在虚拟机里执行SQL查询确认:

    select service_name from v$service;
    
  • 排查Ubuntu虚拟机的网络拦截

    • 检查iptables规则:执行sudo iptables -L,如果有拒绝1521端口的规则,添加允许规则:sudo iptables -A INPUT -p tcp --dport 1521 -j ACCEPT,或者临时关闭iptables测试
    • 检查sqlnet.ora:如果里面有TCP.VALIDNODE_CHECKING=YES配置,需要把虚拟机内网IP或者NAT网关IP加入允许列表,或者直接注释掉该配置,避免Oracle拒绝外部连接请求
  • 用tnsping定位具体错误
    在Windows主机上执行 tnsping orcl(替换成你tnsnames里的别名),如果连接失败,返回的错误信息会明确指向问题根源(比如监听无响应、服务名不匹配等),根据错误信息再针对性解决。

内容的提问来源于stack exchange,提问作者Jawor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:20:11