博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rac基础知识温习(1)
阅读量:2446 次
发布时间:2019-05-10

本文共 2365 字,大约阅读时间需要 7 分钟。

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,在应用层面上分散

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15480802/viewspace-703715/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15480802/viewspace-703715/

你可能感兴趣的文章
在SQL Server中截断表操作
查看>>
构建azure对话机器人_如何在5分钟内使用Azure创建聊天机器人
查看>>
sql server表分区_SQL Server中的FORCESCAN和分区表
查看>>
SQL Server中的STRING_SPLIT函数
查看>>
在SQLPackage实用工具中探索操作和任务
查看>>
如何自动执行SQL Server数据库还原
查看>>
亚马逊技能开发入门_Amazon QuickSight入门
查看>>
SQL Server Reporting Services最佳做法
查看>>
SQL FILESTREAM和SQL Server全文搜索
查看>>
SQL Server 2019中的轻量级性能分析
查看>>
学习MySQL:使用SELECT语句从MySQL服务器查询数据
查看>>
sql聚簇索引和非聚簇索引_使用SQL CREATE INDEX创建聚簇和非聚簇索引
查看>>
如何在SQL Server中索引外键列
查看>>
mysql 如何对表排序_学习MySQL:对表中的数据进行排序和过滤
查看>>
sql azure 语法_将SQL工作负载迁移到Microsoft Azure:规划迁移
查看>>
5000_500
查看>>
同步等待 异步等待_异步等待
查看>>
designmode_designMode
查看>>
api代理提取_提取API
查看>>
php 锚点_使用PHP分配锚点ID
查看>>