`
yanchencheng
  • 浏览: 20555 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论
阅读更多
优化Oracle .Net配置

原帖地址:http://www.builder.com.cn/2003/1230/104447.shtml

作者: ZDNet China
2003-12-30 14:46:52


<!----><!---->本文译自Builder.com,未经许可请勿转载

由于Oracle数据库通常需要在不同地方被访问,所以Oracle开发人员必须搞清楚数据库性能如何被网络通讯所影响。由Oracle提供的TNS(Transparent Network Substrate)允许不同数据库之间的分布式通讯。

作为一种分布式协议的TNS,允许远距离的系统之间的透明数据库通讯。TNS成为Oracle逻辑数据请求与远距离服务器的物理通讯之间的“绝缘体(insulator)”。由此,网络管理人员可以控制很多方面的网络性能优化,这样,Oracle管理人员就极少获得影响整个数据库性能(图A)的网络设置的控制权。

你可以通过使用一些关键设置来提高分布式处理的性能,这篇文章讨论了一些重要的设置。与分布式通讯相关的init.ora参数,比如tcp.nodelay,能够用于改变Oracle数据库中的信息包传输(packet-shipping)的机制。

本文中我也讨论了sqlnet.ora, tnsnames.oraprotocol.ora文件中的参数。你可以使用这些方法来改变TCP信息包的配置和大小,改变之后的信息包能够对网络透明层产生重要影响,以达到提高整个Oracle交流的目的。

Oracle NET不能允许Oracle管理人员优化Oracle网络参数以提高网络性能。事实上,绝大部分网络通讯都无法在Oracle环境中得到优化。Oracle *Net是位于特定网络协议栈的OSI模型中的一个层。

为了响应一个数据请求,Oracle *Net 获得数据并传递到协议栈。协议栈然后从这一数据建立一个信息包并传递到网络。Oracle *Net的作用是将数据传送到协议栈。

然而,DBA能够控制网络信息包的频率和大小。在Oracle中存在着丰富的可以更改信息包频率和大小的工具。一个简单的例子就是以更低的频率改变传送更大数量快照的时间间隔。

可以使用不同参数来优化不同服务器之间的Oracle *Net。请记住,网络优化是Oracle范围之外的操作,一个合格的网络管理人员应该经得起各种询问。使用一些设置可以影响网络信息包传送的频率和大小,这些设置包含在以下的参数文件。

  • protocol.ora文件—tcp.nodelay
  • sqlnet.oraserver 文件—automatic_ipc
  • sqlnet.oraclient 文件—break_poll_skip
  • tnsnames.ora文件—SDU, TDU
  • listener.ora文件—SDU, TDU, 以及queuesize

这些优化参数只影响Oracle *Net层的性能。现在让我们仔细地查看这些参数,以及这些参数如何被调整以提高Oracle *Net。

protocol.ora中的tcp.nodelay参数

在缺省的情况下,Oracle *Net在传送数据之前一直等待,直到缓冲区填满。所以请求一般不会立即发送它们的目的地。当大量数据从一端流往另一端时候,这种情况很常见。添加一个protocol.ora文件,然后指定一个tcp.nodelay停止缓冲溢出延迟,都可以解决这一问题。

protocol.ora文件可以被指定以显示所有TCP/IP执行中的数据。这一参数可用于服务端和客户端。protocol.ora声明为:

tcp.nodelay = yes

指定这一参数使得TCP缓冲被跳过,以致可以立即发送每一个请求。然而请注意,网络通讯量会增大,因为更小的,更快的信息包被传递,所以会导致网络速度的减慢。

tcp.nodelay参数只有在TCP超时产生的时候才被使用。设置tcp.nodelay可以提高数据库服务器之间的大量数据通讯的性能。

sqlnet.ora中的automatic_ipc参数

automatic_ipc参数忽略了网络层,所以加快了数据库的逻辑连接。当automatic_ipc=on,Oracle *Net查看当地数据库是否定义以相同的名称,如果是,网络层将被忽略,因为此时的连接被直接转译为当地的IPC连接。这对于数据库服务器是有用的,但对于Oracle *Net客户端是没有什么用处。

只有当一个Oracle *Net连接于当地数据库的时候,automatic_ipc参数才有可能使用在数据库服务器上。如果不需要当地连接,将这一参数设置为off,由此可以提高所有Oracle *Net客户端的性能。

tnsnames.ora和listener.ora中的SDU和TDU参数

SDU(session data unit)和TDU(transport date unit)都位于tnsnames.ora and listener.ora文件中。SDU指定信息包的大小以传送到网络。在理想情况下,SDU不会超过MTU(maximum transmission unit)的大小。MTU是一个固定值,它取决于使用的实际网络操作。Oracle建议SDU设置相同于MTU。

 


注意

在7.3.3之前,SDU和TDU都固定于2K而且不能改变。


TDU是使用于Oracle *Net分组数据的缺省信息包。在理想情况下,TDU参数应该是SDU参数的倍数。SDU和TDU的缺省值为2,048,最大值都为32,767字节。

以下的规则适用于SDU和TDU:

  • 设置的SDU值不能大于TDU,否则会浪费网络资源。

     

  • 如果你的用户通过dial-up modem线来连接数据库,你应该将SDU和TDU设置为比较小的值,因为频繁的数据发送会有可能超过Modem传送的能力。

     

  • 对于快速的网络连接(T1或T3线),你应该将SDU和TDU设置为相同于MTU。在标准的以太网,缺省的MTU大小设置为1,514字节。对于记号环网络,缺省的MTU大小为4,202字节。

     

  • 如果使用一个多线程服务器(MTS),你必须使用正确的MTU TDU配置设置mts_dispatchers

     

     

    表A为一个记号环网络中这些参数使用的范例,其中MTU值为4,202。

     

    SDU和TDU设置是影响不同主机之间的连接速度。对于快速T1线,设置SDU=TDU=MTU。对于比较慢的Modem线,应该设置为比较小的SDU和TDU值。

    自从Oracle8i以来,数据库将自动注册listener.ora文件中的实例,除非你执行以下操作中的某一个:

  • 无效化自动服务注册。所以,你必须将init.ora参数设置为local_listener,以使用一个TCP口。

     

  • init.ora文件中执行MTS和定义mts_dispatchers,如下:MTS_DISPATCHERS="(DESCRIPTION=(SDU=8192)(TDU=8192)
    ADDRESS=(PARTIAL=TRUE)(PROTOCOL=TCP)(HOST=supsund3)))
                        (DISPATCHERS=1)"

     

  • tnsnames.ora文件中的Connect_Data部分使用service_name=global_dbname,在这一文件中global_dbname设置为listener.ora注意到这一设置将使TAF(Transparent Application Failover)无效化。对于更多的细节,请参考Oracle*Net 管理人员向导中的"配置TAF(Transparent Application Failover)"

     

    listener.ora中的queuesize参数

    当Oracle建立一个连接时,存储的请求数量取决于非文档的queuesize参数。这一参数只使用于大型数据量的数据库。所期望的连接最大量与queuesize参数的大小相同。这里是listener.ora文件中这一参数使用的范例:

       LISTENER =
         (ADDRESS_LIST =
               (ADDRESS =
                 (PROTOCOL = TCP)
                 (HOST = marvin)
                 (PORT = 1521)
                 (QUEUESIZE = 32)
               )
         )

    这一参数的缺点是它为预先的请求预先分配资源,所以使用更多的内存和资源。当传送的数据量过大的时候,你可以考虑到使用MTS方法。同时注意到UNIX的某些版本不允许超过5的队列,对于MTS队列大小也有严格的限制。

    sqlnet.ora中的break_poll_skip参数

    只用于客户端的sqlnet.ora参数代表着要忽略的信息包的个数。这一参数影响着CPU资源。在缺省的情况下这一参数的值为4,采用以下方式可以改变这一参数值:

  • break_poll_skip值越大,检测CTRL-C的频率越少,CPU消耗就超少。

     

  • 相反的,break_poll_skip值越小,检测CTRL-C的频率越高,CPU消耗就超大。

     

    外部网络优化

    在这一网络相关的参数设置的简短讨论中,我为你提供的是对网络优化的复杂性的理解。Oracle *Net只是特定网络协议栈的OSI模型中的一个简单的层,所以所有的网络优化都是Oracle外部的操作,这一理解是相当重要的。

  • 分享到:
    评论

    相关推荐

      行业分类-设备装置-基于Tuxedo、.net及Oracle三层架构开发平台的优化配置方法.zip

      行业分类-设备装置-基于Tuxedo、.net及Oracle三层架构开发平台的优化配置方法.zip

      asp.net知识库

      将 ASP.NET 2.0 应用程序服务配置为使用 SQL Server 2000 或 SQL Server 2005 ASP.NET 2.0 中的数据源控件 使用 ASP.NET 2.0 ObjectDataSource 控件 ASP.NET 2.0 的内部变化 使用SQL Cache Dependency 代替 ...

      亮剑.NET深入体验与实战精要2

      5.5.3 ASP.NET连接Oracle失败的解决方法 245 本章常见技术面试题 246 常见面试技巧之经典问题巧回答 246 本章小结 247 第6章 关于XML 249 6.1 XML概述 250 6.1.1 XML和HTML有什么区别 250 6.1.2 XML的优势 250 6.2 ...

      .net 通用数据库访问类(优化版 增加MySql)源码

      通用数据库访问类(优化版)源码 通用数据库访问类 通过配置 可实现不同数据库的的访问&def目前实现了SQLserver&def Oracle&def DataAccess 这可节略大量数据库访问代码

      亮剑.NET深入体验与实战精要3

      5.5.3 ASP.NET连接Oracle失败的解决方法 245 本章常见技术面试题 246 常见面试技巧之经典问题巧回答 246 本章小结 247 第6章 关于XML 249 6.1 XML概述 250 6.1.1 XML和HTML有什么区别 250 6.1.2 XML的优势 250 6.2 ...

      中美 IT 培训 C# Asp.net 全套笔记1

      详细讲授远程处理(Remoting)技术,包括基本远程处理框架,配置文件及其应用, 异步远程处理技术,租约和生存期控制;系统地讲授Windows服务编程、Com+ 服务、WSE2.0的使用。 掌握 Socket 编程、TCP、 UDP编程、...

      中美 IT 培训 C# Asp.net 笔记3

      详细讲授远程处理(Remoting)技术,包括基本远程处理框架,配置文件及其应用, 异步远程处理技术,租约和生存期控制;系统地讲授Windows服务编程、Com+ 服务、WSE2.0的使用。 掌握 Socket 编程、TCP、 UDP编程、...

      中美 IT 培训 C# Asp.net 笔记2

      详细讲授远程处理(Remoting)技术,包括基本远程处理框架,配置文件及其应用, 异步远程处理技术,租约和生存期控制;系统地讲授Windows服务编程、Com+ 服务、WSE2.0的使用。 掌握 Socket 编程、TCP、 UDP编程、...

      自由宿主Asp.net网站通用后台管理系统 v3.2.rar

      3. 增加oracle和mysql数据库支持,支持,系统可以支持ms sql、access、oracle和mysql等主流数据库; 4. 由于原来的jquery.ui在系统上使用并不多,在本次改版后去除了jquery.ui,css和js上有大量瘦身; 5. 登陆后...

      .net 通用数据库访问类(优化版)源码

      通用数据库访问类 通过配置 可实现不同数据库的的访问&def目前实现了SQLserver&def Oracle&def DataAccess 这可节略大量数据库访问代码&def配合我的代码生活成器(http://win.51aspx.com/CV/ClassGenerate/) 将极大...

      Oracle64位 sqlldr命令安装包

      最最主要的还是sqlldr,想找个单独可用的sqlldr,在Oracle 10g Client 精简优化安装包不到12M http://download.csdn.net/download/mysky2008/4382509 下载了10g的,但本地测试出现sql*loader 704错误,不知道怎么...

      誉天教育OCM《oracle性能优化模块》三次课视频

      【誉天教育】OCM讲师李老师《oracle性能优化模块》三次视频: ·第一次课程 数据库的基本健康状况检查(主要检查数据库的配置问题) ·第二次课程 健康检查基本工具介绍 ·第三次课程 完成一个基本的系统健康检查...

      Oracle Database 11g初学者指南--详细书签版

      他的关注方向包括Oracle产品集,以及其他前沿技术和这些技术在优化数据仓库设计和部署的应用。他还是各种技术会议的主讲人,包括COLLABORATE、Oracle OpenWorld和其他地方与区域会议。  Michael Abbey是公认的...

      Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

      http://blog.csdn.net/fksec/article/details/7888251 该资料是《Oracle SQL高级编程》的源代码 对应的书籍资料见: Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐) 基本信息 原书名: Pro Oracle SQL...

      桃源网络硬盘.Net v5.5.rar

      桃源网络硬盘.Net简介: 1.多用户注册各自使用,互不干予。 2.在自己的空间中上传多文件及大文件进行在线查看管理,可建多级目录存放。 3.文件目录多级共享,可共享整个用户空间。 4.树状显示系统功能和目录结构,...

      自由宿主Asp.net网站通用后台管理系统 v3.1

      3. 增加oracle和mysql数据库支持,支持,系统可以支持ms sql、access、oracle和mysql等主流数据库; 4. 由于原来的jquery.ui在系统上使用并不多,在本次改版后去除了jquery.ui,css和js上有大量瘦身; 5. 登陆后主页...

      Statspack-v3.0.pdf

      时负责Oracle数据库管理及优化,并为多家烟草企业提供Oracle数据库管理、优化及技术支持。 目前任职于北京某电信增值业务系统提供商企业,负责数据库业务。管理全国30多个省点数据 库平台。 实践经验丰富,长于...

      实体类生成器(V2)

      3.Oracle数据库连接字符串的各种形式的拼写. 4.对内部代码的优化及得失分析. 5.对系统结构的整理及得失分析. *6.处理数据库中不规范的表名,字段名.如中间有特殊字符,空格等. 7.命名空间名,包名不应为空. 8.Java...

    Global site tag (gtag.js) - Google Analytics