`

思科防火墙下oracle连接自动断

 
阅读更多
客户端发起一个数据库连接请求
监听进程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

    原创思科防火墙与oracle兼容性有问题的抓包过程(1)归类.pdf

    Windows 下 oracle 服务自动启动设置

    Windows 下 oracle 服务自动启动设置 概述 在 Windows 操作系统中,设置 Oracle 服务自动启动可以确保数据库服务在需要时自动开启,而不需要每次手动启动实例。这篇文章将详细介绍如何设置 Oracle 服务自动启动,...

    Windows Server 2008 防火墙开放 Oracle 的1521端口

    Windows Server 2008 防火墙开放 Oracle 的1521端口 在防火墙的入站规则中,新建端口规则。

    oracle rac防火墙配置学习

    Linux 常用命令 oracle rac 中文手册 官网翻译 oracle rac

    Oracle连接工具plsql11x64位

    Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具plsql11x64位Oracle连接工具...

    oracle连接需要的驱动

    标题提到的"oracle连接需要的驱动"指的是Oracle JDBC驱动,它允许Java应用程序通过JDBC(Java Database Connectivity)接口与Oracle数据库进行通信。 Oracle JDBC驱动主要有四种类型: 1. ** Thin Driver (jdbc:...

    oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法

    错误描述:oracle远程连接服务器出现 ORA-12170 TNS:连接超时 错误检查:有很多是oracle自身安装的问题,但是我这里服务器配置正常,监听正常,服务正常,远程可以ping通服务器。 这里主要是防火墙问题,解决办法: ...

    sap 与 oracle数据库的连接

    SAP与Oracle数据库的连接 SAP系统与Oracle数据库的连接是SAP开发中的一个重要步骤,该连接允许SAP系统访问Oracle数据库中的数据,实现数据交换和共享。在本文中,我们将详细介绍SAP开发中模块连接Oracle数据库的...

    Oracle连接字符串

    "Oracle 连接字符串多种方法" Oracle 连接字符串是指连接 Oracle 数据库的字符串书写方法,本文总结了多种连接 Oracle 数据库的字符串书写方法。 一、标准连接字符串 标准连接字符串是最基本的连接字符串格式,...

    SqlDbx连接oracle

    在没有完整Oracle客户端的情况下,可能需要手动配置这个文件来指定要连接的Oracle实例。 总的来说,SqlDbx通过Oracle Instant Client的库文件实现了对Oracle数据库的连接,使得用户无需安装庞大的Oracle客户端软件...

    oracle连接的包

    将这个连接包放入项目的`lib`目录下,意味着它是项目运行时的依赖库,这样编译器和运行时环境就能找到并加载这个驱动,从而实现与Oracle数据库的连接。 在Java中,连接Oracle数据库的基本步骤如下: 1. **导入驱动...

    C#中连接oracle连接方法

    本篇将详细介绍C#中连接Oracle数据库的方法,包括所需的组件、连接字符串的构建以及使用ADO.NET进行数据操作的基本步骤。 首先,你需要在你的项目中引入Oracle客户端库。Oracle提供了一个名为ODP.NET(Oracle Data ...

    Oracle数据库遭遇到防火墙

    Oracle数据库遭遇到防火墙

    windows环境下Oracle数据库的自动备份脚本

    windows环境下Oracle数据库的自动备份脚本

    linux远程连接oracle数据库

    ### Linux远程连接Oracle数据库知识点详解 #### 一、测试项目 - **通过Java程序远程连接Oracle 10g数据库** - Java作为一种广泛使用的编程语言,可以用来开发各种应用程序,包括与数据库交互的应用。要实现Java...

    oracle 数据库,在C++中用连接池实现高速连接与访问.rar

    本话题将深入探讨如何在C++环境中利用连接池技术实现对Oracle数据库的高速连接与访问。 一、Oracle数据库基础 Oracle数据库提供了一套完整的数据管理解决方案,包括事务处理、数据仓库、网络数据库、安全性等。它的...

    如何连接oracle数据库及故障解决办法

    如果你已经安装了 Oracle 数据库,那么你不需要在单独的机器上安装 Oracle 客户端,因为安装 Oracle 数据库的时候会自动安装 Oracle 客户端。 在安装了 Oracle 客户端软件之后,需要正确配置 sqlnet.ora 文件和 ...

    ORACLE数据库自动备份3种方法

    本文将详细介绍Oracle数据库自动备份的三种常见方法:Windows下的任务计划(At命令)、UNIX下的Crontab以及第三方工具(如Viritas),并提供具体的实施步骤。 #### 二、Windows下的任务计划(At命令) ##### 1. ...

    易语言连接Oracle数据库

    安装客户端后,系统会自动配置好相应的环境变量,使得程序可以通过Oracle Net Services(也称为TNS)来找到并连接远程或本地的Oracle数据库实例。 易语言连接Oracle数据库时,主要依赖两个关键组件:数据库连接和...

Global site tag (gtag.js) - Google Analytics