博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原创】Oracle RAC原理和安装
阅读量:5979 次
发布时间:2019-06-20

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

1.说一下RAC和单节点数据库的区别有哪些?你认为RAC最有用的功能是说什么?

区别

1RAC2个以上的实例,单节点只有1个实例

2RAC具有实例级别的高可用

3)实例与实例之间通过内联网络交换数据,单节点不可

4RAC每个节点都有自己套SGA、后台进程、redo logundo file

5RAC可以增减节点

RAC最有用的功能

答:我认为RAC最有用的功能就是实例级的failover,它可以保证在其中有节点crash的时候,其他节点可以迅速接管。保证系统持续可用。往往人们会认为RAC2个节点性能就会提升2倍,这是一个误区,由于要保证数据的一致性往往性能会消耗在内存间的数据块相互拷贝和交叉上,因此不一定性能会好于单节点,而且节点越多性能曲线就会下降越快。

2.ps命令查到属于crs集群软件的进程名称,贴出输出结果。

CRS集群进程是属于Clusterware集群软件自己的进程,不同于RAC实例后台进程

下面分别说明一下Clusterware集群软件自己的进程功能

1.crs集群资源进程:全称cluster ready services,作用为管理集群中所有资源的进程,资源例如数据库监听实例内存进程

VIP 应用程序集群 ASM

crs进程是根据存储于OCR中的资源配置信息来管理这些资源的。

2.css 集群同步进程:全称 cluster synchronization service,作用为管理集群节点成员的进程,在增减集群节点时收集节点最新状态并同步到所有节点上。这个进程发生故障会导致集群重启

3.EVM 事件管理进程:全称 Event Management,作用为发布和记录事件的进程,发布CRS创建事件的后台进程,只要哪个进程发生问题,EVMD就会把事件写入trace文件。

EVMD称作事件管理守护进程

4.ONS 事件发布及订阅进程:全称 Oracle Notification Service,作用为快速通知事件的发布及订阅服务

3.说一下在RAC环境下,数据库实例会多出哪些后台进程,用ps命令查找,给出输出结果,并说明它们的作用。

RAC模式下Oracle数据库比单节点要多出许多后台进程,这些后台进程都是用于集群管理和监控的,下面我们简单介绍一下它们的作用。

1.LMSn  - gobal cache service process 全局缓存服务进程n从零开始分配

1RAC提供了10LMS进程,会随着节点间消息传递的数据量的增加而增加,默认至少有2LMS进程

2LMS进程主要管理集群内数据块的访问,并在不同实例的中传递数据块镜像

3LMS进程保证了每一时刻只允许一个实例去修改数据块

4)当一个实例请求数据块时,拥有该资源的实例的LMS进程会创建一个数据块镜像的一致性读。然后把该数据块传递到请求资源的实例的buffer cache中。

2.LMON  - Global Enqueue Service Monitor 全局队列服务监控进程

1)监控整个集群的内存结构

2)处理异常终止的进程和实例

3)当有实例加入集群和离开集群时,全局锁定和资源的重新分配

4)提供全局锁资源的恢复操作

5)监控全局的锁资源处理死锁和阻塞

3.LCK  - LOCK  Process

1LCK进程主要用来管理实例间资源请求和跨实例调用操作,调用操作包括数据字典等对象的访问

2)处理非cache fusion cache资源请求,像 dictionary cacherow cache

4.LMD – Global Enqueue Service 全局队列服务守护进程

1LMD进程主要管理对全局队列和资源的访问,并更新相应队列的状态,处理来自于其他实例的资源请求。

2)每一个全局队列的当前状态存储在相应的实例共享内存中,该状态表明该实例具有相应的权利使用该资源。

3LMD进程还负责队列的死锁问题

5.DIAG – Diagnostic Daemon 诊断守护进程

1Oracle10g新的后台进程

2)主要用来捕获实例中失败进程的诊断信息,并生成相应的trace文件

3)此进程不需要配置,自动启动无需调整

4)如果该进程失败则自动重启

具体进程结构请参考下面的图示

我们使用ps命令输出10g11gRAC实例后台进程

10g RAC特有进程:

