【问题标题】:ORA-12170 TNS listener in oracle 11gORA-12170 Oracle 11g 中的 TNS 侦听器
【发布时间】:2014-05-01 21:24:07
【问题描述】:

我已经在亚马逊 EC2 中设置了一个带有 oracle 服务器 11g (11.2) 和一个小型数据库 (MYDB) 的 Windows Server 2008R2。

现在我想从我的计算机连接到这个数据库(我使用 PL/SQL 开发人员,但我不介意使用其他工具)

在服务器端我有:(其中 ec2-xx-xxx-xxx-xx.us-west-2.compute.amazonaws.com 是我的 Win 服务器的公共 DNS。)
tnsnames.ora:

 MYDB =
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ec2-xx-xxx-xxx-xx.us-west-2.compute.amazonaws.com)(PORT = 1521))
     (CONNECT_DATA =
      (SERVICE_NAME = MYDB)
     )
   )

listener.ora:

 # listener.ora Network Configuration File: C:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora
 # Generated by Oracle configuration tools.

 LISTENER =
     (DESCRIPTION_LIST =
      (DESCRIPTION =
       (ADDRESS = (PROTOCOL = TCP)(HOST = ec2-xx-xxx-xxx-xx.us-west-2.compute.amazonaws.com)(PORT = 1521))
       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      )
    )

   ADR_BASE_LISTENER = C:\app\Administrator

在我的 tnsnames.ora 的电脑上,我有:

 MYDB=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ec2-xx-xxx-xxx-xx.us-west-2.compute.amazonaws.com)(PORT = 1521))
    (CONNECT_DATA =
     (SERVICE_NAME = MYDB)
    )
  )

通过这些设置,我可以在我的服务器上进行本地连接,但不能通过我的计算机。
我已经在我的 EC2 上设置了安全组:

入站规则

Type                Protocol              Port Range     Source
RDP                 TCP                   3389           Anywhere 0.0.0.0/0
SSH                 TCP                   22             Anywhere 0.0.0.0/0
Custom ICMP Rule    Echo Reply            N/A            Anywhere 0.0.0.0/0

当我尝试从我的计算机连接时,我得到了

ORA-12170:TNS:发生连接超时。

任何想法我做错了什么,或故障排除计划?

【问题讨论】:

  • 您确实需要端口 1521 的入站规则吗?或者您打算通过 SSH 进行隧道传输,在这种情况下,您的 PC tnsnames.ora 条目需要反映这一点?为什么问题标题是 ORA-12514 而正文是 ORA-12170?
  • @Alex Poole。你能再解释一下吗?我只想通过 PL/SQL 开发人员连接。
  • @AlexPoole :抱歉,复制粘贴错误。我改了标题

标签: oracle amazon-ec2 oracle11g plsqldeveloper ora-12170


【解决方案1】:

您的security groups 仅允许在端口 3389 和 22(加上 ICMP ping)上进行 RDP 和 SSH 访问。当您尝试连接到使用端口 1521 的数据库时,正如您的 tnsnames.ora 指示的那样:

(HOST = ec2-xx-xxx-xxx-xx.us-west-2.compute.amazonaws.com)(PORT = 1521))

因此,除了现有的 3389 和 22 之外,您还需要 add an inbound firewall rule 允许 TCP 端口 1521 上的流量通过您的 EC2 实例。我不知道 SQL*Net 是否会列在“类型”中下拉,因此您可能需要选择“所有 TCP”。

不过,您可能还希望使其更具限制性 - 将“源”限制为您的 PC 的 IP 地址(如果这是私有的),或者您公司的传出 IP(如果不是);如果您有来自 ISP 的静态公共 IP。

【讨论】:

  • 好的,但是我应该添加哪种类型的规则?
  • 我不知道“类型”下拉菜单中有什么。如果它有“SQL*Net”或“Oracle Net”会更好——预先填充了 TCP/1521。 'Any TCP' 选项看起来不受限制,这并不理想;你真的希望能够选择一个端口。其实...see step 4 in this walk-through.
  • 谢谢。你是我的上帝。我花了3天多。你真是个天才。
  • 仅作记录,入站规则为 - 类型:自定义 TCP 规则,协议:TCP 端口范围:1521
猜你喜欢
  • 2015-11-03
  • 2012-03-13
  • 2020-06-30
  • 2012-11-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
  • 2013-01-17
  • 2014-07-21
相关资源
最近更新 更多