`
kennethf6986
  • 浏览: 67459 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle的rac

阅读更多

      RAC,全称real application clusters,译为实时应用集群 Oracle新版数据库中采用的一项新技术,是高可用性的一种,也是Oracle数据库支持网格计算环境的核心技术

 

在一个应用环境当中,所有的服务器使用和管理同一个数据库,目的是为了分散每一台服务器的工作量,硬件上至少需要两台以上的服务器,而且还需要一个共享存储设备。同时还需要两类软件,一个是集群软件,另外一个就是Oracle数据库中的RAC组件。同时所有服务器上的OS都应该是同一类OS,根据负载均衡的配置策略,当一个客户端发送请求到某一台服务的listener后,这台服务器根据我们的负载均衡策略,会把请求发送给本机的RAC组件处理也可能会发送给另外一台服务器的RAC组件处理,处理完请求后,RAC会通过集群软件来访问我们的共享存储设备.

  逻辑结构上看,每一个参加集群的节点有一个独立的instance,这些instance访问同一个数据库。节点之间通过集群软件的通讯层(communication layer)来进行通讯。同时为了减少IO的消耗,存在了一个全局缓存服务,因此每一个数据库的instance,都保留了一份相同的数据库cacheI

  RAC中的特点是:

  每一个节点的instance都有自己的SGA

  每一个节点的instance都有自己的background process

  每一个节点的instance都有自己的redo logs

  每一个节点的instance都有自己的undo表空间

  所有节点都共享一份datafilescontrolfiles

  还提出了一个缓存融合的技术(Cache fusion)

  目的有两个

  01.保证缓存的一致性

  02.减少共享磁盘IO的消耗

  因此在RAC环境中多个节点保留了同一份的DB CACHE

  缓存融合(Cache fusion)工作原理:

  ****************************************

  01.其中一个节点会从共享数据库中读取一个blockdb cache

  02.这个节点会在所有的节点进行交叉db block copy

  03.当任何一个节点缓存被修改的时候,就会在节点之间进行缓存修改

  04.为了达到存储的一致最终修改的结果也会写到磁盘上

  ClusterWare组件

  *******************

  四种Service

  Crsd - 集群资源服务

  Cssd - 集群同步服务

  Evmd - 事件管理服务

  oprocd - 节点检测监控

  三类Resource

  VIP - 虚拟IP地址(Virtual IP)

  OCR - Oracle Cluster Registry(集群注册文件),记录每个节点的相关信息

  Voting Disk - Establishes quorum (表决磁盘),仲裁机制用于仲裁多个节点向共享节点同时写的行为,这样做是为了避免发生冲突。

  RAC的组件

  ************

  提供过了额外的进程,用来维护数据库

  LMS - Gobal Cache Service Process 全局缓存服务进程

  LMD - Global Enqueue Service Daemon 全局查询服务守护进程

  LMON - Global Enqueue Service Monitor全局查询服务监视进程

LCK0 - Instance Enqueue Process 实例查询进程

 

 

Oralce RAC监听原理 简介

RAC1 RAC2 都需需要配置监听,各自监听自己的 实例;

客户端使用SERVER的虚拟IP配置2个监听地址;

为什么使用虚拟地址?

监听地址使用 VIP(如果没有vip,连接失败节点的process会有一个比较长的tcp超时等待,才能返回错误,有了vip后,节点失效后,由于vip漂移到其它节点,连接该vipprocess很快就能返回错误,从而更快的尝试连接其它活动的节点)

客户最终连接到哪个INSTANCE

如果客户端没有指定连接到哪个实例则 决定分配到哪个实例由以下2个设置决定:

Client-Side Load BalancingCLB:

由客户端tnsname.ora配置

Server-Side Load Balancing(SLB)

==================

情况1:客户设置CLB ,随机请求一个INSTANCE,该实例所在服务器端(默认都会设置SLB)的监听根据该实例PMON进程返回的所有INSTANCE目前情况(session数或elipse tiime)决定导向用户到哪个INSTANCE的监听。

情况2:客户没有设置CLB,则只请求的第一个ADDR 节点,软如果监听没有响应 会导致TIMEOUT错误。

 

=================

如果使用DBCA创建RAC默认已经设置 SLB,有2SLB可设置:

Short—Connections are distributed across instances based on the elapsed time
under the service. Use the Short connection load balancing goal for applications
that have connections of small duration.
■ Long
(默认 适合连接池或者报表)—Connections are distributed across instances based on the number of
sessions per instance, for each instance that supports the service. Use the Long
connection load balancing goal for applications that have connections of long
duration. This is typical for connection pools and SQL*Forms sessions. Long is the
default connection load balancing goal.

 

---

可以在客户端TNS文件配置 实现连接到特定某个INSTANCE(sunny2)
SUNNY67 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 142.100.14.69)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 142.100.14.70)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = sunny)
(instance_NAME = sunny2)
)
)

In an Oracle RAC database, client connections should use both types of connection
load balancing. When you create an Oracle RAC database using Oracle Database
Configuration Assistant (DBCA), DBCA configures and enables server-side load
balancing by default.

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics