WebClerk

每个人其实都行走在蓝天之下,如果你没有感觉到,那是因为你没有抬头向上看,而不是它不存在。

导航

Oracle数据库穿越防火墙访问

Posted on 2014-04-09 21:21  WebClerk  阅读(423)  评论(0编辑  收藏  举报

原因

Oracle listener 只起一个中介作用,当客户连接它时,它根据配置寻找到相应的数据库实例进程,然后spawned一个新的数据库连接,这个连接端口由listener传递给客户机,此后客户机就不再和打交道了,即使listener停止了工作。这个新的连接端口是不可预知的,因而若只开放1521端口还是会被防火墙阻止。

解决方案

Windows Socket2 规范有一个新的特性,就是Shared Socket, 所谓共享套接字是指一个进程共享另一个进程的套接字(详见MSDN相关参考)。如果让listener与数据库服务进程共享套接字,那么连接端口就不会变化。

措施

在注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_ORACLE_HOME中建立字符串值USE_SHARED_SOCKET,并设置为TRUE,重启即可。