转载自--

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

作为一种分布式协议的TNS,允许远距离的系统之间的透明数据库通讯。TNS成为Oracle逻辑数据请求与远距离服务器的物理通讯之间的“绝

缘体(insulator)”。由此,网络管理人员可以控制很多方面的网络性能优化,这样,Oracle管理人员就极少获得影响整个数据库性能(图A)的

网络设置的控制权。

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

本文中我也讨论了sqlnet.ora, tnsnames.ora和protocol.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.

在缺省的情况下,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字节。

下文转载自--http://space.itpub.net/35489/viewspace-600653

虽然在的立场上,总是建议客户能够更好地规划自己的应用,在有其它负载平衡方法的时候,尽量不要依赖于Oracle的Load Balance方法,但是往往在给客户配置完Oracle 以后,客户都会要求要测试负载平衡(Load Balance)和TAF(Transparent Application Failover),并且将这两个测试作为RAC是否成功的标准。

这是一件很无奈的事情,像把旁枝末节看作了主要功能,甚至有些买椟还珠的感觉,但是毕竟这是客户,更了解Oracle Load Balance(后文用LB表示),才可以更好满足客户需求。

本文不牵涉TAF(可以参看老熊关于TAF的系列文章,,),如何在Oracle10g之后版本中在端service层面设置TAF,可以参看Metalink Note:。

对于LB,在Oracle10g之前有Client端和端两种,在Oracle10g之后又推出了Server端Service层面的LB配置,本文也不涉及Service层面的LB。

在Oracle9i,10g,11g版本中都适用的LB配置分为以下两种。

(1) Client Side Connect Time Load Balance

*p,?l{/]25574072(2) Server SideListenerConnection Load Balance (此处的Listener用以跟之后的Server Side Service Load Balance区分开)

1. Client Side Connect Time Load Balance

2D8{\5rFB7Q{3Z25574072既然是Client端的LB,那么也就是不需要在数据库服务器端配置任何参数,完全由客户端机器上的tnsnames.ora文件中对于TNS的配置来决定,实际上也就是LOAD_BALANCE参数。

看一个例子,下面这样的TNS配置就是启用了客户端的LB。

CLIENT_LOADBALANCE =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip)(PORT = 1521))

(LOAD_BALANCE = yes)

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = rac_lb)

)

)

(LOAD_BALANCE =

yes)指示SQLNet随机选择ADDRESS_LIST列表中的任意一个监听,将客户端请求发送到此监听上,通过这种方法来实现负载平衡。如果

(LOAD_BALANCE = no)那么将会按照ADDRESS_LIST列表中的顺序选择监听,只要这个监听能够正常连接那么就使用该监听。

因此在某些负载平衡的解决方案中会使用(LOAD_BALANCE = no)但是在多个客户端或者应用服务器端配置顺序不同的ADDRESS_LIST,以此来实现人为的负载平衡。

如果在TNS配置时使用的是ADDRESS_LIST语法,那么必须显示设置LOAD_BALANCE = yes,默认值LOAD_BALANCE = no。

