外网访问ORACLE服务器的有效方法
如果需要从外网访问oracle,我们可通过下列方式用客户端连接访问:
1.
2. 需要一个公网IP 使用端口映射转换(见端口映射相关资料)
UNIX系统:
只需要在防火墙上开放监听端口。
WINDOWS系统:
1.
2. 在防火墙上开放监听端口。 设置Shared Socket (Windows Socket2支持)。这是window平台上socket2.0的特性,而oracle
的网络服务配置中也单独说明这一选项。
具体的解决步骤如下:
1、通过修改注册表设置Shared Socket。
在注册表:HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0
新建一个字符串值:USE_SHARED_SOCKET,值设置为:true 如果安装了多个目录,则每个目录都要设置:HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOMEx(x目录编号)
2、设置mts_dispatchers参数(要以dba身份登录oracle数据库(SYS))
SQL> alter system set mts_dispatchers='(PROTOCOL=TCP)(disptchers=1)';
设置后要重启实例.
关于1521端口的解释
经常有网友朋友问这个问题。 在window的系统下,已经把1521的端口开放出去了,但是从另外一台机器连接服务器的时候 ,还是连不上。这个原因,还是归结为window系统的一个问题,对于oracle来说,对客户端的连接请求都是通过listener来进行监听和处理的。listener的端口默认是1521.所以有很多的网友在此通常都知道要开放这个端口,不过listener在监听到客户的连接以后,会建立一个临时的端口并把端口号报之给客户端,接下来就由这个端口来和服务器端交互了。这个端口是由listener分配的,所以没有办法确定,也就被防火墙拦住了。由于linux下已经使用了共享socket解决临时sock的问题,所以linux只要开放1521就可以了,window没有,所以有这样的问题。
不过还好,window的socket2 提供了share socket的技术,我们只需要通过很简单的步骤,就是让window系统下的oracle使用上share socket,从而解决我们的问题。
设置方法如下。我的机器是10.2.0.4
1. 打开注册表
2. 找到[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1]这个目录在其下加入一个字符串值
键:USE_SHARED_SOCKET
值: TRUE
3. 重启监听服务
现在再用客户端试试,应该就可以连上。