泽强 2016年03月19日 数据库类 浏览(23)

在虚拟机上安装Oracle数据库时,客户端连接提示:ORA-12541:TNS:无监听程序

虚拟机上安装Oracle数据库时,客户端连接提示:ORA-12541:TNS:无监听程序,该怎么解决呢?

在window的系统下,已经把1521的端口开放出去了,但是从另外一台机器连接服务器的时候 ,还是连不上。

只有把整个防火墙都关闭,才能使其他机器上连接到oracle的服务器。究竟是什么原因了?

解决方案:

这个原因,还是归结为window系统的一个问题,对于oracle来说,对客户端的连接请求都是通过listener来进行监听和处理的。 listener的端口默认是1521.所以有很多的网友在此通常都知道要开放这个端口,不过listener在监听到客户的连接以后,会建立一个临时的 端口并把端口号报之给客户端,接下来就由这个端口来和服务器端交互了。这个端口是由listener分配的,所以没有办法确定,也就被防火墙拦住了。 在window下,由于linux下已经使用了共享socket解决临时sock的问题,所以linux开放了1521就可以了,window没有,所以 有这样的问题。

不过还好,window的socket2 提供了share socket的技术,我们只需要通过很简单的步骤,就是让window系统下的oracle使用上share socket,从而解决我们的问题。

设置方法如下。我的机器是10.2.0.4
1. 打开注册表
2. 找到[HKEY_LOCAL_MACHINESOFTWAREORACLEKEY_OraDb10g_home1]这个目录 ,在其下加入一个字符串值

键:USE_SHARED_SOCKET 
值: TRUE 

3. 重启监听服务 
  现在再用客户端试试,应该就可以连上了。