我在亚马逊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:发生连接超时。
任何想法我做错了什么,或者是故障排除计划?
答案 0 :(得分: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))
所以你需要add an inbound firewall rule允许TCP端口1521上的流量通过你的EC2实例,除了3389和22的现有流量。我不知道SQL * Net是否会列在& #39;类型'下拉,因此您可能需要选择“所有TCP'。
”你可能也想让它更具限制性 - 限制来源'如果这是私有的话,也可能是你公司的IP地址,如果没有,你的公司也可以输出IP地址;如果你有来自ISP的静态公共IP。