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的原创作品,如需转载,请注明出处,否则将追究法律责任

解决oracle分布式锁,oracle DLM分布式锁技术相关推荐

  1. DLM分布式锁的实现机制

    1.AST简介 DLM进程(LMON.LMD)之间的跨实例通信是使用高速互联上的IPC层实现的.为了传递锁资源的状态,DLM使用了异步陷阱(AST),它在操作系统处理程序例程中实现为中断.纯粹主义者可 ...

  2. java的“看门狗”锁续期可以用php redis这样实现【php锁续期、分布式锁、无锁请求队列超卖】解决【商家超卖(商品库存控制)、用户超买(秒杀订单控制)】问题。非demo 线上一直在用

    要求与痛点描述 1.不允许使用库存创建队列 因为库存如果是10w难道要创建一个10w长度的队列吗 2.不允许对整个业务过程加锁 可能业务执行时间很长 导致锁粒度太大 影响并发量 3.如果业务时间大于锁 ...

  3. 【转】错误: ORA-01591: 锁被未决分布式事务处理 7.2.428982 持有--解决方案

    SQL 错误: ORA-01591: 锁被未决分布式事务处理 7.2.428982 持有 01591. 00000 -  "lock held by in-doubt distributed ...

  4. oracle 分析锁,ORACLE锁机制分析

    Oracle 多粒度锁机制介绍 根据保护对象的不同,Oracle数据库锁可以分为以下几大类: (1) DML lock(data locks,数据锁):用于保护数据的完整性: (2) DDL lock ...

  5. 【高并发】高并发分布式锁架构解密,不是所有的锁都是分布式锁!!

    来自:冰河技术 写在前面 最近,很多小伙伴留言说,在学习高并发编程时,不太明白分布式锁是用来解决什么问题的,还有不少小伙伴甚至连分布式锁是什么都不太明白.明明在生产环境上使用了自己开发的分布式锁,为什 ...

  6. Oracle锁表 行级锁 表级锁 行级锁

    2019独角兽企业重金招聘Python工程师标准>>> Oracle锁表  行级锁  表级锁 ---- 行被排他锁定 ----在某行的锁被释放之前,其他用户不能修改此行       ...

  7. Oracle 共享锁和排它锁、 DML和DDL锁、 for update 锁表的问题

    共享锁和排它锁 oracle有两种模式的锁:排他锁(exclusive lock,即X锁)和共享锁(share lock,即S锁). 共享锁:如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享 ...

  8. 分布式锁在存储系统中的技术实践

    简介: 阿里云存储提供了完整的分布式锁解决方案,经过了阿里云众多云产品宝贵的业务场景中长期锤炼,稳定高可靠,且提供了多种语言的SDK选择,甚至是RESTful集成方案. 1 背景 针对共享资源的互斥访 ...

  9. 面试只要问到分布式,必问分布式锁

    摘要:分布式知识是考验一个程序员知识面广度和深度很好的度量标准,而分布式锁又是其中非常重要的一个知识点. 本文分享自华为云社区<分布式锁实现--超级详细.高级程序员必知必会>,作者: 李子 ...

最新文章

  1. 保定有国家承认的计算机学校吗,河北省122所大学名单,不在名单内的都是国家不承认的野鸡学校...
  2. 10-Linux与windows文件互传-pscp坑---- 'pscp' 不是内部或外部命令,也不是可运行的程序或批处理文件...
  3. zibll子比主题v5.4免授权修复版
  4. 嵌入式开发有年龄限制吗_报名深圳成考有年龄限制吗?
  5. presto .vs impala .vs HAWQ query engine
  6. vue项目中使用lib-flexible解决移动端适配
  7. 我中的第一标:4000人中脱颖而出的威客
  8. python编辑快速上手_Python编程如何快速上手,答案在这里
  9. matlab截取图像像素,图像中获取图像的像素值
  10. 计算机管理中优盘显示无媒体,无法识别、无媒体、无容量等的U盘,是怎么造成的?(故障篇)...
  11. Android基于opencv4.6.0实现人脸识别功能
  12. 解决onenote同步慢的问题
  13. 内容分发网络(CDN)
  14. 深度半监督学习方法总结
  15. ARM+DSP双核处理器应用程序攻略
  16. 在java中如何对数组实现添加、删除和插入操作呢?
  17. python杨辉三角函数_python杨辉三角输出指定行_使用python打印十行杨辉三角过程详解...
  18. 【MongoDB 快速上手】别找了,主流开源分布式系统存储系统三剑客:FastDFS、Minio、MongoDB零基础入门实战教程!
  19. 交换机下配置banner login是做什么的
  20. 基于cocos2d-x简易泡泡龙游戏二

热门文章

  1. js中new操作符具体做了什么
  2. unity游戏开发毕设_《毕业设计(论文)-基于Unity游戏引擎的游戏设计》.doc
  3. 《2022-移动端游戏版号申请详解》
  4. 【转载】手机快充的核心模块:ChargePump
  5. 国庆节期间创作博文,获得国庆专属勋章。国庆节快乐!!!
  6. 优化代码中的“坏味道”
  7. JS中的运算符号(加号)
  8. win10下,扩展屏不清晰模糊。
  9. Xshell 6 免费版下载及设置教程
  10. 10个实用技巧让你的 Vue 代码更优雅