oracle 客户端无法连接到服务器解决办法(转客户端穿越防火墙)

今天尝试连接到oracle服务器,总没有成功,后来发现是服务器上开启了防火墙的缘故,于是防火墙增加了一个例外端口:1521,心想这回总该能连上了吧,因为oracle的监听程序的端口号就是1521,结果还是无法连接。
在网上查阅了一下资料,原来开启1521这个端口是不能解决问题的,oracle的network listener 只起一个中介作用,当客户连接它时,它根据配置寻找到相应的数据库实例进程,然后创建一个新的数据库连接,这个连接端口由network listener传递给客户机,此后客户机使用新端口号和服务器交互。这个新的连接端口是不可预知的,因而会被防火墙阻止。
解决办法:
Windows Socket2 规范有一个新的特性,就是Shared Socket,所谓共享套接字是指一个进程共享另一个进程的套接字(详见MSDN相关参考)。如果让network listener与数据库服务进程共享套接字,那么连接端口就不会变化。
  
  如何设置 Shared Socket?
  
  在注册表:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0上新建一个字符串值:USE_SHARED_SOCKET=true。如果安装了多个目录,则每个类似的目录都要设置:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEx (x目录编号)
  
  设置后要求重新启动实例

猜你喜欢

转载自tw-wangzhengquan.iteye.com/blog/1885552
今日推荐