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

求助:SQL Developer通过SSH连接远程Oracle数据库失败如何解决?

解决SQL Developer通过SSH隧道连Oracle时的「Connection reset by peer」问题

我之前也碰到过完全一样的问题,折腾了好一阵才搞定,给你几个亲测有效的排查方向:

  • 先确认SSH端口转发的映射是否搞对了
    很多人在这里踩坑:SSH隧道的目标地址得是Oracle数据库所在服务器的内网IP+监听端口(通常是1521),而不是SSH服务器的IP。比如你SSH连的是跳板机A,但Oracle在机器B上,那端口转发要设成本地端口→B的IP:1521,而不是A的IP:1521。

  • 检查本地映射端口是否被占用
    打开终端/命令行,执行对应的命令看看端口状态:

    • Windows:netstat -ano | findstr :[你的本地端口]
    • Linux/macOS:lsof -i :[你的本地端口]
      如果发现端口被其他程序占用,换个没被用的端口(比如1522),然后同步修改SQL Developer里数据库连接的端口号。
  • 验证远程Oracle监听是否正常运行
    通过SSH登录到Oracle所在服务器,执行lsnrctl status命令,看看监听服务是不是启动了,监听的端口是不是1521,有没有允许来自隧道的连接请求。如果监听没启动,先执行lsnrctl start启动它。

  • 核对SQL Developer的连接配置
    如果是直连(不用TNS),注意「主机名」填localhost,「端口」填你SSH映射的本地端口,「服务名/ SID」要和远程Oracle的实际配置一致——别把SID和服务名搞混了,Oracle 12c之后推荐用服务名。
    如果用TNS连接,检查本地tnsnames.ora里的配置,比如:

    ORCL_DEV =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl.dev)
        )
      )
    

    这里的HOST必须是localhost,PORT对应SSH映射的本地端口,SERVICE_NAME要和远程Oracle的一致。

  • 临时关闭本地防火墙/安全软件
    有时候本地防火墙会拦截SQL Developer的出站请求,临时关闭防火墙或者给SQL Developer添加放行规则,再测试连接看看能不能通。

  • 检查SQL Developer版本和JDBC驱动兼容性
    老版本的SQL Developer可能和新版本Oracle不兼容,试试更新到最新版的SQL Developer;另外也可以检查JDBC驱动是否匹配Oracle版本,在SQL Developer的「工具>首选项>数据库>第三方JDBC驱动」里可以查看和更新。

小补充:如果以上都试过还是不行,你可以在SSH登录后,直接在远程服务器上用sqlplus username/password@localhost:1521/[服务名]测试本地连接。如果这个能连上,说明问题在本地的端口转发或SQL Developer配置;如果连不上,那就是Oracle本身的问题,得排查用户权限、数据库服务状态这些。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:54:21