Macos Mac OSX上的Oracle,从虚拟机访问

Macos Mac OSX上的Oracle,从虚拟机访问,macos,oracle,osx-snow-leopard,virtualization,virtual-machine,Macos,Oracle,Osx Snow Leopard,Virtualization,Virtual Machine,我已经在Mac OSX Snowleopard上安装了Oracle,据我所知,这是Snowleopard的唯一有效安装指南 只要我只在MacOX下的Mac上使用Oracle,它就工作得很好,没有问题 现在我在Mac上有一个虚拟机(与桌面5并行),在这个虚拟机上运行的是Windows XP。我想从Windows下的VM访问在Mac OSX上运行的Oracle数据库。从逻辑上讲,这就像从另一台计算机访问。但总是在我尝试从XP访问时,例如使用sqlplus sqlplus iwes/iwes@192.

我已经在Mac OSX Snowleopard上安装了Oracle,据我所知,这是Snowleopard的唯一有效安装指南

只要我只在MacOX下的Mac上使用Oracle,它就工作得很好,没有问题

现在我在Mac上有一个虚拟机(与桌面5并行),在这个虚拟机上运行的是Windows XP。我想从Windows下的VM访问在Mac OSX上运行的Oracle数据库。从逻辑上讲,这就像从另一台计算机访问。但总是在我尝试从XP访问时,例如使用sqlplus

sqlplus iwes/iwes@192.168.3.2:1521/dbname
(192.168.3.2它是使用“仅主机联网”的MacOS地址。此地址在其他应用程序中运行良好。)
然后我得到了错误信息

ERROR:
ORA-12541: TNS: Kein Listener    [German for: "no listener"]
(在Mac OSX上,Oracle和侦听器都已启动并工作)

我的Oracle安装中有什么错误或缺失

这是我的听众

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /opt/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = dbname)
      (ORACLE_HOME = /opt/oracle/product/10.2.0/db_1)
      (GLOBAL_DBNAME = dbname)
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )
还有我的名字

dbname =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = dbname)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

您的listener.ora应该指定192.168.3.2作为主机,而不是localhost

您的tnsnames.ora应该指定192.168.3.2作为别名dbname的主机(如果您使用tnsnames.ora) 在您的示例中,您不使用tnsnames.ora,而是直接跳到mac的ip地址。
还要检查mac电脑上的防火墙。

答对了!就这样。更改主机名解决了这个问题。(我仍然认为这是不合逻辑的,因为localhost和192.168.3.2是同一台计算机,但这不需要我们讨论。)不,localhost应该始终是127.0.0.1