Oracle客户穿越防火墙难题

oracle|防火墙

近来由于工作需要,在Windows XP平台上安装了Oracle9i数据库作为测试之用,一切正常。但当客户机连接服务器时却总是超时,我首先想到了防火墙,当我打开1521端口时,连接操作仍然失败。我又怀疑网络有问题,用telnet server_ip:1521尝试,连接被接受,说明1521端口已经被打开。

没有办法,查询Oracle资料后才明白,network listener 只起一个中介作用,当客户连接它时,它根据配置寻找到相应的数据库实例进程,然后spawned一个新的数据库连接,这个连接端口由network listener传递给客户机,此后客户机就不再和打交道了,即使listener停止了工作。这个新的连接端口是不可预知的,因而会被防火墙阻止。

Windows Socket2 规范有一个新的特性,就是Shared Socket, 所谓共享套接字是指一个进程共享另一个进程的套接字(详见MSDN相关参考)。如果让network listener与数据库服务进程共享套接字,那么连接端口就不会变化。

如何设置 Shared Socket?

在注册表:HKEY_LOCAL_MACHINE OFTWARE\ORACLE\HOME0上新建一个字符串值:USE_SHARED_SOCKET=true。如果安装了多个目录,则每个类似的目录都要设置:HKEY_LOCAL_MACHINE OFTWARE\ORACLE\HOMEx (x目录编号)

设置后要求重新启动实例(只重启listener发现没有效果)

引用资料:
http://www.computer-book-authors.org/aud_450.htm

典型问题:
http://www.lazydba.com/oracle/0__37815.html

when a client connects to a listener it uses port 1521 at the client machine. the listener then returns to the client thru a different port. The 1521 port is closed and the db connection uses the new port for communicating with the client. i want the listener to return to the client using port 1521, how?

metalink says use the use_shared_socket parameter, but its still not working. i set the parameter to true in the sys env and in the registry.
....

Oracle 原文:

USE_SHARED_SOCKET

You can set the USE_SHARED_SOCKET parameter to TRUE to enable the use of shared sockets. If this parameter is set to TRUE, the network listener passes the socket descriptor for client connections to the database thread. As a result, the client does not need to establish a new connection to the database thread and database connection time improves. Also, all database connections share the port number used by the network listener, which can be useful if you are setting up third-party proxy servers.

On Windows NT 4.0 Service Pack3 or earlier, enabling this option precludes bringing the network listener up or down in a case where a database connection spawned by the network listener is active. Therefore, you may
need to shut down all of the databases serviced by a network listener before you can bring down and restart a network listener. This results from the way shared sockets have been implemented in WINSOCK2. WINSOCK2 does not
allow a reliable thread to a network listener on any port on which other connections are also active. This is not an issue on Windows NT 4.0 Service Pack 4 orlater. Oracle recommends that you upgrade to Windows NT 4.0 Service Pack 4 if you intend to set this parameter.

This parameter only works in dedicated server mode in a TCP/IP environment. If this parameter is set, you cannot use the 8.1.5 listener to spawn Oracle 7.x databases. To spawn an Oracle 8.0.x database from an 8.1.5 listener

==============

时间: 2024-09-09 23:26:42

Oracle客户穿越防火墙难题的相关文章

穿越防火墙 让远程桌面自由连接

有些时候,我们需要在公司.学校.网吧或者其他内网环境远程管理某台计算机或者服务器.拿我自己来说,我需要远程管理一台服务器.但是,我所处的环境是学校机房,也就是一个典型的内网环境,学校的网络出口处有一个非常强悍的防火墙,除了常用的端口统统封掉.所以,我无法用远程桌面连接我的服务器.我试过很多软件,比如RealVNC.PCAnywhere等,都是没有作用的,分析其原因就是,在防火墙处,除了管理员设置允许连接的端口外,其余一律阻止. 其实不仅是学校,现在人们越来越注重安全了,而最简单的方法就是禁用端口

配置ORACLE 客户端连接到数据库

       --================================= -- 配置ORACLE 客户端连接到数据库 --=================================       Oracle 客户端连接到Oracle 数据库服务器貌似不同于SQL serve中的网络配置,其实不然,只不过所有的SQL server 运行于Windows平台,故很多配置直接集成到了操作系统之中.所以无需配置客户端即可连接到服务器.Oracle 客户端连接到数据库依赖于Oracle

