Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
oracle 11g中的ORA-12170 TNS侦听器_Oracle_Amazon Ec2_Oracle11g_Plsqldeveloper_Ora 12170 - Fatal编程技术网

oracle 11g中的ORA-12170 TNS侦听器

oracle 11g中的ORA-12170 TNS侦听器,oracle,amazon-ec2,oracle11g,plsqldeveloper,ora-12170,Oracle,Amazon Ec2,Oracle11g,Plsqldeveloper,Ora 12170,我已经在AmazonEC2中安装了一个Windows Server 2008R2,其中包含一个oracle Server 11g(11.2)和一个小型数据库(MYDB) 现在我想从我的计算机连接到这个数据库(我使用PL/SQLDeveloper,但我不介意使用其他工具) 在服务器端,我有:(其中ec2-xx-xxx-xxx-xx.us-west-2.compute.amazonaws.com是我的Win服务器的公共DNS。) tnsnames.ora: MYDB = (DESCRIPTI

我已经在AmazonEC2中安装了一个Windows Server 2008R2,其中包含一个oracle Server 11g(11.2)和一个小型数据库(MYDB)

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

在服务器端,我有:(其中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的pc上,我有:

 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:发生连接超时

你知道我做错了什么,或者有什么故障排除计划吗?

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

(HOST = ec2-xx-xxx-xxx-xx.us-west-2.compute.amazonaws.com)(PORT = 1521))
因此,除了3389和3322的现有流量外,还需要允许TCP端口1521上的流量通过EC2实例。我不知道SQL*Net是否会列在“类型”下拉列表中,因此您可能需要选择“所有TCP”


你可能还想让它更具限制性——如果这是私有的,则将“来源”限制为你电脑的IP地址,如果不是,则将“来源”限制为你公司的传出IP地址;如果您的ISP提供静态公共IP。

您肯定需要端口1521的入站规则吗?或者您计划通过SSH进行隧道传输,在这种情况下,您的PC
tnsnames.ora
条目需要反映这一点?为什么问题的标题是指ORA-12514,而不是ORA-12170的主体?@Alex Poole。你能再解释一下吗?我只想通过PL/SQL开发人员进行连接。@AlexPoole:对不起,复制粘贴错误。我已经更改了标题OK,但是我应该添加哪种类型的规则?我不知道“类型”下拉列表中有什么。如果它有'SQL*Net'或'oraclenet'(用TCP/1521预先填充的东西)就好了。“任意TCP”选项看起来不受限制,这并不理想;您确实希望能够选择单个端口。事实上谢谢你是我的上帝。我已经花了三天多的时间。你真是太好了。只是为了记录在案,入站规则是-Type:Custom-TCP-rule,Protocol:TCP-Port-Range:1521