0

我已经在亚马逊 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)
     )
   )

监听器.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:发生连接超时。

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

4

1 回答 1

1

您的安全组仅允许在端口 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 之外,您还需要添加入站防火墙规则,以允许 TCP 端口 1521 上的流量通过您的 EC2 实例。我不知道 SQL*Net 是否会列在“类型”下拉列表中向下,因此您可能需要选择“所有 TCP”。

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

于 2014-03-24T14:13:55.607 回答