$ ps -ef|grep ora_
oracle    4721     1  0 Feb26 ?        00:00:00 ora_diag_ONEPIECE1
oracle    4725     1  0 Feb26 ?        00:02:26 ora_lmon_ONEPIECE1
oracle    4727     1  0 Feb26 ?        00:00:02 ora_lmd0_ONEPIECE1
oracle    4729     1  0 Feb26 ?        00:00:01 ora_lms0_ONEPIECE1
oracle    4733     1  0 Feb26 ?        00:00:01 ora_lms1_ONEPIECE1
oracle    4761     1  0 Feb26 ?        00:00:07 ora_lck0_ONEPIECE1
oracle    4772     1  0 Feb26 ?        00:00:00 ora_asmb_ONEPIECE1
oracle    4776     1  0 Feb26 ?        00:00:00 ora_rbal_ONEPIECE1
oracle    4840     1  0 Feb26 ?        00:00:00 ora_o001_ONEPIECE1
11g RAC特有进程:
$ ps -ef|grep ora_
oracle     426     1  0 Feb27 ?        00:00:08 ora_o000_RAC11G21
oracle    9082     1  0 Feb25 ?        00:01:09 ora_diag_RAC11G21
oracle    9086     1  0 Feb25 ?        00:00:27 ora_ping_RAC11G21
oracle    9088     1  0 Feb25 ?        00:00:06 ora_acms_RAC11G21
oracle    9092     1  0 Feb25 ?        00:05:27 ora_lmon_RAC11G21
oracle    9094     1  0 Feb25 ?        00:01:32 ora_lmd0_RAC11G21
oracle    9096     1  0 Feb25 ?        00:02:07 ora_lms0_RAC11G21
oracle    9100     1  0 Feb25 ?        00:00:06 ora_rms0_RAC11G21
oracle    9102     1  0 Feb25 ?        00:00:14 ora_lmhb_RAC11G21
oracle    9116     1  0 Feb25 ?        00:00:09 ora_rbal_RAC11G21
oracle    9118     1  0 Feb25 ?        00:00:05 ora_asmb_RAC11G21
oracle    9136     1  0 Feb25 ?        00:04:25 ora_lck0_RAC11G21
oracle    9138     1  0 Feb25 ?        00:00:14 ora_rsmn_RAC11G21
oracle    9295     1  0 Feb25 ?        00:00:07 ora_gtx0_RAC11G21
oracle    9297     1  0 Feb25 ?        00:00:07 ora_rcbg_RAC11G21

4.画图说明,当RAC中的一个实例down掉之后,其它实例是如何接管这个实例上的事务的?

如图所示:我们现在拥有2个节点,我们在这2个节点上部署RAC集群,每个节点上创建一个实例,这2个节点使用内联网传输数据和信息,同时共享一个存储磁阵。介绍完了RAC架构,下面叙述一下RAC的实例级容错。

场景:在生产使用中,突然instance1  shutdown,那么在其上面没有完成的事物如何处理呢。

1)当实例1 crash后,实例2通过VIP就可以知道实例1已经down了。

2)此时需要处理的有2部分数据,一部分是commit的数据,一部分非commit数据

3)对于已经commit写入redo日志但是还没有来得及写入数据文件的记录,实例2可以访问实例1redo log并从最后一次check point之后的信息开始实例恢复。把数据同步到最新状态。

4)对于没有commit的数据利用undo旧映像进行回滚事物。

RAC   CRS   集群  failover  后台进程

Leonarding

2013.06.26

北京&summer

分享技术~成就梦想

Blogwww.leonarding.com

转载地址:http://mxaox.baihongyu.com/

你可能感兴趣的文章
《Cisco IPv6网络实现技术(修订版)》一2.6 配置练习:使用Cisco路由器配置一个IPv6网络...
查看>>
《可穿戴创意设计:技术与时尚的融合》一一第2章 与可穿戴设备有关的故事...
查看>>
ruby动态new对象
查看>>
《JavaScript启示录》——导读
查看>>
如何让你的 Linux 系统干净整洁
查看>>
《JavaScript高效图形编程(修订版)》——6.10 用画布sprites取代DHTMLsprite
查看>>
Linux中grep命令的12个实践例子
查看>>
使用Docker Compose部署基于Sentinel的高可用Redis集群
查看>>
Mybatis 3学习笔记(一)
查看>>
Guice系列之用户指南(十)
查看>>
树与森林的存储、遍历和树与森林的转换
查看>>
Android自定义属性
查看>>
Visual C#之核心语言
查看>>
代码重构(五):继承关系重构规则
查看>>
Windows App开发之集合控件与数据绑定
查看>>
中大型网站技术架构演变过程
查看>>
ARTS训练第三周
查看>>
vue中v-for循环如何将变量带入class的属性名中
查看>>
ceph学习笔记之七 数据平衡
查看>>
windows下的php的memcache扩展的安装及memcache最新下载地址
查看>>