2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 解决oracle分布式锁 oracle DLM分布式锁技术

解决oracle分布式锁 oracle DLM分布式锁技术

时间:2022-09-12 11:56:56

相关推荐

解决oracle分布式锁 oracle DLM分布式锁技术

oracle DLM分布式锁技术

RAC本质还是一个数据库,采用了分布式锁管理器。DLM作用是协调实例间对资源的竞争访问,而实例内部的竞争和单实例一样。在RAC数据库中一个节点想要修改数据,都需要想DLM发送请求,通过DLM控制授权节点实例间的数据访问,RAC间实例访问粒度是数据块。DLM协调资源使用的功能叫做同步,所有的资源访问都是需要同步。RAC 将锁分为本地锁和全局锁,本地锁用于本地进程间的并发控制,也就是单实例中的锁机制。全局锁用于集群间的并发控制。

全局锁分为cache fusion和non-cache fusion

non-cache susion资源有限主要是row cache存放对象定义,library cache存放SQL代码,执行计划等,这些都是有限的,同时这些资源修改的频率也很小,所以oracle采用了类似广播的机制,每个节点的变化都要通告给其他节点,任何节点对对象的修改,所有其他节点上的对象都会失效。每个引用对象都会被LCK0进程多加上一个shared-mode的IV instance lock,由LMD进程负责LCK之间的广播通信。

cache fusions:主要是buufer cache数据块多,修改密集,不太适合每个修改都需要节点实例间广播,其首要解决的问题就是数据拷贝在集群间的 状态分布图。

在RAC中GRD(Global Resource Directory)是一个位于SGA中,记录每个数据块在集群间的分布图的内部数据块,每个实例都是部分GRD,所有实例的GRD汇总在一起才是一个完整的GRD。RAC根据资源名称在集群中选择一个节点为master node,其GRD中记录该资源在所有的节点使用信息;而其他节点作为shadow node的GRD只是记录资源在该节点的使用信息。

RAC的后台进程:

LMSn:cache fusion主要进程,负责数据块在实例间传递,对应的服务叫GCS,来源于Lock Manager Server,数量是通过GCS_SERVER_PROCESS来控制,范围为0-9

LMD:提供Global Enqeue Service(GES).负责进程在多个实例间协调对数据块的访问顺序,保证数据访问的一致性。

LCK:负责non-cache fusion资源的同步访问,每个实例一个。

LMON:各个实例间进行定期通信,以坚持各节点的健康状况,当某个节点出现故障时,负责重构集群、GRD恢复等操作,它提供了Cluster Group Services(CGS).其服务有以下要点:

DIAG:监控进程实例的状态,并在实例出现运行错误时收集诊断数据记录到alert.log日志中。

GSD:负责客户端工具如srvctl用户命令管理接口

文件布局特点:

spfile,放在共享存储

redo thread ,每个实例有一套自己的redo log文件记录日志

archive log,每个实例都有自己的归档日志,做media recovery时才会用到全部归档,也就才需要共享存储,采用nfs,CIA或者ASM就可以

Undo tablespace,每个实例都要有自己的单独回滚表空间。

SCN:由GCS维护,所有实例节点都带有SCN,每个节点将收到的SCN与本机的SCN对比,如果本机的SCN小,则调整本机的SCN和接收到的一致,节点间定期通报,每个commit操作后需要向其他节点通报SCN。

cache fusion通过高速的private interconnect在实例间进行数据块传递,这个是RAC的核心工作机制,整个cache funsion有两个服务:GCS和GES,GCS负责数据块在实例间的传递,而后者负责锁管理。

©著作权归作者所有:来自51CTO博客作者marvelyu的原创作品,如需转载,请注明出处,否则将追究法律责任

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。