rac基础知识温习(1)

RAC上的DDL

多节点的RAC,每个节点上都可能有引用表a的游标,无论在任意节点对表aDDL,都需要把所有节点上的引用对象置为invalid;

此时每个节点上的LCK0进程,会对本实例library cache的对象加shared-modeIV(invalidation) instance lock,用户修改是需要获取相应的exclusiveIV锁,

此时会通知本地的LCK0释放shared-mode锁,本地LCK0释放锁之前,会通知其他节点上的LCK0,其他节点的LCK0收到通知后会把本地library cache中的相关对象置为无效。

 

Oracle实例新增进程

LMS—负责数据块在实例间的传递,对应的服务为GCS(global cache service),通过参数GCS_SERVER_PROCESSES控制

LMD—提供GES(global enqueue services),负责多个实例间协调对数据块的访问顺序

LCK—负责non-cache fusion资源的同步访问

LMON—各实例之间的LMON会定期通信,检查集群中各节点的健康状态,负责集群重构、GRD恢复等操作

   集群软件的健康检测必须还要从数据库层面进行,如某个instance挂掉,但从networkOSclusterware层面是检查不到的

1、  提供节点监控,节点的健康状态通过保存在GRD中的位图记录的,1代表正常;各节点间的LMON相互通信,确保位图的一致性

2、  LMON检测到实例级别的脑裂时,先通知下层的clusterware,期待集群解决;一旦超时,自动触发instance membership recovery

3、  LMON借助两种心跳机制:节点间的网络心跳;控制文件的磁盘心跳(每3秒更新一次)

 

 

GCS负责维护全局SCN的产生,采用broadcast算法:每个commit后,节点向其他节点广播,确保每个节点commit后,都能立刻看到SCN

 

 

RACClusterware的交互

Clusterware层:所有节点的clusterware组成一个集群,并选出一个master node;每个稳定的集群状态称为cluster incarnation numberRAC instane启动时会把LMONDBWR等需要操作共享存储的进程作为一个组注册的clusterware层,并获取一个node id

              RAC集群和节点集群是两个层次的集群,各有脑裂、I/O隔离等问题;

              RAC检测到节点故障,则暂停对外服务;通知clusterware异常,并等待其完成集群重构;clusterware完成重构后,会通知上层RAC集群,RAC集群收到消息开始重构;

RAC层:由LMON进程负责维护,提供CGSNMRAC实例的所有进程被当成一个组NM注册到clusterware中;

 

重构触发类型:

1、  有节点加入或离开集群,由NM触发

2、  Network heartbeat异常,LMON/GCS/GES通信超时;由_cgs_send_timeout控制,缺省值为300

3、  Controlfile heartbeat异常,每个实例的CKPT每隔3秒更新控制文件的checkpoint progress record,每个实例对应一个;create database …max instance决定了会创建多少个这种记录;由_controlfile_enqueue_timeout控制,默认900

 

Hangcheck-timer

--linux内核级的IO-Fencing模块,监控Linux的运行状态,若长时间挂起,则会自动重启系统;需要参数hangcheck_tickhangcheck_margin,此外CRS本身还有一个MissCount参数;

 Clusterware在重构时,必须确保故障节点是dead状态,因此misscount > hangcheck_tick + hangcheck_margin,确保节点重构时,节点已经被hangcheck-timer重启

 

CSS有两种心跳机制:

1、  通过私有网络的network heartbeat,叫做misscount

2、  通过voting diskdisk heartbeat,叫做I/O timeout

 

Failover

1、  client-side connect time

tnsname中配置多个地址,用户发起请求时,会遍历地址列表直至成功

2、  TAF(transparent application failover)

tnsname中添加failover_mode配置

Amethod 分为basic/preconnect Btype分为session/select

3、  Service-side TAF

在数据库服务器端配置fail_mode

Loadbalance

1、  connection balancing

客户端均衡:tnsnames配置中添加load_balance=yes

服务器均衡:PMON收集系统的负载信息,并登记到listener中,由local_listener/remote_listener决定,其中remote_listener需要tnsname设置

2、通过service,在应用层面上分散

 

请使用浏览器的分享功能分享到微信等