日期:2014-05-17  浏览次数:20899 次

Windows上如何开放Oracle服务端口

如果我们需要映射端口远程去访问Oracle 数据库,这里有个防火墙的问题,在unix 上没有问题,但是在windows平台上,如果启用了防火墙打开了1521端口却无法正确访问。要使Oracle客户端能正常连接到设置有防火墙的Oracle服务器,单开放一个1521或自定义的监听端口是不够的(一般常见于Windows XP或Windows 2003)。
????? Oracle listener 只起一个中介作用,当客户连接它时,它根据配置寻找到相应的数据库实例进程,然后spawned一个新的数据库连接,这个连接端口由listener传递给客户机,此后客户机就不再和打交道了,即使listener停止了工作。这个新的连接端口是不可预知的,因而会被防火墙阻止。
????? Windows Socket2 规范有一个新的特性,就是Shared Socket, 所谓共享套接字是指一个进程共享另一个进程的套接字。如果让network listener与数据库服务进程共享套接字,那么连接端口就不会变化。可以通过以下操作(以oracle9i为例)
1、从oracle程序的程序菜单中进入Administration Assistant for Windows NT;
2、进入Oracle的管理对象的Oracle主目录,选中【OraHome92】鼠标右键点击属性
3、增加一个属性USE_SHARED_SOCKET,设置其值为true
4、保存增加的属性

5、重启实例