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

由于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字节。

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

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

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

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

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

(1) Client Side Connect Time Load Balance

(2) Server SideListenerConnection Load Balance (此处的Listener用以跟10g之后的Server Side Service Load Balance区分开)

1. Client Side Connect Time Load Balance

既然是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 Balance

要实现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。

sql>ALTERsystemSETREMOTE_LISTENER='LISTENERS_RAC'scope=BOTH;

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

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

Lbscore = Goodness (Received from PMON update)

Delta = New Delta (Received from PMON update)

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

Lbscore = 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参数控制。

jdbc:oracle:thin:@(description=

(ADDRESS_LIST =

(address=(protocol=tcp)(host=192.168.1.44)(port=1521))

(address=(protocol=tcp)(host=192.168.1.45)(port=1521))

(address=(protocol=tcp)(host=192.168.1.46)(port=1521))

(load_balance=yes)//表示是否负载均衡

)

(connect_data =

//(server = dedicated)//该参数表示专用服务器模式

(service_name=ORACMS)//要操作数据库的服务名

(failover_mode =//连接失败后处理的方式

(type=session)//TYPE =SESSION表示当一个连接好的会话的实例发生故障,系统会自动将会话切换到其他可用的实例,前台应用无须再度发起连接,但会话正在执行的SQL 需要重新执行。

(method=basic)//表示初始连接就连接一个接点

(retries=5)//连接失败后重试连接的次数

(delay=15)//连接失败后重试的延迟时间(以秒为单位)     )   ) ) -- 要点说明 1、load_balance该参数值为yes就是采用负载均衡模式连接,为no就是采用非负载均衡模式 2、method该参数值为basic就是表示初始连接只有一个连接节点,为preconnect就是表示初始连接所有的rac接点 3、server 参数值 dedicated表示专用服务器模式,没什么实际用处,可以去掉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【100亿次的挑战】之春晚控制后台故事分享

讲师:freyli 项目历程简介在介绍控制后台部分之前,先简单回顾下项目的时间线: 10月25日,意向、调研、策划、沟通 11月24日,第一次技术初审 12月7日,互动形态框架确定,时间轴初现 12月15日&#…

前端学习(1434):为什么学习vue

#### 1.2 为什么要学习 Vue传统开发模式: JQueryRequireJS/SeaJSartTemplateGulp/Grunt随着项目业务场景的复杂,传统模式已无法满足需求就出现了Angular/React/Vue等框架- 企业需求 - 主流框架之一(React Angular Vue) - 易用、灵活、高效

oracle 如何创建job,oracle创建job

一、基本语法与MysqL的event事件类似,用来创建数据库的定时任务。DBMS_JOB.SUBMIT(job OUT BINARY_INTEGER,what IN VARCHAR2,NEXT_DATE IN DATE DEFAULTSYSDATE,interval IN VARCHAR2 DEFAULT NULL,no_parse IN BOOLEAN DEFAULT FALSE,instance IN BINARY_INTEGER …

如何简单快速调试高大上的谷歌浏览器

上一篇我们简单的将了在Ubuntu上编译chromium,android content_shell_apk的编译,一切顺利的就能生成apk。但是我们仅仅只是照搬了人家google开源的东西,作为一个开发者我们应带着探索的精神,都说它稳定,速度快。它为什…

前端学习(1435):vue能做什么

#### 1.3 Vue 能做什么- 最大程度上解放了 DOM 操作 - 单页web项目(SinglePageApplication项目,例如[Worktile官网](https://worktile.com/))开发 - 传统网站开发

linux下proc目录,Linux /proc目录详解

3. 例子3.1 /proc/linuxidc.comlinuxidc:~$ ls /proc/1 16819 21242 2180 2494 8768 interrupts partitions116 16820 21244 2181 2524 885 iomem sched_debug11740 17901 21245 21810 2525 acpi ioports scsi1174…

前端学习(1436):vue特点

#### 1.4 核心特性- 双向数据绑定- vue(借鉴了react的虚拟DOM,借鉴了angular双向数据绑定) - 通过 **指令** 扩展了 HTML,通过 **表达式** 绑定数据到 HTML - 解耦视图与数据 - 可复用**组件** - 虚拟DOM - M-V-VM - 数据驱动视图

集合排序求平均

static void Main(string[] args) { ArrayList al new ArrayList(); //定义一个集合Console.Write("请输入人数:"); int n Convert.ToInt32(Console .ReadLine ()); …

Linux装c编译器gcc,c编译器进阶之路,linux下的gcc c编译器使用教程

c编译器的重要性不言而喻,从往期c编译器文章中,如c编译器优化、选定c编译器等,想必大家对c编译器均已有所了解。往期文章中,小编主要从宏观方面为大家讲解c编译器,此外对于gcc c编译器的讲解也大多基于windows。本文中…

前端学习(1437):vue一些链接

#### 1.5 一些链接[Vue官方文档](https://cn.vuejs.org/)[Vue开源项目汇总](https://github.com/opendigg/awesome-github-vue)[Vue.js中文社区](https://www.vue-js.com/)

GDB调试程序(二)

以下文章转自陈皓CSDN博客: http://blog.csdn.net/haoel/article/details/2879 GDB的命令概貌——————— 启动gdb后,就你被带入gdb的调试环境中,就可以使用gdb的命令开始调试程序了,gdb的命令可以使用help命令来查看,如下所示…

Linux下CMAKE编译jsoncpp,c – 如何为jsoncpp编写cmake模块?

我想使用jsoncpp编写C代码以解析JSON文件.让我解释一下我做了什么.我创建了一个CMakeLists.txt,我创建了一个FindJsoncpp.cmake以及一个简单的c文件来测试jsoncpp.当我使用-I /usr/include / jsoncpp / -ljsoncpp编译没有cmake的C源时,它工作正常.但是当我尝试使用cmake构建它时…

前端学习(1438):vue三种安装方式

1. 直接下载源码然后通过路径引入- 开发版本&#xff1a;https://vuejs.org/js/vue.js- 生产版本&#xff1a;https://vuejs.org/js/vue.min.js2. CDNjs <script src"https://cdn.jsdelivr.net/npm/vue2.5.16/dist/vue.js"></script> 3. 使用 npm 下载&…

三星s7共享网络给linux,三星Galaxy S7WiFi状态下可以共享wifi热点吗【详解】

目前&#xff0c;越来越多的智能手机都具有wifi热点的功能&#xff0c;不仅方便了不少网友之间的网络流量共享&#xff0c;而且一个wifi热点还可以共享到多个设备。而三星最新款手机三星Galaxy S7与S7 Edge在wifi热点功能的基础上&#xff0c;将wifi热点功能进行的升华&#xf…

文件处理封装

/// <summary>/// 文件处理封装/// </summary> public static class FileHelper{/// <summary>/// 读取Txt文件/// </summary>/// <param name"FilePath">文件地址</param>/// <returns>文件内容</returns>public s…

前端学习(1439):vue的helloworld

#### 2.2 HelloWorld> 作用:将数据应用在html页面中1. body中,设置Vue管理的视图<div id"app"></div>2. 引入vue.js3. 实例化Vue对象 new Vue();4. 设置Vue实例的选项:如el、data... new Vue({选项:值});5. 在<div idapp></div>中通过…

解决空值的策略

使用Option<T>类型二不是null是解决空值问题的另一种策略。与null相比&#xff0c;Option<T>类型是一个更安全的方法&#xff0c;因为它同样适用于值类型和引用类型。而且它的功能更强大&#xff0c;因为它用“元数据”的方法保存一个值的额外信息&#xff0c;因此…

linux c 内存分配内存,Linuxc - 操作系统内存分配

静态变量是存储在数据段的&#xff0c;在函数中可以共用。全局变量也是存储在数据段的&#xff0c;在全局中可以共用。指针变量本质上是地址&#xff0c;数组变量本质上也是地址。数组是可靠的&#xff0c;不可变的地址。指针变量是不可靠的&#xff0c;可变的。数组本质上是指…

管理linux中文件共享,Linux操作系统文件管理器的共享

在目前最流行的RedHatLinux 9.0中有GNOME和KDE这两个图形桌面。这两个桌面系统中分别有两个不同的文件管理器&#xff1a;在GNOME中是Nautilus(鹦鹉螺)而KDE中是Konqueror&#xff0c;各有不少很实用的特色。其实不管你登录哪个桌面都可以同时使用这两个文件管理器&#xff0c;…