`

RAC进程与SCN(原创)

 
阅读更多

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默认采用这种方式。

Commit广播(Broadcast)算法: 在每个Commit操作之后,节点要向其他节点广播SCN, 虽然这种方式会对系统造成一定的负载,但是确保每个节点在Commit之后都能立即查 看到SCN. Oracle10g r2 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

0
0
分享到:
评论

相关推荐

    Oracle 11gR2 RAC 进程说明

    1. **LMSn (Local Management Server)** - 这些进程负责管理本地节点上的资源,并与集群中的其他节点通信。 2. **LMDn (Local Management Daemon)** - 负责监控节点状态并执行资源启动和停止操作。 3. **CSSn ...

    Oracle Rac技术原理-RAC进程.docx

    GSD进程是Oracle RAC管理和控制的关键组件,它与DBCA(Database Configuration Assistant)、SRVCTL(Oracle Enterprise Manager Server Control Utility)以及OEM(Oracle Enterprise Manager)等管理工具交互,...

    RAC关闭与启动-轻松关闭与启动RAC

    ### RAC关闭与启动详解 #### 一、RAC简介 在深入了解RAC(Real Application Clusters)的关闭与启动之前,我们先简要介绍一下RAC的基本概念。Oracle Real Application Clusters (RAC) 是Oracle数据库的一个核心...

    Oracle SCN机制解析

    SCN是一个不断递增的数字,确保了数据库能够准确地识别和处理事务中的数据修改,尤其是在故障恢复、Data Guard、Streams复制以及RAC集群节点间的同步等场景下。 在Oracle数据库的事务处理流程中,SCN起着至关重要的...

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    第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 启动与关闭 在 Oracle 10g RAC 环境中,启动和关闭 RAC 是一个复杂的过程,涉及到多个组件和进程。本文将详细介绍 RAC 的启动和关闭过程,并对相关的知识点进行解释。 一、共享设备的启动 在 RAC ...

    RAC故障分析与处理

    RAC 故障分析与处理 RAC(Real Application Clusters)是 Oracle 公司开发的一种高可用性集群解决方案,旨在提供高性能、可扩展性和高可用性。RAC 故障分析与处理是指对 RAC 环境中出现的故障进行分析和处理,以...

    Oracle19c RAC+ RACDG配置详细部署文档

    RAC允许多个实例同时访问同一个数据库,而RACDG则提供了主库与备库之间的数据保护。 在开始配置前,必须确保所有节点的Oracle版本相同,因为不同版本的数据库可能不兼容,这可能导致在切换主备库或进行其他操作时...

    Oracle 11GR2 RAC-RAC DG 环境部署手册

    Oracle 11GR2 RAC (Real Application Clusters) 和 RAC-DG (Data Guard) 环境的部署是一项复杂而关键的任务,涉及到多个层面的技术集成和配置。以下是根据提供的信息,对整个部署过程的详细说明: 1. **Oracle RAC ...

    RAC常见命令检查状态

    根据提供的文件内容,以下是对RAC环境中常用的命令及其所检查状态的详细解释: ### 1. 检查集群状态 #### 命令:`crsctl check cluster` 此命令用于检查整个集群的状态,包括集群同步服务(Cluster ...

    原创实战Oracle RAC rman恢复

    总的来说,Oracle RAC与RMAN的结合提供了强大的数据库保护和恢复能力。理解并熟练掌握这两个工具的使用,对于保证企业级数据库的高可用性和业务连续性至关重要。通过深入学习和实践,IT管理员能够更好地应对各种故障...

    Oracle11G RAC 卸载

    ### Oracle 11g RAC 卸载与清理详解 #### 概述 在某些情况下,可能需要彻底卸载和清理 Oracle RAC(Real Application Clusters)环境,尤其是在遇到安装失败或其他不可预料的问题时。本文将详细介绍如何进行“暴力...

    oracle rac one node与rac之间切换操作

    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单机到RAC复制与几乎无停顿全数据迁移 #### 一、概述 本文档详细介绍了如何将一个Oracle单机环境通过DataGuard技术平滑地迁移到Oracle Real Application Clusters (RAC)环境中,并实现...

    Windows平台下的Oracle RAC配置与安装_penglan.pdf

    ### Windows平台下的Oracle RAC配置与安装 #### 1. 概述 Oracle Real Application Clusters (Oracle RAC) 是一种高性能、高可用性的数据库解决方案,它可以实现在多个服务器(节点)之间共享一个数据库实例。在...

    Oracle 11g RAC与RAC之间搭建Aative Dataguard案例.pdf

    在使用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 的全面升级指南

    主要内容概要:提供了一份非常详细的Oracle 12.2 RAC系统升级到19C RAC的具体实施方案。文中详细阐述了准备工作如目录规划、软件备份、运行干运行为以及Grid软件和数据库的升级步骤等,有助于保障整个迁移项目的成功...

    BLOG_Oracle_lhr_Oracle SCN的一点研究.pdf

    SCN与时间的转换涉及到SCN和实际时间戳的对应关系。在数据库中,通过某些系统表如SMON_SCN_TIME可以查询SCN对应的时间信息,这在分析数据库状态和历史事件时非常有用。 SMON_SCN_TIME系统表记录了SCN到时间戳的转换...

    oracle 10G RAC关闭与启动注意事项

    ### Oracle 10G RAC 关闭与启动的深度解析 #### 一、理解 Oracle 10G RAC 的关闭流程 Oracle 10G RAC(Real Application Clusters)是一种高级集群技术,用于实现数据库的高可用性和性能。正确地关闭与启动 RAC ...

    Oracle RAC 项目实施方案

    Oracle RAC 项目实施方案 Oracle RAC(Real Application Clusters)是 Oracle 公司的一种集群解决方案,旨在提供高可用性和高性能的数据库解决方案。在生产环境下实施 Oracle RAC 需要进行详细的规划和实施本文将...

Global site tag (gtag.js) - Google Analytics