Oracle与防火墙设置

   Oracle与防火墙设置

  要访问防火墙后的windows oracle数据库,仅仅通过简单的打开固定TCP端口的方式是不行的。

  这个问题的根本原因是windows oracle数据库的BT设计(unix/linux无此问题)。

  一、Oracle的网络通信端口原理

  oracle数据库的网络访问采用了一个很BT的工作模式,其大概流程如下:

  1)oracle server上的oracle net listener进程持续监听一个固定的TCP端口(缺省是1521);

  2)client向server上的net listener端口发起连接请求;

  3)listenr收到client的请求之后,建立与client的连接,并通知server新建一个数据库连接的服务进程(以下简称P),该进程会随机选择一个没有被使用的TCP端口并绑定,然后将端口号通知listener;

  4)listenr将P绑定的端口号转发给client;

  5)client收到P的端口号后,终止与listener的连接,然后通过P的绑定端口直接连接P;

  到第5步,连接才最终完成,之后client就可以访问数据库了。

  从上面的工作流程可以知道,在这种工作模式下,client实际最终连接的oracle server端口是随机的。

  所以根本无法在防火墙上预先设定固定的TCP端口来使oracle server可以被访问。

  据说oracle这么做也是不得已的,因为早期windows nt的TCP/IP部分有bug,直接使用公用端口连接会有问题,所以oracle才搞出这么个天才的设计。

  不过,NT4SP3之后不就没这个bug了吗,为啥到oracle 11g了还在用这个BT模式呢? 当然啦,现在网络安全性问题这么严重,如果真的无法使用防火墙,windows版的oracle数据库岂不是要卖不出去了吗?

  oracle公司当然不会那么白痴,从oracle 8i开始,windows版的oracle也可以使用正常的工作模式了,只不过默认仍是使用BT工作模式罢了。

  只有Windows平台上的9i及以下版本的Oracle才会有这个问题。Oracle在Linux以及Unix平台下,多个进程间可以对端口进行复用,Oracle Server Process仍然使用的是跟监听进程一个端口(1521),客户端只连接了一次,并没有进行第二次连接,与上面描述的流程相比已经发生了变化。

  在Windows平台上,10g及以上版本的数据库,也同样利用端口复用,避免了这样的问题。实际上10g就是默认USE_SHARED_SOCKET为TRUE。

  二、在防火墙中设置程序例外

在Oracle的BT模式下,其实可通过在防火墙中设置Oracle程序例外来穿越防火墙。


  三、在防火墙中设置端口例外

  在windows注册表的 (HOMEDIR是你机器上安装的oracle数据库的instance名称)中添加一个字符串键值,名称为USE_SHARED_SOCKET,值为TRUE(注意大小写),然后重启oracle instance或直接重启windows就OK了。

  这样,你只要再在防火墙上打开oracle的监听端口(缺省为1521),就可以在防火墙外访问oracle了!

  需要在MTS模式下(共享模式) Oracle默认是专用模式。

  经试验发现,如果不在init文件中设参数的话,Oracle仍然会要求一个随机端口和1521端口来共同通讯,只是这个随机端口,并不随客户端会话和登 录的变化而变化,在没有重启服务器时,是固定的。 (试验发现,在专用模式下,每次连接,oracle服务器会按+1方式,提供一个非1521的端口。) 所以,还需要在init.ora文件的最后加上一条参数:

  mts_dispatchers="(address=(protocol=tcp)(host=myoradb)(port=1521))(dispatchers=1)"

时间: 2024-09-20 00:00:29

Oracle与防火墙设置的相关文章

NetFilter/iptables防火墙设置(上)

大多数主要的Linux发行商,包括SuSE,在防火墙设置方面都有某些独特的用户接口特征.他们这样并没有错,但是这样我就无法直接得到最想要的配置,所以只好自己手动设置.Iptable man页面完全是个依照iptable命令行句法的文件,它不提供关于将不同规则的防火墙结合起来的指导说明.你可以搜索到许多零散的关于iptables的信息,但是这些都不足以教会我想要弄明白的东西.最后我用运行着SuSE Linux Pro10.0 的一个Vmware虚拟机终于弄清楚了到底应该怎样做.下面就是用iptab

slackware-10.1 下 adsl 拨号上网的 iptables 防火墙设置

