【发布时间】:2020-07-08 15:43:32
【问题描述】:
我有一台机器 (A) 可以访问运行 Oracle 侦听器的主机。我可以使用 SQL Developer 很好地连接到它。
我有另一台机器 (B),我也想连接到同一个数据库,但它不能直接访问运行侦听器的主机。但是,它确实可以访问机器 (A)。
我想将机器 A 上的一个端口转发到正在侦听端口 1521 的 Oracle 侦听器主机。
然后我应该能够建立从机器 B 到机器 A 的数据库连接,然后将端口转发到具有 Oracle 侦听器的主机。有点像中间人。
但是,我遇到了问题。我什至无法使用转发端口从机器 B 连接到 Oracle 数据库。我有使用 ssh 隧道做同样事情的经验。在这种情况下,我没有使用 ssh,我不明白为什么这不起作用。 以下是我正在经历的程序: 登录到机器 B - 安装了 Oracle 客户端。已安装 SQL Developer。 打开 SQL Developer - 选择 TNS 连接。输入凭据。连接成功 TNS 名称条目:
CRYSTAL=(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=yes)(FAILOVER=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=testhost.com)(PORT=1521)))(CONNECT_DATA=(service_name=svc1)))
现在设置转发:
C:\Windows\system32>netsh interface portproxy add v4tov4 listenaddress=127.0.0.1
listenport=1521 connectaddress=testhost.com connectport=1521
protocol=tcp
如果我 telnet localhost 1521 ,它可以建立连接。 作为一个简单的测试,我确保我可以使用 SQL Developer 连接到机器 B。但是这一次,我将连接类型设置为高级,这样我就可以输入 jdbc url。注意,我使用 127.0.01 而不是 testhost.com,因为它将被转发到 testhost.com
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=yes)(FAILOVER=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(service_name=svc1)))
此连接失败并显示“ORA-12516, TNS: listener could not find available handler with matching protocol stack”
我检查了防火墙问题并确保端口 1521 已打开。
有什么我可能遗漏的想法,或者有其他人成功将端口转发到 Oracle 侦听器吗?
【问题讨论】:
-
这篇关于端口转发的文章可能会对您有所帮助oracle-base.com/articles/linux/ssh-tunnel
-
转发似乎正在工作,因为我能够从 localhost 远程登录到 1521。我没有使用 ssh。流量未加密。我认为它的 Oracle 监听器是特定的。
标签: java oracle portforwarding