如何配置MTS以穿越防火墙连接oracle

事情的起因是物流部的应用程序需要通过internet连接位于市区的数据库服务器,而该应用程序是个C/S应用。同时在市区的办公室配置了防火墙,并且只开放了1521端口。这种情况下,就变成tnsping能通,但是用sqlplus连就不能连通。

这种情况下,对于dedicated连接方式就不适用了。因为dedicated连接方式是listener在1521端口监听连接请求,一旦监听到连接请求,则分配一个端口号,并将该端口号发送给客户端,从而客户端再次连接到该端口上,从而连进oracle服务器。

网络上google了一下,发现有不少方法都说到如何穿越防火墙。


比如修改注册表,但是oracle需要打补丁,升级到Oracle 8.1.7.1.2。不同版本,注册表位置不一样
- Oracle 8.1.6 for NT/2k
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME (# is your desired homedir)
- Oracle 8.1.7.0.0 for NT/2k Doesn't work in Oracle 8.1.7.0.0 for NT/2k
- Oracle 8.1.7.1.2 for NT/2k
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE

很不幸,我的数据库是Oracle 8.1.7.0.0,暂时也不想升级。

还有一种方法是在数据库端(也可以是另外的机器,但是cman的机器必须和数据库都在防火墙的后面)安装了cman的前提下,启动cman,然后开放防火墙端的1630端口(看cman开的是什么端口啦),最后在客户端的tnsnames.ora文件中添加:
cmantest = (description = (address_list = (address =

CMAN从没有过,准备有空再研究一下。

第三种方法就是将考虑配置MTS了。因为对于MTS,则可以只用一个端口1521来处理客户端的请求,不会再发送端口号给客户端,而是直接把客户端的请求传递给某个可用的dispatcher。

现在,问题就转换为配置MTS了。

MTS配置其实不复杂,步骤如下:

1、配置几个init参数。如下:

mts_dispatchers = "(address=(protocol=TCP)(host=ypsyb-srv)(port=1521))(dispatchers=10)"
mts_max_dispatchers = 15
mts_servers = 50
mts_max_servers = 80
mts_service = webdb
mts_listener_address="(address=(protocol=TCP)(host=ypsyb-srv)(port=1521))"
large_pool_size=200000000

其中,比较重要的是mts_dispatchers ,必须加上(port=1521),否则dispatcher会在随机端口上监听,而不是1521端口。

保存以后,启动数据库。

2、配置监听

有资料说配置监听时应删除所有SID_LIST,实际测试下来,这是错误的说法。MTS下的listener.ora文件的内容与dedicated下的listener.ora的内容是一样的。

启动监听器。

3、配置客户端

有资料说在配置客户端时,在tnsnames.ora中的host一定要写数据库server的名字,而且还需要配置host以进行域名解析。这也是错误的。实际测试下来,MTS下的tnsnames.ora的内容与dedicated下的tnsnames.ora的内容一样。

4、使用sql/plus连接,一切ok。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9842/viewspace-156313/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9842/viewspace-156313/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值