ORACLE如何穿越防火墙
2008-10-17 15:21
281 查看
应用程序如果要穿越防火墙,一般来说只需要将相应的端口在防火墙上开通,或者将服务器的IP映射到防火墙的外口即可。但是ORACLE的端口有点特殊,程序访问ORACLE的端口是1521(默认),但是这个端口只是ORACLE的侦听器用(network listener),listener 只起一个中介作用,当客户连接它时,它根据配置寻找到相应的数据库实例进程,然后spawned一个新的数据库连接,这个连接端口由network listener传递给客户机,此后客户机就不再和打交道了,即使listener停止了工作。这个新的连接端口是随机的,不一定是1521或其它指定端口,因而会被防火墙阻止。
根据网上搜索资料,大致有三种方法:
方法一:
在windows2000的注册表中,hkey_local_machinesoftwareoraclehome0下加入字符串值:USE_SHARED_SOCKET=TRUE,即可。
方法二:
1、首先将数据库实例改为SHARED SERVER模式;
2、以SYSDBA登录SQLPLUS,通过SQLPLUS生成系统当前的参数设置文件pfile:create pfile='d:init.ora' from spfile;
3、修改d:init.ora文件,在其中增加(用editplus编辑):*.service_names='your service name'和*.dispatchers='(address=(protocol=tcp)(host=localhost)(port=1521)(dispatchers=1)'
4、生成新的SPFILE:create spfile from pfile='d:init.ora';
5、重启动数据库。
6、在防火墙中开放1521端口。
方法三:
在数据库端(也可以是另外的机器,但是cman的机器必须和数据库都在防火墙的后面)安装了cman的前提下,启动cman,然后开放防火墙端的1630端口(看cman开的是什么端口啦),最后在客户端的tnsnames.ora文件中添加:
cmantest = (description = (address_list = (address = <- first address is to CMAN (protocol=tcp) (host=hostname or ip of cman) (port=1610) ) (address= <- second address is to Listener (protocol=tcp) (host=hostname or ip of listener) (port=1521) ) ) (connect_data = (sid = sidname)) (source_route = yes)
根据自己的实施操作,方法一好象对9I及10G无用,可能是对8I有用,没试过;
方法二在9I和10G上是可行的,一直都用这种方法;
方法三在9I和10G上是不行的,没有做成功过;
如果是Linux下的Oracle,只要在防火墙中打开TCP 1521端口就可以连接了。
根据网上搜索资料,大致有三种方法:
方法一:
在windows2000的注册表中,hkey_local_machinesoftwareoraclehome0下加入字符串值:USE_SHARED_SOCKET=TRUE,即可。
方法二:
1、首先将数据库实例改为SHARED SERVER模式;
2、以SYSDBA登录SQLPLUS,通过SQLPLUS生成系统当前的参数设置文件pfile:create pfile='d:init.ora' from spfile;
3、修改d:init.ora文件,在其中增加(用editplus编辑):*.service_names='your service name'和*.dispatchers='(address=(protocol=tcp)(host=localhost)(port=1521)(dispatchers=1)'
4、生成新的SPFILE:create spfile from pfile='d:init.ora';
5、重启动数据库。
6、在防火墙中开放1521端口。
方法三:
在数据库端(也可以是另外的机器,但是cman的机器必须和数据库都在防火墙的后面)安装了cman的前提下,启动cman,然后开放防火墙端的1630端口(看cman开的是什么端口啦),最后在客户端的tnsnames.ora文件中添加:
cmantest = (description = (address_list = (address = <- first address is to CMAN (protocol=tcp) (host=hostname or ip of cman) (port=1610) ) (address= <- second address is to Listener (protocol=tcp) (host=hostname or ip of listener) (port=1521) ) ) (connect_data = (sid = sidname)) (source_route = yes)
根据自己的实施操作,方法一好象对9I及10G无用,可能是对8I有用,没试过;
方法二在9I和10G上是可行的,一直都用这种方法;
方法三在9I和10G上是不行的,没有做成功过;
如果是Linux下的Oracle,只要在防火墙中打开TCP 1521端口就可以连接了。
相关文章推荐
- 如何通过公网来访问防火墙后面的Oracle
- 如何使远程分布事务协调器(DTC)能够穿越防火墙工作
- WebRTC中如何处理NAT和防火墙穿越?
- [转贴]如何透过防火墙访问Oracle?
- 如何穿越防火墙NAT
- ORACLE如何穿透防火墙
- oracle 穿越防火墙、网闸
- oracle 随即端口 oracle 穿越防火墙
- Remoting: 如何穿越防火墙 (转)
- Remoting 如何穿越防火墙
- 如何使oracle在通过防火墙时使用单一端口
- 如何彻底卸载oracle
- 如何查询Oracle性能监控
- 如何迁移Oracle 数据库存储至戴尔Compellent
- 如何获得Oracle DBA工作?
- CSV文本数据如何导入oracle(实例)
- 在oracle下我们如何正确的执行数据库恢复
- oracle中如何修改用户名和密码