oracle lmd0,Oracle RAC后台进程介绍

在Oracle RAC数据库上会比单实例数据库多一些进程,这些进程是RAC特有的,为了实现集群数据库功能而设置的。这篇文章会对RAC特有

在Oracle RAC数据库上会比单实例数据库多一些进程,这些进程是RAC特有的,为了实现集群数据库功能而设置的。这篇文章会对RAC特有的进程做一些介绍。

1、LMSn: Global Cache Service Process。

LMSn进程会维护在Global Resource Directory (GRD)中的数据文件以及每个cached block的状态。LMSn用于在RAC的实例间进行message以及数据块的传输,这个对应的服务也就是GCS(Global Cache Service),LMS是Cache Fusion的一个重要部分。LMS进程可以说是RAC上最活跃的后台进程,会消耗较多的CPU.一般每个实例会有多个LMS进程,每个Oracle版本的默认的LMS进程数目会有所不同,大部分版本的默认值是:MIN(CPU_COUNT/2, 2))

2、LMD: Global Enqueue Service Daemon。(对应的服务叫GES服务)

LMD 进程主要处理从远程节点发出的资源请求,,在多个实例之间协调对数据块的访问顺序,保证数据的一致性访问,大概过程如下:

+ 一个连接发出了global enqueue 请求

+ 这个请求会被发给本节点的LMD0进程

+ 这个前台进程会处于等待状态

+ LMD0会找到这个资源的master节点是谁

+ LMD0会把这个请求发送给master节点

+ 如果需要的话,master节点会增加一个新的master资源

+ 这时从master节点可以获知谁是owner, waiter

+ 当这个资源被grant给requestor后, master节点的LMD0进程会告知requestor节点的LMD0

+ 然后requestor节点的LMD0会通知申请资源的前台进程

GCS服务与GES服务还有GRD共同构成了RAC的Cache Fusion(缓存融合)

缓存融合是RAC内部最复杂的一部分,其中数据块是如何通过private network在实例之间传递,如何控制访问顺序,这些都很复杂,有兴趣的同学可以研究

如上总结LMD主要处理global enqueue 的请求, 而LCK0主要处理本实例的lock.

另外,RAC上的global deadlock 也是由LMD来发现的。

3、LCK0: Instance Enqueue Process。

LCK0进程主要处理非cache fustion的资源请求,比如library 和row cache 请求。

LCK0处理在实例一级的锁:

Row cache entries

Library cache entries

Result cache entries

这些实例级的锁的owner, waiter是LCK0进程。

只要这个实例的锁的owner是LCK0,那么这个实例的任何一个连接都可以使用这种cached的metedata.

如果本地的实例没有拥有这个lock,那么需要申请这个lock,前台进程会等待DFS Lock Handle。

另外,当shared pool出现压力需要释放一些内存来存放新的cursor时,LCK进程会将dictionary cache 的一些内存进行释放。

4、LMON: Global Enqueue Service Monitor。

LMON用于监控整个集群的global enqueues和resources, 而且会执行global enqueue recovery。实例异常终止后,会由LMON来进行GCS内存方面的处理。当一个实例加入或者离开集群后,LMON会对lock和resource进行reconfiguration.也就是说当某个节点出现故障时,LMON负责集群重构,GRD恢复等操作,另外LMON会在不同的实例间进行通讯检查,如果发现对方通讯超时,就会发出节点eviction,所以很多时候节点发生eviction后(ORA-481, ORA-29740等),我们需要查看LMON的trace来了解eviction的原因。

Oracle 11g 在RedHat Linux 5.8_x64平台的安装手册

Linux-6-64下安装Oracle 12C笔记

在CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2

更多详情见请继续阅读下一页的精彩内容:

logo.gif

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle RAC(Real Application Clusters)是一种集群数据库解决方案,它允许多个数据库实例在多台服务器上同时运行并共享存储。在使用Oracle RAC时,有时可能会遇到死锁(Deadlock)的情况,即两个或多个会话相互等待对方释放资源,导致数据库无法继续进行。 要解决Oracle RAC中的死锁问题,可以采取以下步骤: 1. 检查AWR报告:使用AWR(Automatic Workload Repository)报告可以了解是否存在死锁情况,并了解死锁的原因和影响范围。 2. 查看死锁链:通过查询V$LOCK和V$SESSION视图,可以获取死锁链的信息,包括死锁会话和死锁对象。 3. 确定死锁类型:了解死锁的类型可以帮助我们更好地解决问题。Oracle RAC中常见的死锁类型包括共享资源死锁(Shared Resource Deadlock)和LMD(Lock Manager Daemon)死锁。 4. 解除死锁:根据死锁类型和具体情况,可以采取不同的方法解除死锁。常见的方法包括重启数据库实例、杀死造成死锁的会话、手动调整资源争用等。 5. 优化应用程序:死锁问题可能由应用程序设计或数据库配置等因素引起。通过优化应用程序的设计和调整数据库的配置,可以减少死锁的发生。 6. 监控和预防:使用监控工具和警报系统,可以实时监控数据库的性能和死锁情况,并及时采取预防措施,如增加资源、优化SQL查询等。 总之,解决Oracle RAC中的死锁问题需要全面的分析和调整,涉及多个方面的知识和技术。及时响应和适当的优化措施可以帮助我们降低死锁的发生频率,并提高数据库的性能和可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值