通过ssh隧道使用oracle db.错误“ORA-12541:TNS:没有听众”

通过ssh隧道使用oracle db.错误“ORA-12541:TNS:没有听众”,第1张

概述您好我通过隧道从数据中心访问Oracle DB时遇到问题. 我们有一个非常标准的数据中心,一台机器可以从外面访问 (我把它的IP放在/ etc / hosts文件中作为dc)和Oracle DB里面.我们在内部网络上的oracle数据库的IP地址是192.168.1.7 要创建隧道我正在使用命令: ssh -L 1521:192.168.1.7:1521 root@dc 当然它可以工作(有时我也会 您好我通过隧道从数据中心访问Oracle DB时遇到问题.

我们有一个非常标准的数据中心,一台机器可以从外面访问
(我把它的IP放在/ etc / hosts文件中作为dc)和Oracle DB里面.我们在内部网络上的oracle数据库的IP地址是192.168.1.7

要创建隧道我正在使用命令:

ssh -L 1521:192.168.1.7:1521 root@dc

当然它可以工作(有时我也会添加一些deBUG -vv来查看是否有任何东西通过).

现在困难的部分 – 连接到Oracle.我安装了instantclIEnt 11.2.和我的tnsnames.ora看起来像这样:

testdb =  (DESCRIPTION =    (ADDRESS_List =      (ADDRESS = (PROTOCol = TCP)(HOST = localhost)(PORT = 1521))    )    (CONNECT_DATA =      (SERVICE_name = dbname)    )  )

当我尝试使用命令连接时:

./sqlplus username/pass@testdb

它开始通过隧道连接(我在ssh调试中看到它)但它失败了
告诉:

./sqlplus username/pass@testdbsql*Plus: Release 11.2.0.1.0 Production on Wed Jan 13 20:46:07 2010copyright (c) 1982,2009,Oracle.  All rights reserved.ERROR:ORA-12541: TNS:no ListenerEnter user-name:

当我在内网上尝试执行相同的命令时,它可以工作(显然唯一的区别是在tnsnames.ora主机中我们有192.168.1.7而不是本地主机).

我也尝试使用简单的命令行:

./sqlplus username/pass@//localhost:1521/testdb

或者

./sqlplus username/pass@//localhost:1521/testdb

但没有任何帮助:)

我将不胜感激任何帮助或建议.我错过了一些ssh标志以使其成为可能吗?

可能是日志文件:

***********************************************************************Fatal NI connect error 12541,connecting to: (DESCRIPTION=(ADDRESS_List=(ADDRESS=(PROTOCol=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_name=DBname)(CID=(PROGRAM=sqlplus@velvet)(HOST=velvet)(USER=johndoe))))  VERSION informatION:    TNS for linux: Version 11.2.0.1.0 - Production    TCP/IP NT Protocol Adapter for linux: Version 11.2.0.1.0 - Production  Time: 13-JAN-2010 20:48:42  Tracing not turned on.  Tns error struct:    ns main err code: 12541TNS-12541: Message 12541 not found; No message file for product=network,facility=TNS    ns secondary err code: 12560    nt main err code: 511TNS-00511: Message 511 not found; No message file for product=network,facility=TNS    nt secondary err code: 111    nt OS err code: 0

其中velvet是我的本地主机名,johndoe是我的本地用户名.
为什么要送到另一边?

更新:

在从数据中心内部调查了一下后,看起来像:
– 第一个连接是到达端口1521
– 但是后来sqlplus被重定向到端口号> 3300,每次都不同,增加3(我至少尝试过几次)
– 当我们尝试通过隧道连接时,sqlplus将尝试连接到localhost,它显然会失败

所以错误“No Listener”可能来自于我们没有重定向这些端口的事实.是否有任何方法(可能在tnsnames.ora文件中有一些选项)强制使用某个特定端口?

查看Metalink ID 361284.1(编辑:实际上不公开,但查找信息 here)

看起来Oracle Connection Manager可能是您的选择.它基本上处理防火墙内的端口重定向.我以前没用过,所以不能再告诉你了.

更新:另一种方法是使用MTS,为某些端口配置调度程序并在防火墙中打开这些端口.您不必为此安装其他软件,但通过共享服务器连接可能需要增加LARGE_POol_SIZE,以及其他考虑因素.因此,您仍然需要DBA角色来更改disPATCHERS参数.你还必须反d数据库.

总结

以上是内存溢出为你收集整理的通过ssh隧道使用oracle db.错误“ORA-12541:TNS:没有听众”全部内容,希望文章能够帮你解决通过ssh隧道使用oracle db.错误“ORA-12541:TNS:没有听众”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1167953.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存