2

我在虚拟机(VirtualBox,操作系统:Oracle Linux 7)上安装了 Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production。

当我尝试从安装了 oracle 数据库的虚拟机连接时,一切正常。(sqlplus sys/sys_password@192.168.56.101/XE 作为 sysdba)。

但是当我尝试使用相同的命令从主机操作系统(Windown 7 x64)连接到 oracle 时出现ORA-12170错误。

从主机操作系统 ping 192.168.56.101 命令成功。

现在我使用的是仅主机网络,但桥接连接的结果相同。

这是我的 tnslistener.ora 文件:

SID_LIST_LISTENER =
 (SID_LIST =
  (SID_DESC =
   (SID_NAME = XE)
   (ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
  )
  (SID_DESC =
   (SID_NAME = PLSExtProc)
   (ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
   (PROGRAM = extproc)
  )
)

LISTENER =
 (DESCRIPTION_LIST =
  (DESCRIPTION =
   (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
   (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
  )
 )

DEFAULT_SERVICE_LISTENER = (XE)

我究竟做错了什么?

4

1 回答 1

0

看来您的侦听器配置不正确。如果您使用 localhost.localdomain 作为 HOST,那么侦听器将仅绑定到环回接口

尝试使用实际 IP地址而不是 localhost.localdomain。您也可以使用0.0.0.0作为 HOST,这样侦听器将绑定到任何接口以避免硬编码 IP 地址,但我不建议在生产服务器上这样做。

还要检查您的访客防火墙是否允许在 1521 端口上进行 TCP 通信。

以下是我的工作 listener.ora:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)
于 2015-10-16T21:19:23.343 回答