RAC原理

本文探讨了Oracle Real Application Clusters (RAC)与单节点数据库的区别,强调RAC在高可用性和并发处理上的优势。RAC通过多实例、共享存储和专有网络实现容灾和性能提升,其关键功能包括实例间容灾和并发访问增强。同时,列举了RAC环境下特有的后台进程如LMS、LMON等,这些进程在跨实例协调、资源管理和故障恢复中起到关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

(1):RAC具有2个或者2个以上的实例,可以增减节点;而单节点数据库有且只有一个实例

(2):RAC有多个实例,也就是有多个节点,每个节点都就有自己一套SGA,后台进程,而redo log和undo tablespace必须可以被此集群中的任意节点访问 ;而单节点只有一套供自己使用

(3):RAC节点之间通过专有网络连接,一般是千兆网络或者光纤互联,供节点之间的数据块传递使用;单节点不需要专有网络

(4):RAC必须使用共享存储设备,存放数据文件等;单节则可以不需要共享存储设备

 

RAC最有用的功能:

 (1):实例节点之间的容灾,提供实例的高可以,只要有一个实例不宕机,业务依然可以继续访问

 (2):在设计比较良好和存储设备不是瓶颈的前提下,RAC是可以提高业务并发访问以及访问速度的

 

 

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

 

 

crs集群软件的进程是安装好集群软件后就有的,和RAC数据库存在与否无关,以下是Oracle 11.2.0.3下的crs集群进程

 

[grid@rac1 ~]$ ps -ef |grep /u01/app/11.2.0.3/grid/bin

root      2985     1  0 14:22 ?        00:00:03 /u01/app/11.2.0.3/grid/bin/ohasd.bin reboot

grid      3256     1  0 14:23 ?        00:00:01 /u01/app/11.2.0.3/grid/bin/oraagent.bin

grid      3268     1  0 14:23 ?        00:00:00 /u01/app/11.2.0.3/grid/bin/mdnsd.bin

grid      3280     1  0 14:23 ?        00:00:00 /u01/app/11.2.0.3/grid/bin/gpnpd.bin

grid      3290     1  0 14:23 ?        00:00:01 /u01/app/11.2.0.3/grid/bin/gipcd.bin

root      3302     1  0 14:23 ?        00:00:02 /u01/app/11.2.0.3/grid/bin/orarootagent.bin

root      3314     1  0 14:23 ?        00:00:01 /u01/app/11.2.0.3/grid/bin/osysmond.bin

root      3327     1  0 14:23 ?        00:00:00 /u01/app/11.2.0.3/grid/bin/cssdmonitor

root      3341     1  0 14:23 ?        00:00:00 /u01/app/11.2.0.3/grid/bin/cssdagent

grid      3353     1  1 14:23 ?        00:00:04 /u01/app/11.2.0.3/grid/bin/ocssd.bin

root      3474     1  0 14:23 ?        00:00:00 /u01/app/11.2.0.3/grid/bin/octssd.bin reboot

grid      3512     1  0 14:23 ?        00:00:00 /u01/app/11.2.0.3/grid/bin/evmd.bin

root      3885     1  0 14:25 ?        00:00:01 /u01/app/11.2.0.3/grid/bin/crsd.bin reboot

grid      3982  3512  0 14:25 ?        00:00:00 /u01/app/11.2.0.3/grid/bin/evmlogger.bin -o /u01/app/11.2.0.3/grid/evm/log/evmlogger.info -l /u01/app/11.2.0.3/grid/evm/log/evmlogger.log

grid      4044     1  0 14:25 ?        00:00:01 /u01/app/11.2.0.3/grid/bin/oraagent.bin

root      4048     1  0 14:25 ?        00:00:01 /u01/app/11.2.0.3/grid/bin/orarootagent.bin

grid      4429     1  0 14:27 ?        00:00:00 /u01/app/11.2.0.3/grid/bin/tnslsnr LISTENER -inherit

root      4600     1  1 14:28 ?        00:00:00 /u01/app/11.2.0.3/grid/bin/ologgerd -m rac2 -r -d /u01/app/11.2.0.3/grid/crf/db/rac1

grid      4680  4347  0 14:29 pts/1    00:00:00 grep /u01/app/11.2.0.3/grid/bin

 

 

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

 

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

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

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

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

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

 

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

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

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

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

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

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

 

3.LCK  - LOCK  Process

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

2)处理非cache fusion 的cache资源请求,像 dictionary cache或row cache

3) 由于LMS进程负责主要的锁管理功能,所以每个实例只有一个LCK进程

 

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

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

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

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

 

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

1)Oracle10g新的后台进程

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

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

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

 

[grid@rac1 ~]$ ps -ef |grep ora_

 

oracle   14472     1  0 23:06 ?        00:00:01 ora_diag_chris1

oracle   14482     1  0 23:06 ?        00:00:02 ora_lmon_chris1

oracle   14484     1  0 23:06 ?        00:00:03 ora_lmd0_chris1

oracle   14486     1  1 23:06 ?        00:00:15 ora_lms0_chris1

oracle   14508     1  0 23:06 ?        00:00:00 ora_asmb_chris1

oracle   14526     1  0 23:06 ?        00:00:05 ora_lck0_chris1

 

 

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

 

从图看来:node1和node2通过专有网络和公共网络互连,以及共同使用一个存储设备,redo,undo,data files ,control file都存放在共享存储上,现在node1宕机了

 

(1)node2上的LMON监控进程通过专用网络测试node1的连通性,发现node1无响应,之后通过仲裁磁盘表决,最后将node1从集群中移除

(2)node2读取共享存储上node1的最后一次checkpoint之后的redo日志文件信息,将提交或未提交的事务全部重做一遍,将数据更新到最新状态

(3)node2读取共享存储上node1的undo段,回滚其未提交的事务,实例恢复完毕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值