LMON:GLOBAL ENQUEUE SERVICE MONITOR
LMON 主要监测群集内的全局队列和全局资源,管理实例和处理异常并对相应的群集队列(enqueues是用来进行串行化行更新的共享的内存结构)进行恢复操作。 监控全局锁定(global enqueues)及其资源,并提供global enqueues资源的恢复操作。
各个实例的LMON进程会定期通信,以检查集群中各个节点的健康状况,当某个节点出现故障时,负责集群重构、GRD恢复等操作,它提供的服务叫做Cluster Group Services(CGS)
集 群中,健康检测是非常重要的,如果健康检测出现问题,那么可能出现”脑裂问题“。但是在关键应用中只靠集群软件的健康软件的健康监测是不够的。比如某个节 点Instance异常挂起,导致其不能对我提供服务。如果单从Network、OS、ClusterWare几个层面看,可能检测不到这种异常。因此, 脱离了应用程序的集群检测是没有意义的,数据库必须有自我监测的机制,而LMON被赋予了自检功能,这个功能是LMON提供的CGS服务,总的来说,这个 服务有以下几个要点。
1、LMON提供了节点监控(Node Monitor)功能,这个功能是用来记录应用层各个节点的健康状况,节点的健康状况是通过一个保存在GRD中的位图(Bitmap)来记录的,每个节点 一位,0代表着关闭,1代表着正常运行。各个节点间的LMON会相互通信,确认这个位图的一致性。
2、节点上的LMON进程会定期进行通信,这个通信可以通过CM层完成,也可以不通过CM层,直接通过网络层。
3、 LMON可以和下层的Clusterware合作也可以单独工作,当LMON检测到实例级别的脑裂时(实例认为对方已经down掉,自己还健 在),LMON会先通知下层的Clusterware,期待借助Clusterware解决脑裂问题。但是RAC并不假设Clusterware肯定能够 解决问题,因此LMON进程不会无尽等待Clusterware层的处理结果。如果发生等待超时,LMON进程会自动触发IMR(Instance Membership Recovery)也叫做Instance Membership Reconfiguration。LMON提供的IMR看作是Oracle在数据库层提供的”脑裂“、”IO隔离“机制。
4、LMON主要也是借助两种心跳机制来完成健康检测。
节点间的网络心跳(Network Heartbeat):可以想象成节点间定时发送Ping包检测节点状态。如果能够在规定的时间内收到响应,就认为对方健在。
通 过控制文件的磁盘心跳(Controlfile Heartbeat):每个节点的CKPT进程每隔三秒更新一次控制文件的一个数据块,这个数据块叫做Checkpoint Progress Record,控制文件是共享的,因此实例间可以相互检查对方是否及时更新以判断状态。
可以通过视图查看这个操作:
SQL> select inst_id,cphbt from x$kcccp;
INST_ID CPHBT
---------- ----------
1 801362227
1 801340474
SQL> /
INST_ID CPHBT
---------- ----------
1 801362229
1 801340476
LMD:GLOBAL ENQUEUE SERVICE DAEMON
LMD 进程主要管理对全局队列和资源的访问,并更新相应队列的状态,处理来自于其他实例的资源请求。每一个全局队列的当前状态存储在相应的实例共享内存中,该状 态表明该实例具有相应的权利使用该资源。一个实例(master)的共享内存中存在一个特殊的队列,该队列纪录来自其他远程实例的资源请求,当远程实例的 LMD进程发出一个资源请求时,该请求指向master实例的LMD,当master实例的LMD进程受到该请求后,在共享内存中的特殊队列中监测该资源 是否无效,如果有效则LMD进程更新该资源对列的状态,并通知请求资源的LMD进程该资源队列可以使用了,如果资源队列正在被其他实例使用或者当前无效, 则LMD进程通知正在使用中的实例的LMD进程应该释放该资源,等资源释放变得有效时,MASTER实例的LMD进程更新该资源队列的状态并通知请求资源 实例的LMD进程该资源队列可以使用了。另外LMD进程也负责队列的死锁问题。。。
这个进程负责提供的是GES( Global Enqueue Service), 具体来说,这个进程负责在多个实例之间协调对数据块的访问顺序,保证数据的一致性。
LMSn:GLOBAL CACHE SERVICE PROCESS(n 0~9)
LMS 进程主要用来管理集群内数据块的访问,并在不同实例的BUFFER CACHE中传输块镜像。LMS进程跨集群管理数据库的请求,并保证在所有实例的BUFFER CACHE中一个数据块的镜像只能出现一次。LMS进程靠着在实例中传递消息来协调数据块的访问,当一个实例请求数据块时,该实例的LMD进程发出一个数 据块资源的请求,该请求只向MASTER数据块的实例的LMD进程,MASTER实例的LMD进程同时正在使用的实例的LMD进程释放该资源,这时拥有该 资源的实例的LMS进程会创建一个数据块镜像的一致性读,然后把该数据块传递到请求该资源的实例的BUFFER CACHE中。LMS进程保证了在每一时刻只能允许一个实例去更新数据块,并负责保持该数据块的镜像纪录(包含更新数据块的状态FLAG),RAC提供了 10个LMS进程,该进程数量随着节点间的消息传递的数据的增加而增加。
这个进程是Cache Fusion的主要进程,负责数据块在实例间的传递,对应的服务叫做GCS(Global Cache Service)。这种进程的数量是通过参数GCS_SERVER_PROCESSES来控制,缺省是2个,取值范围是0-9.
LCK:lock process
负责Non-Cache Fusion资源的同步访问,每个实例有一个LCK进程。
DIAG:DIAGNOSABILITY DAEMON
DIAG进程主要用来捕获实例中失败进程的诊断信息,实例出现运行时错误时收集诊断数据包记录到Alter日志中或 生成相应的TRACE文件(该trace文件保存在backupground_dump_dest/cdmp_timestamp目录下),该进程不需要进行配置更不应该被停止。该进程自动启动不需要进行调整,如果该进程失效则自动重新启动。
OSD:Operating System-Dependent
是指依赖操作系统的一些参数、软件等。RAC通过操作系统相关的软件来访问操作系统和一些于CLUSTER相关的服务进程。OSD软件可能由Oracle提供(windows平台)或由硬件厂商提供(unix平台)。
OSD包括三个自部分:
The Cluster Manager(CM):集群监视器监视节点间通信,并通过interconnect来协调节点操作。同时还提供CLUSTER中所有节点和实例的统一视图。CM还控制CLUSTER的成员资格。
The Node Monitor(节点监视器):节点监视器提供节点内各种资源的状态,包括节点、interconnect硬件和软件和共享磁盘等。
The Interconnect。
SCN
在RAC环境中,每个节点都有自己的SCN发生器,每个节点都会修改数据库。必须有某种机制 保证这些SCN在时间排序上的精确。如果紧靠计算机的系统时钟肯定是不够的。在RAC环境中, 由GCS负责全局维护SCN的产生,一共通过两个算法产生SCN:
Lamport算法:在所有节点间的通信内容中都携带SCN, 每个节点把接收到的SCN和本机的SCN对比,如果本机的SCN 小,则调整本机的SCN和接收的一致, 如果节点间通信不多,还会主动地定期相互通报。 故即使节点处于Idle 状态,还是会有一些Redo log 产生。Oracle9i及10.1 RAC默认采用这种方式。
上述两种算法可以通过调整初始化参数max_commit_propagation_delay来切换。在
Oracle 9i RAC中 , 该参数的默认值都是700厘秒(centisecond),采用Lamport算法。
如果该值小于100厘秒,Oracle就采用广播算法,并且记录在alert.log文件中。 一 般来说这个参数在9i和10.1的缺省值是700(TRU64除外)也就是7秒钟,实际上这是一个上限了,因为lck每隔3秒钟会有一个例行的信息包交 换,一般情况下,3秒钟肯定会完成一次scn传播。这个参数,如果设置为0-99,那么数据库会选择Broadcast-On-Commit算法,由 LGWR来传播SCN。一般来说我们可以设置为0-99或者保留原有的值不动,没有十分可靠的分析证据的情况下,建议不要设置100-700之间的值。 10.2开始,lgwr传播SCN的算法有了很大的改进,因此10.2缺省使用Broadcast-On-Commit,这个参数的缺省值也变为0.
10g R2 RAC的alert log 类似:
Sun Nov 7 02:07:56 2010
ALTER DATABASE OPEN
This instance was first to open
Picked broadcast on commit scheme to generate SCNs
Sun Nov 7 02:08:01 2010
LGWR: STARTING ARCH PROCESSES
这两种算法各有优缺点,Lamport算法虽然负载小,但是节点间会有延迟(提交了但是还没有传递给其他节点),commit广播算法虽然有负载,但是没有延迟。 Oracle 10g R2 RAC 缺省选用的是BroadCast算法。
参考至:《大话Oracle RAC》张晓明著
http://www.jiagulun.com/home.php?mod=space&uid=338&do=blog&id=514
http://ysping.itpub.net/post/40024/488905
http://www.oraclefans.cn/forum/showtopic_tree.jsp?rootid=8579&showid=8579
http://space.itpub.net/35489/viewspace-689333
本文原创,转载请注明出处、作者
如有错误,欢迎指正
邮箱:czmcj@163.com
相关推荐
1. **LMSn (Local Management Server)** - 这些进程负责管理本地节点上的资源,并与集群中的其他节点通信。 2. **LMDn (Local Management Daemon)** - 负责监控节点状态并执行资源启动和停止操作。 3. **CSSn ...
GSD进程是Oracle RAC管理和控制的关键组件,它与DBCA(Database Configuration Assistant)、SRVCTL(Oracle Enterprise Manager Server Control Utility)以及OEM(Oracle Enterprise Manager)等管理工具交互,...
### RAC关闭与启动详解 #### 一、RAC简介 在深入了解RAC(Real Application Clusters)的关闭与启动之前,我们先简要介绍一下RAC的基本概念。Oracle Real Application Clusters (RAC) 是Oracle数据库的一个核心...
SCN是一个不断递增的数字,确保了数据库能够准确地识别和处理事务中的数据修改,尤其是在故障恢复、Data Guard、Streams复制以及RAC集群节点间的同步等场景下。 在Oracle数据库的事务处理流程中,SCN起着至关重要的...
第15章 RAC稳定性与性能优化 15.1服务器硬件 15.1.1 Firmware固件升级 15.1.2硬件设备兼容性 15.1.3 FC HBA卡冗余 15.1.4 Infiniband技术 15.1.5 RAC硬件结构案例 15.2操作系统 15.2.1认证操作系统 15.2.2...
Oracle 10g RAC 启动与关闭 在 Oracle 10g RAC 环境中,启动和关闭 RAC 是一个复杂的过程,涉及到多个组件和进程。本文将详细介绍 RAC 的启动和关闭过程,并对相关的知识点进行解释。 一、共享设备的启动 在 RAC ...
RAC 故障分析与处理 RAC(Real Application Clusters)是 Oracle 公司开发的一种高可用性集群解决方案,旨在提供高性能、可扩展性和高可用性。RAC 故障分析与处理是指对 RAC 环境中出现的故障进行分析和处理,以...
RAC允许多个实例同时访问同一个数据库,而RACDG则提供了主库与备库之间的数据保护。 在开始配置前,必须确保所有节点的Oracle版本相同,因为不同版本的数据库可能不兼容,这可能导致在切换主备库或进行其他操作时...
Oracle 11GR2 RAC (Real Application Clusters) 和 RAC-DG (Data Guard) 环境的部署是一项复杂而关键的任务,涉及到多个层面的技术集成和配置。以下是根据提供的信息,对整个部署过程的详细说明: 1. **Oracle RAC ...
根据提供的文件内容,以下是对RAC环境中常用的命令及其所检查状态的详细解释: ### 1. 检查集群状态 #### 命令:`crsctl check cluster` 此命令用于检查整个集群的状态,包括集群同步服务(Cluster ...
总的来说,Oracle RAC与RMAN的结合提供了强大的数据库保护和恢复能力。理解并熟练掌握这两个工具的使用,对于保证企业级数据库的高可用性和业务连续性至关重要。通过深入学习和实践,IT管理员能够更好地应对各种故障...
### Oracle 11g RAC 卸载与清理详解 #### 概述 在某些情况下,可能需要彻底卸载和清理 Oracle RAC(Real Application Clusters)环境,尤其是在遇到安装失败或其他不可预料的问题时。本文将详细介绍如何进行“暴力...
11.2.0.3的rac one和11.2.0.1之前大不相同。以前要通过Patch 9004119来操作,还要Omotion等命令。11.2.0.3用srvctl relocate和convert完成切换和转换的任务。 撰文之前系统已经安装了rac one node, 附件的顺序是先...
### Oracle高可用DataGuard单机到RAC复制与几乎无停顿全数据迁移 #### 一、概述 本文档详细介绍了如何将一个Oracle单机环境通过DataGuard技术平滑地迁移到Oracle Real Application Clusters (RAC)环境中,并实现...
### Windows平台下的Oracle RAC配置与安装 #### 1. 概述 Oracle Real Application Clusters (Oracle RAC) 是一种高性能、高可用性的数据库解决方案,它可以实现在多个服务器(节点)之间共享一个数据库实例。在...
在使用Automatic Storage Management (ASM)时,这个参数与文件存放路径相关。ASM会根据diskgroup_name/database_unique_name/file_type等规则来组织文件,而database_unique_name不是db_name。如果db_unique_name被...
主要内容概要:提供了一份非常详细的Oracle 12.2 RAC系统升级到19C RAC的具体实施方案。文中详细阐述了准备工作如目录规划、软件备份、运行干运行为以及Grid软件和数据库的升级步骤等,有助于保障整个迁移项目的成功...
SCN与时间的转换涉及到SCN和实际时间戳的对应关系。在数据库中,通过某些系统表如SMON_SCN_TIME可以查询SCN对应的时间信息,这在分析数据库状态和历史事件时非常有用。 SMON_SCN_TIME系统表记录了SCN到时间戳的转换...
### Oracle 10G RAC 关闭与启动的深度解析 #### 一、理解 Oracle 10G RAC 的关闭流程 Oracle 10G RAC(Real Application Clusters)是一种高级集群技术,用于实现数据库的高可用性和性能。正确地关闭与启动 RAC ...
Oracle RAC 项目实施方案 Oracle RAC(Real Application Clusters)是 Oracle 公司的一种集群解决方案,旨在提供高可用性和高性能的数据库解决方案。在生产环境下实施 Oracle RAC 需要进行详细的规划和实施本文将...