客户端发起一个数据库连接请求
监听进程fork一个Oracle服务器进程(Server Process),也可称之为影子进程 (Shadow Process)。服务器进程选择一个大于1024的端口号进行侦听,监听进程把这个端口号发回到客户端,要求客户端重新连接这个指定的端口。
客户端重新连接监听指定的新端口,也就是重新进行连接。
客户端与Server Process直接对话,不再通过监听,进行会话认证(登录),执行SQL等等。
从上述过程可以看到,客户端最终连接的端口实际上并不是1521。由于防火墙一般只开放了几个端口,对Oracle数据库只开放了1521端口,这样在客户端进行第二次连接时,不能通过防火墙,导致连接数据库失败。
那么Windows上运行的Oracle 9i怎么解决这个问题呢?答案很简单,在Windows注册表的\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEn(这里n指Oracle Home的序号,只有一个Oracle Home时是0)键下面增加一字符串USE_SHARED_SOCKET,其值为TRUE。然后重启监听及Oracle服务(注意要重启Oracle的服务,而不仅仅是重启数据库),就可以解决此问题。实际上10g就是默认USE_SHARED_SOCKET为TRUE。
修改Oracle 数据库操作模式,默认为“专用服务器模式,修改为“共享服务器模式”,可使用Database Configuration Assistant工具修改。
重启Oracle数据库实例。
windows平台上的这个问题成了一大难题,很多论坛都有人问,但很少有人能解决。unix平台不用担心,系统自动会解决这个问题. Matalink上提供了三种解决办法,实际上USE_SHARED_SOCKET是最有效最方便的。但经过无数次实现,仍然没有成功,最后终于发现是Oracle 8.1.7的bug 需要打补丁,升级到Oracle 8.1.7.1.2
需要在MTS模式下(共享模式) Oracle默认是专用模式。
经试验发现,如果不在init文件中设参数的话,Oracle仍然会要求一个随机端口和1521端口来共同通讯,只是这个随机端口,并不随客户端会话和登录的变化而变化,在没有重启服务器时,是固定的。(试验发现,在专用模式下,每次连接,oracle服务器会按+1方式,提供一个非1521的端口。)所以,还需要在init.ora文件的最后加上一条参数:
mts_dispatchers="(address=(protocol=tcp)(host=myoradb)(port=1521))(dispatchers=1)"
设置后要求重新启动实例。
试用,但此方法无效。
http://suse.beacontech.com.tw/640/15-dns/15-dns.html
http://space.itpub.net/23071790/viewspace-714483
分享到:
相关推荐
原创思科防火墙与oracle兼容性有问题的抓包过程(1)归类.pdf
Windows 下 oracle 服务自动启动设置 概述 在 Windows 操作系统中,设置 Oracle 服务自动启动可以确保数据库服务在需要时自动开启,而不需要每次手动启动实例。这篇文章将详细介绍如何设置 Oracle 服务自动启动,...
Windows Server 2008 防火墙开放 Oracle 的1521端口 在防火墙的入站规则中,新建端口规则。
Linux 常用命令 oracle rac 中文手册 官网翻译 oracle rac
Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具...
标题提到的"oracle连接需要的驱动"指的是Oracle JDBC驱动,它允许Java应用程序通过JDBC(Java Database Connectivity)接口与Oracle数据库进行通信。 Oracle JDBC驱动主要有四种类型: 1. ** Thin Driver (jdbc:...
错误描述:oracle远程连接服务器出现 ORA-12170 TNS:连接超时 错误检查:有很多是oracle自身安装的问题,但是我这里服务器配置正常,监听正常,服务正常,远程可以ping通服务器。 这里主要是防火墙问题,解决办法: ...
SAP与Oracle数据库的连接 SAP系统与Oracle数据库的连接是SAP开发中的一个重要步骤,该连接允许SAP系统访问Oracle数据库中的数据,实现数据交换和共享。在本文中,我们将详细介绍SAP开发中模块连接Oracle数据库的...
"Oracle 连接字符串多种方法" Oracle 连接字符串是指连接 Oracle 数据库的字符串书写方法,本文总结了多种连接 Oracle 数据库的字符串书写方法。 一、标准连接字符串 标准连接字符串是最基本的连接字符串格式,...
在没有完整Oracle客户端的情况下,可能需要手动配置这个文件来指定要连接的Oracle实例。 总的来说,SqlDbx通过Oracle Instant Client的库文件实现了对Oracle数据库的连接,使得用户无需安装庞大的Oracle客户端软件...
将这个连接包放入项目的`lib`目录下,意味着它是项目运行时的依赖库,这样编译器和运行时环境就能找到并加载这个驱动,从而实现与Oracle数据库的连接。 在Java中,连接Oracle数据库的基本步骤如下: 1. **导入驱动...
本篇将详细介绍C#中连接Oracle数据库的方法,包括所需的组件、连接字符串的构建以及使用ADO.NET进行数据操作的基本步骤。 首先,你需要在你的项目中引入Oracle客户端库。Oracle提供了一个名为ODP.NET(Oracle Data ...
Oracle数据库遭遇到防火墙
windows环境下Oracle数据库的自动备份脚本
### Linux远程连接Oracle数据库知识点详解 #### 一、测试项目 - **通过Java程序远程连接Oracle 10g数据库** - Java作为一种广泛使用的编程语言,可以用来开发各种应用程序,包括与数据库交互的应用。要实现Java...
本话题将深入探讨如何在C++环境中利用连接池技术实现对Oracle数据库的高速连接与访问。 一、Oracle数据库基础 Oracle数据库提供了一套完整的数据管理解决方案,包括事务处理、数据仓库、网络数据库、安全性等。它的...
如果你已经安装了 Oracle 数据库,那么你不需要在单独的机器上安装 Oracle 客户端,因为安装 Oracle 数据库的时候会自动安装 Oracle 客户端。 在安装了 Oracle 客户端软件之后,需要正确配置 sqlnet.ora 文件和 ...
本文将详细介绍Oracle数据库自动备份的三种常见方法:Windows下的任务计划(At命令)、UNIX下的Crontab以及第三方工具(如Viritas),并提供具体的实施步骤。 #### 二、Windows下的任务计划(At命令) ##### 1. ...
安装客户端后,系统会自动配置好相应的环境变量,使得程序可以通过Oracle Net Services(也称为TNS)来找到并连接远程或本地的Oracle数据库实例。 易语言连接Oracle数据库时,主要依赖两个关键组件:数据库连接和...