ORA-12541 TNS:在一个特定的远程数据库上没有监听器,但在其他远程数据库上没有监听器

时间:2017-11-10 20:17:53

标签: oracle oracle-sqldeveloper sqlplus tnsnames tns

某些上下文:我正在设置一个环境来运行我们的Lead编写的一些Ruby代码以连接到一些远程数据库。我正在使用Win10并安装了WSL。我已经安装了SQL * Plus,docker和Ruby,并且我确信我已经安装了所有依赖的gem(实际上在这一点上我知道它不是ruby问题)。我正在使用Docker来使用Oracle数据库的预构建映像,并且已经用数据填充它。

模糊的公司数据库信息:

'破了'DB(TNS没有听众)

  • 用户名:W-WORK-DEV
  • 密码:密码
  • 主持人:host1
  • 港口:999
  • SID:W-WORK-DB.tech.company

'工作'DB(可以很好地连接)

  • 用户名:C-OLD-DEV
  • 密码:密码
  • 主持人:host2
  • 港口:999
  • SID:C-OLD-DB.tech.company
  

请注意我在这里提供的名称纯粹是为了混淆,它们不代表任何关于年龄甚至配置的内容。它们本质上是相同的,只是不同主机上的不同数据库。另请注意,这是一家公司公司,其内部网络将拥有大量基础架构。

我遇到的问题是,对于我正在处理的特定数据库,我无法连接到它。我通过VPN(我在异地工作)连接到公司内部网并且连接到WORK-DB.tech.company时遇到问题,但我可以连接到C-OLD-DB.tech.company。方法我尝试连接:

  • Oracle SQL Developer

我输入了所有正确的jdbc字符串和用户名/密码。 甚至要求其他人尝试连接(至少3人)。他们都可以访问C-OLD-DB以及W-WORK-DB。使用此方法时,我得到The network adapter could not establish the connection

  

旁注:我很确定我过去已经很好地连接到数据库,但是我不能确定,因为我对这个团队很新,并且只访问过一次,如果那样的话。 / p>

  • SQL * Plus通过WSL

我安装了SQL * Plus,因为我认为Ruby在运行脚本时以某种身份访问它。我已经到了脚本能够连接到我的本地docker数据库的程度,但是当它尝试连接到远程数据库时,它将返回TNS: no listener。我也尝试使用sqlplus并得到了同样的错误。

  

示例:

     
      
  • sqlplus C-OLD-DEV / password @ host2:999 / C-OLD-DB.tech.company      
        
    • 此命令可以正常工作并连接到DB jsut。
    •   
  •   
  • sqlplus W-WORK-DEV / password @ host1:999 / W-WORK-DB.tech.company      
        
    • 这个命令给了我TNS:没有听众。
    •   
  •   

在我的研究过程中,我发现了有关tnsnames.ora,sqlnet.ora和listener.ora的提及。我在公司内部网上发现了相关文件并试图在我自己的个人环境中使用它们无济于事(其中一个sqlnet.ora文件实际上阻止了我连接到任何文件)我发现提到{{1}与ruby相关的文件,但我们的代码已经设置了数据库信息,当我尝试通过sqlplus手动连接时,我似乎正在尝试与脚本相同的解决方案。

以下是我在执行这些安装时设置的一些相关环境变量。我想在某些时候尝试设置我的环境时,我搞砸了一些配置,改变了sqldeveloper或sql plus连接到该数据库的方式。

  

$ echo $ ORACLE_HOME:/usr/lib/oracle/12.2/client64 /

     

$ echo $ TNS_ADMIN:/usr/lib/oracle/12.2/client64/network/admin

     

$ echo $ LD_LIBRARY_PATH:/usr/lib/oracle/12.2/client64/lib

我希望我已经提供了我遇到的所有信息,并清楚地解释了我的问题,如果您有任何问题可以随意评论,以便我可以清除它。感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

所以我的问题最终成为了一个防火墙/端口'问题。最后我发现我连接的特定端口被阻止了,但我认为它只在我的系统上。原来我使用的VPN是阻塞该端口的问题。公司有一个主数据中心和一个辅助数据中心,显然SDC VPN阻止了我的端口。我转而使用PDC VPN,它运作良好。

答案 1 :(得分:0)

您使用的是64位jdbc驱动程序吗?