关于JAVA解决NAT穿越防火墙以及解决多级代理方面的问题

问题描述 各位师兄:要研究关于JAVA解决NAT穿越防火墙以及解决多级代理方面的问题,想搜集一些资料.希望能提供一些好资料,避免海量查询之苦,谢谢 解决方案 解决方案二:记号-解决方案三:脚印--`解决方案四:你要做什么?你可以使用UDP的方式进行连接和访问,尽量不要用TCP的方式.解决方案五:为什么要用UDP呢?UDP的丢包率太大,而且从实时性上也无法保证我程序的需要.解决方案六:到我的blog上找找吧,我翻译过一篇UDP/TCP打洞的文章!gloomyfish搜索一下就可以看到!解决方案七:

LoadRunner穿越防火墙测试

Loadrunner穿越防火墙测试 首先提出一个问题:什么时候使用穿越防火墙技术? 答:当Controller位于防火墙外时,您可以穿越防火墙运行Vuser并监控服务器. 为什么使用穿越防火墙技术? 答:当服务真正部署时都会使用硬件防火墙来增强网络的安全性,我们很多时候不能将测试计算机与被测服务器置于同一局域网内,但为了降低网络传输对性能测试的影响,我们通常要使用防火墙内的负载生成器对服务器进行性能测试,此时防火墙外的Controller与防火墙内的负载生成器的连接便成了问题,所以我们使用穿越防

C#写的发送邮件的程序如何穿越防火墙?

问题描述 用C#System.Net.Mail.SmtpClient写的邮件发送,在本机上可以运行,但是上传至服务,出现"无法连接"错误,估计是服务器防火墙或杀毒软件的原因,但是又不能停止服务器杀毒软件,有办法穿越吗? 解决方案 解决方案二:设置防火墙,将其纳入可信区,你若能穿出去,人家自然也有本事穿进来解决方案三:不能穿越防火墙解决方案四:不是吧,那就没有办法实现在邮件发送了?解决方案五:用TCPRemoating解决方案六:吧邮件内容用二进制的格式序列化,好象可以穿越防火墙,解决方

甲骨文推出对整个Oracle客户体验的升级服务

甲骨文全球大会,2013年9月26日--通过跨整个客户生命周期连接每个互动环节,企业利用与众不同的体验可把客户转变成品牌的倡导者.为帮助企业利用这个机会实现收入增长,甲骨文今天宣布,为全球最全面云激活的客户体验(CX)解决方案推出重大增强功能.通过提供更具互动性.社交和移动的体验,针对Oracle CX的最新增强功能可支持销售.营销.商务和服务机构. 通过扩展业界最全面的云助力客户体验产品组合,甲骨文公司推出了对整个Oracle客户体验( CX)的升级,该升级现已在Oracle Cloud向客户

“穿越”防火墙的XML技术

程序员可能会经常碰到这样的事情:建立一个servlet应用程序,它与公司的数据库相连接,为客户提供一种特定的服务,这个应用程序受到一个强大的验证机制保护,全世界有成千上万的客户都在使用它.现在就出现了一个问题:当应用程序处在公司的防火墙之外时,你将如何从应用程序提供用户对数据库的访问?你知道,网络管理员是不会专门为你的应用程序与数据库相连接而打开一个特殊端口的. HTTP隧道技术和XML 如何越过防火墙与客户/服务器应用程序相连接这个问题已经困扰程序员很久了.在多数情况下,一个公司的防火墙总是尽

Oracle客户端连接server 的方法

一.HOSTNAME方法 对于网络结构比较单一,Oracle服务器比较少的情况下,可以使用HOSTNAME方法.不过这种方法有 几个限制: 1.必须使用TCP/IP协议 2.不能使用高级管理工具,比如Oracle Connection Manager 3.客户端必须有相应的扩展命名服务,比如DNS或HOSTS文件 4. LISTENER的监听端口必须是1521 5.服务器LISTENER必须设置GLOBAL_NAME 第5点在Oracle10g SG中明确指定,但经下面测试,也可以不设置GLOB

Oracle 客户端连接时报ORA-01019错误总结

在.net+oracle开发中,发布web程序的时候,有是会遇到该错误 ora-01019 ORA-01019 unable to allocate memory in the user side Cause: The user side memory allocator returned an error. Action: Increase the size of the process heap or switch to the old set of calls. 或者 错误,不能从进程获得