Oracle与防火墙设置

  次阅读 作者:智能小宝 来源:互联网 2016-01-28 13:07 我要评论(0)

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这么做也是不得已的,因为早期windowsnt的TCP/IP部分有bug,直接使用公用端口连接会有问题,所以oracle才搞出这么个天才的设计。

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

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

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

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

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

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

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

在windows注册表的(HOMEDIR是你机器上安装的oracle数据库的instance名称)中添加一个字符串键值,名称为USE_SHARED_SOCKET,值为TRUE(注意大小写),然后重启oracleinstance或直接重启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)"

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...