无法从 VMWare Fusion VM 内部将 SQL*Plus 连接到 Oracle 10g

无法从 VMWare Fusion VM 内部将 SQL*Plus 连接到 Oracle 10g

我试图从 OSX 上的 VMWare Fusion 托管的 Windows XP VM 中连接到 Oracle 10g 服务器(LAN 上的远程主机)。虽然我可以使用 Oracle Net Manager 连接到该服务,但无法使用 SQL Plus 进行连接。

我错过了什么?

我目前正在使用NAT模式。

答案1

假设您的数据库位于主机名为“dbhost”的节点上

首先,你能 ping 通 dbhost 吗?如果不能,那么问题出在网络而不是 Oracle 上。

如果可以,您能否远程登录到该主机上的端口 1521。如果不行,则可能是防火墙类型问题,或者远程节点上没有运行 Oracle 侦听器(或者端口不同)。

假设它正在运行,您需要从 DBA 那里获得 SID 或 SERVICE_NAME。它们通常是相同的,如果是 *nix 系统,执行“ ps -ef | grep smon”将显示正在运行的实例的 SID。免费的 Express Edition 数据库通常具有 XE 的 SID

如果 1521 正在接收流量,请尝试

sqlplus user/pass@dbhost:1521/XE

将 XE 替换为您的 SID。

=== ...

在数据库服务器端,监听器应该监听端口 1521。sqlnet 中有一些设置(我认为是 tcp_invited_nodes)可以充当防火墙,告诉监听器只接受来自白名单 IP 地址的连接(或排除来自黑名单 IP 的连接)。

如果侦听器接受连接,它会尝试查找连接请求的 SID 或 SERVICE。如果不存在这样的服务,它会返回错误。

如果服务确实存在,侦听器将尝试将连接传递到数据库,并返回不同的端口,连接将通过该端口与数据库进行实际通信(即端口 1521 仅在初始连接期间使用)。[共享服务器连接有例外,但并不常见。]

数据库可能处于不接受连接的模式(RESTRICTED 模式或处于 STARTUP 或 SHUTDOWN 过程中)。数据库还会执行身份验证(例如检查用户名和密码)。

我猜要么是侦听器根据某些设置拒绝连接,要么(更可能)是它无法通过 NAT 传递新的网络连接。尝试使用OSX 即时客户端从主机查看是否能通过。即时客户端基本上就是解压并运行,因此安装不大,也不需要管理员权限或任何东西。

如果主机可以工作而虚拟机不工作,则尝试使用 Bridged 而不是 NAT。这意味着虚拟机客户机拥有自己的 IP 地址,并且在网络上看起来像一个独立的设备,而不是像在 NAT 中那样隐藏在虚拟机主机后面。

PS. 创建了一个社区 wiki,以便其他人可以做出贡献

相关内容