我如何使用端口转发通过netsh连接到Oracle数据库?

问题描述 投票:0回答:1

我有一台可以访问运行Oracle侦听器的主机的机器(A)。我可以使用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:侦听器找不到具有匹配协议栈的可用处理程序”

我已经检查了防火墙问题,并确保打开了端口1521。

任何想法,我可能会缺少什么,或者其他人是否成功将端口转发到Oracle侦听器?

java oracle portforwarding
1个回答
0
投票

相同的前向连接在我的机器上的SQL开发人员中的基本连接和高级连接中均能正常工作。

您可以尝试启用日志和跟踪文件来识别这些文章中提到的问题

Oracle Database 10g Debugging Connection problems 1

Oracle Database 10g Debugging Connection problems 2

© www.soinside.com 2019 - 2024. All rights reserved.