2. Server Side Listener Connection Load BalanceITPUB个人空间1}G!`Uu:l-{

实现server side load

balance要求监听能够知道在整个RAC环境中的各节点负载情况,节点负载情况是由PMON进程来定期更新的,而要让PMON进程能够通知其它节点自

己节点的负载情况则需要设置数据库初始化参数REMOTE_LISTENER。

在RAC数据库服务器端的每个节点上的tnsnames.ora文件中设置如下的TNS名称。

LISTENERS_RAC =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST=node1-vip)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST=node2-vip)(PORT = 1521))

)

)

然后设置REMOTE_LISTENER参数值为LISTENERS_RAC。

>ALTERsystemSETREMOTE_LISTENER='LISTENERS_RAC'scope=BOTH;

当某个实例的监听收到客户端连接请求,将会统筹考虑RAC环境中各个节点的负载情况,然后将该连接传递到具有最小负载的节点的最小负载实例上。

在10gR2版本之后,节点和实例的负载计算通过lbscore来完成,而lbscore则由两个动态值决定:”goodness” 和 “delta”,这两个值均由PMON来定期更新,计算公式如下:

s{x(kwqD,I25574072Lbscore = Goodness (Received from PMON update)

%~"X

y4H7N0T"B25574072Delta = New Delta (Received from PMON update)

Utm+[Ab25574072在PMON定期更新的间隔,如果有新连接进入,那么lbscore的计算公式是:

O)dIU8PY25574072Lbscore = Lbscore(previous) + Listener Delta

可以通过添加监听的trace(TRACE_LEVEL_LISTENER = 16)来获取lbscore的产生情况,更详细的文档请参看Metalink Note: 263599.1。

关于Failover,多说一句,其实Failover也有两种,一种是Connect Time Failover,由客户端TNS配置的(failover=on)参数控制,另外一种是TAF,由客户端TNS配置中的failover_mode参数控制。

oracle rac通讯,连接Oracle RAC 的tnsname.ora设置相关推荐

  1. oracle 客户端可以连接11g rac vip 但是不能连接scan ip问题

    解决oracle客户端可以连接11g rac vip,但是不能连接scan ip问题 前段时间配置了一套hp ux11.31 oracle11g r2 rac,配置完成后,本机的客户端可以连接vip和 ...

  2. python3连接oracle教程,python3连接oracle数据库

    我这里使用的版本是python3.6 64位 ,cx_Oracle-5.3-11g.win-amd64-py3.6-2和instantclient-basic-windows.x64-18.5.0.0 ...

  3. arcgis读取oracle数据库,arcgis连接Oracle数据库

    arcgis连接Oracle数据库 配置声明:本人的电脑是win10 64位,安装的Oracle是oracleR11gr2 64  arcgis版本位10.2 安装是在同一台电脑上. 一.首先是安装O ...

  4. oracle10客户端tnsname,连接Oracle RAC 的tnsname.ora设置

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

  5. 在C#中,不安装Oracle客户端如何连接Oracle数据库

    本方法优点: 1.程序内集成Oracle客户端,无需用户自行进行配置 本方法缺点: 2.增加程序包的体积(Oracle instant client本身有几十兆大小) 下面说一下如何实现. 0.首先, ...

  6. Oracle : 使用JDBC连接ORACLE的三种URL格式

    文章目录 格式一: Oracle JDBC Thin using an SID: 格式二: Oracle JDBC Thin using a ServiceName: 格式三:Oracle JDBC ...

  7. eclipse怎么配置oracle数据库,Eclipse连接Oracle数据库介绍

    Eclipse连接Oracle数据库介绍 由于eclipse是开源产品,所以许多工具都以插件的形式提供由用户选择安装,许多文章中都提到了如何连接数据库,但是并没有说明需要加载以及如何加载数据库.jar ...

  8. python连接oracle数据库_Python连接oracle数据库 例子一

    step1:下载cx_Oracle模块,cmd--pip install cx_Oracle step2: 1 import cx_Oracle #引用模块cx_Oracle 2 conn=cx_Or ...

  9. Oracle.ManagedDataAccess.dll 连接Oracle数据库不需要安装客户端

    最开始,连接Oracle 数据是需要安装客户端的,ado.net 后来由于微软未来不再支持 System.Data.OracleClient 这个 Data Provider 的研发,从 .NET 4 ...

最新文章

  1. 使用Photoshop制作网页模板
  2. 神经网络-常用激活函数
  3. http https
  4. VSLAM与SLAM联手应对数十万台巡检机器人商机
  5. java基础----Java Collections Framework
  6. 【系统架构理论】一篇文章精通:Spring Cloud Netflix Eureka
  7. general protection fault怎么办_法院离婚调解书我想办补充协议怎么办?-免费法律咨询...
  8. C#工控上位机实例_HINET智能网关用于三菱FX1S/1N/2N/3S/3G/3UPLC远程编程和上位机监控...
  9. 2018年程序员书单
  10. C/C++项目源码——数字雨DigitalRain
  11. 小米手机怎么按键测试软件,小米手机开机后出现工厂方式自动测试等等是什么意思...
  12. 电脑端思维导图软件推荐
  13. 新中大财务软件-A3中怎样更改IP地址
  14. 原相机怎么设置水印_原来手机拍照也可以添加文字、水印、超实用,我怎么没有早点发现...
  15. 假设用于通信的电文由字符集{a,b,c,d,e,f,g}中的字母构成。它们在电文中出现的频度分别为
  16. 对计算机病毒的防治也应以预防,在硬盘中再备份一份_对计算机病毒的防治也应以预防为主。下列各项措施中,错误的预防措施是( )......
  17. Jetpack学习-5-Navigation简单使用
  18. K8S集群部署kube-Prometheus监控Ceph(版本octopus)集群、并实现告警。
  19. monkey命令_随机测试工具猴子monkey
  20. 自考计算机专业的草根,我找到了自己的南方——《草根考研心经》传授

热门文章

  1. 新版语音直播社交APP源码 多人连麦聊天/双端APP源代码 附编译说明
  2. Google Earth Engine ——ERA5-Land Hourly - ECMWF Climate Reanalysis逐小时数据集
  3. 推荐两个VS开发工具插件
  4. ae master速卖通_速卖通AE PLUS项目上线 拥有更快物流和免费退货
  5. 集群部署看过来,低代码@AWS智能集群的架构与搭建方案
  6. Office 365全局管理员常用的几个配置链接
  7. 【漫事杂谈003】电脑弹出2345热点资讯的处理办法
  8. 用ntdsutil来清除无效的DC信息
  9. 赛效:PDF电子文档怎么转HTML?
  10. 台式计算机配置的简单说明,电脑台式机配置的知识【图文】