提要: 因为家里的机器是使用adls拨号上网,为了防止家伙们对我的机器作端口扫描,因此设置好防火墙显得比较重要起来. 我尝试了普通方式来设置iptables,发现一般的设置方法并不能很好的满足我的需要,主要是因为ppp的联结建立在放火墙脚本运行(通过手工编写 /etc/rc.d/rc.firewall)后.觉得更好的的方法是用rp-pppoe来调用你的防火墙设置,因为rp-pppoe的配置文件(/etc/ppp/pppoe.conf)中有一个选项,具体可以参考slackware下面/etc/pp

win7防火墙设置,保护你的电脑安全

在互联网盛行的今天,网络安全问题不容忽视,而防火墙正是阻隔系统和外界网络的一道大门,正确设置防火墙可以保证系统最基本的安全,本文就来为大家介绍一下win7内置防火墙的设置方法. 点击Win7系统桌面左下方的圆形开始按钮,依次打开Win7系统的"控制面板→系统和安全→Windows防火墙",即可打开Win7系统自带的防火墙. 从Win7控制面板中选择Windows防火墙 Win7自带Windows防火墙设置主界面 为不同使用环境自定义安全规则 在不同的电脑使用环境中用户对防火墙的安全性的

通过win7防火墙设置禁止别人访问本机端口

首先声明一下这个功能,个人感觉用处不是很大,因为很多时候我们都是自己把系统自带的防火墙关闭了.像小编就肯定关闭了,因为小编有时候会在局域网跟别人连网对战,如果不管系统自带防火墙那么我就没办法玩了.所以下面是关于通过win7防火墙设置禁止别人访问本机端口实用性不大. 1 打开防火墙的防火有挺多的,小编就只说一个了 "控制面板"->"系统和安全"->"windows防火墙". 2 点击左侧面板上的"高级设置"会出现&q

Linux防火墙设置

Linux防火墙设置 [任务描述] (1)设置网卡IP地址为192.168.1.234,子网掩码为255.255.255.0,网关为192.168.1.1. (2)设置DNS为61.177.7.1. (3)Linux防火墙设置,禁用SELinux,启用防火墙,信任WWW.FTP.SSH.SMTP端口. (4)设置防火墙,使能信任TCP协议的POP3端口. [任务实施] (1)设置网卡IP地址为192.168.1.234,子网掩码为255.255.255.0,网关为192.168.1.1. 选择"

win7无法更改防火墙设置提示系统报错“0x80074200”怎么办

  防火墙也称防护墙,是一种位于内部网络与外部网络之间的网络安全系统,可以防止病毒入侵.有位Win7系统用户想更改防火墙某些设置,出现无法更改的情况,系统报错"0x80074200",怎么办呢?下面小编告诉大家两种解决win7无法更改防火墙设置提示系统报错"0x80074200"的问题. 方法一: 1.出现"防火墙无法更改某些设置,错误代码0x80074200"的提示,其实是在表示电脑防火墙设置出现问题,需要手动修改服务策略的意思. 方法二: 1

win7防火墙设置图解教程

  在平时使用计算机的时候,应该要多留意系统的安全.win7系统自带的防火墙是一个必不可少的安全保障,由于是默认自动开启的防火墙,因此比较少留意也不出奇.但出于某些需要关闭防火墙的时候,在win7系统服务就不知道应该在哪里设置防火墙,下文分享win7防火墙设置 的操作过程. 1.在开始界面选择"控制面板" 2.在控制面板选择"windows防火墙" 3.找到"打开或关闭windows 防火墙"选项 4.按照需求即可进行相应设置 以上就是win7防

windows xp sp2自带防火墙设置

  目前已经发布的英文版windows xp service pack 2(sp2)包括了全新的windows防火墙,即以前所称的internet连接防火墙(icf).windows防火墙是一个基于主机的状态防火墙,它丢弃所有未请求的传入流量,即那些既没有对应于为响应计算机的某个请求而发送的流量(请求的流量),也没有对应于已指定为允许的未请求的流量(异常流量).windows防火墙提供某种程度的保护,避免那些依赖未请求的传入流量来攻击网络上的计算机的恶意用户和程序. 在windows xp sp

实例-局域网穿透及防火墙设置

问题描述 局域网穿透及防火墙设置 我通过PP透在局域网下建了个OpenVPN服务,能联通获取到IP但就是ping不通 桥接模式,配置如下 ################################################# port 31194 proto tcp dev tap dev-node tap-bridge ca ca.crt cert server.crt key server.key dh dh1024.pem ifconfig-pool-persist ipp.t