Oracle11g googlecomputeengine中的Oracle数据库

Oracle11g googlecomputeengine中的Oracle数据库,oracle11g,port,google-compute-engine,firewall,windows-firewall,Oracle11g,Port,Google Compute Engine,Firewall,Windows Firewall,我已经在谷歌计算引擎(GCE)虚拟机(Windows Server 2012数据中心)中安装了Oracle 11g标准版。我已经在Windows防火墙中为tcp:1521创建了入站和出站规则。同时,我为GCE网络创建了tcp:1521防火墙规则 当我从localhost使用sqldeveloper连接到数据库时,一切正常。但是,如果尝试从远程主机(也使用SQL Developer)连接到数据库,则会出现错误: Status: Failure - Test failed: IO Error: Th

我已经在谷歌计算引擎(GCE)虚拟机(Windows Server 2012数据中心)中安装了Oracle 11g标准版。我已经在Windows防火墙中为tcp:1521创建了入站和出站规则。同时,我为GCE网络创建了tcp:1521防火墙规则

当我从localhost使用sqldeveloper连接到数据库时,一切正常。但是,如果尝试从远程主机(也使用SQL Developer)连接到数据库,则会出现错误:

Status: Failure - Test failed: IO Error: The Network Adapter could not establish the connection.

我已成功从远程主机ping托管数据库的虚拟机,但当我telnet时,连接失败:

Connecting To <host-ip>... Could not open connection to the host, on port 1521: Connect failed
正在连接到。。。无法在端口1521上打开与主机的连接:连接失败
此外,nmap声明在虚拟机中过滤端口1521


我错过了什么?感谢您的帮助。

以下是您可以采取的一些步骤来排除故障并解决此问题:

首先,为了进行故障排除,请关闭Windows VM的防火墙:

netsh firewall set opmode mode=Disable
以后可以使用以下命令将其打开:

netsh firewall set opmode mode=Enable
确保您的远程IP地址列在
tcp:1521
的GCE防火墙规则的
源过滤器中。如果GCE防火墙规则有一个
目标标记
,则您的Windows VM实例也必须使用相同的标签进行标记,因此此防火墙规则适用于它


如果防火墙规则配置正确,则要检查的另一点是。由于您的虚拟机的内部IP地址不是静态IP地址,并且可能会发生更改,请使用SSL配置TCP/IP或TCP/IP,并在侦听协议地址的主机字段中输入计算机的主机名。

我在考虑您的答案后进行了进一步研究,这是我们应该考虑的:

1。配置Windows服务器防火墙: 进入
控制面板
->
系统和安全
->
Windows防火墙
->
高级设置
。然后创建具有以下功能的新入站规则:

规则类型:
端口

协议:
TCP

端口号:
1521
(除非您在Oracle数据库中指定了不同的端口号)

操作:
允许连接

档案:
域+私有+公共
(或适用于您的案例的档案)

名称:
Oracle DB
(或您想要的任何名称)

完成后,使用为入站规则指定的相同功能创建出站规则


2。配置Google Compute Engine网络防火墙:在Google Compute Engine(GCE)控制台转到
网络
->
防火墙规则
。然后单击新防火墙规则
,并对其进行配置:

名称:
oracle db
(或您想要的任何名称)

网络:
默认值
(或已部署虚拟机的网络。请从虚拟机实例仪表板验证)

源筛选器:
允许来自任何源(0.0.0.0/0)
(警告:如果只想启用一个主机或一组主机,则应选择IP范围。然后指定域或IP地址)

允许的协议和端口:
tcp:1521
(或适用于您的情况的协议和端口-与您为Windows防火墙规则定义的协议和端口相同)

最后,单击Create


3。配置Oracle Net侦听器:默认情况下,Oracle数据库不接受远程连接。它只接受本地主机请求。因此,在Oracle数据库服务器上以管理员身份打开CMD。我们将在执行以下操作时停止数据库网络侦听器:

lsnrctl STOP
现在,转到Oracle安装路径Oracle\u path(通常为:
Oracle\u path
=
C:\app\
)。然后导航到:
ORACLE\u PATH\product\11.2.0\dbhome\u 1\NETWORK\ADMIN
。您将在那里找到两个重要文件:
listener.ora
tnsnames.ora
。打开
listener.ora
,并按服务器主机名更改所有本地主机实例(警告:不更改IP地址,而改为服务器主机名)

保存您的更改。最后,我们应该重新启动网络侦听器。因此,以管理员身份转到CMD并执行以下命令:

lsnrctl START
打开浏览器并键入:。您的数据库和侦听器应该正在运行。现在,您可以从远程主机进行连接


有关更多信息,请参阅:

Nice研究。我只想补充一点,建议在GCE防火墙上使用
目标标记
,否则防火墙规则适用于所有VM实例。
YOUR_SERVICE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <server_hostname>)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = your_service_name)
    )
  )

LISTENER_YOUR_SERVICE =
  (ADDRESS = (PROTOCOL = TCP)(HOST = <server_hostname>)(PORT = 1521))
lsnrctl START