解决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的原创作品,如需转载,请注明出处,否则将追究法律责任
解决oracle分布式锁,oracle DLM分布式锁技术相关推荐
- DLM分布式锁的实现机制
1.AST简介 DLM进程(LMON.LMD)之间的跨实例通信是使用高速互联上的IPC层实现的.为了传递锁资源的状态,DLM使用了异步陷阱(AST),它在操作系统处理程序例程中实现为中断.纯粹主义者可 ...
- java的“看门狗”锁续期可以用php redis这样实现【php锁续期、分布式锁、无锁请求队列超卖】解决【商家超卖(商品库存控制)、用户超买(秒杀订单控制)】问题。非demo 线上一直在用
要求与痛点描述 1.不允许使用库存创建队列 因为库存如果是10w难道要创建一个10w长度的队列吗 2.不允许对整个业务过程加锁 可能业务执行时间很长 导致锁粒度太大 影响并发量 3.如果业务时间大于锁 ...
- 【转】错误: ORA-01591: 锁被未决分布式事务处理 7.2.428982 持有--解决方案
SQL 错误: ORA-01591: 锁被未决分布式事务处理 7.2.428982 持有 01591. 00000 - "lock held by in-doubt distributed ...
- oracle 分析锁,ORACLE锁机制分析
Oracle 多粒度锁机制介绍 根据保护对象的不同,Oracle数据库锁可以分为以下几大类: (1) DML lock(data locks,数据锁):用于保护数据的完整性: (2) DDL lock ...
- 【高并发】高并发分布式锁架构解密,不是所有的锁都是分布式锁!!
来自:冰河技术 写在前面 最近,很多小伙伴留言说,在学习高并发编程时,不太明白分布式锁是用来解决什么问题的,还有不少小伙伴甚至连分布式锁是什么都不太明白.明明在生产环境上使用了自己开发的分布式锁,为什 ...
- Oracle锁表 行级锁 表级锁 行级锁
2019独角兽企业重金招聘Python工程师标准>>> Oracle锁表 行级锁 表级锁 ---- 行被排他锁定 ----在某行的锁被释放之前,其他用户不能修改此行 ...
- Oracle 共享锁和排它锁、 DML和DDL锁、 for update 锁表的问题
共享锁和排它锁 oracle有两种模式的锁:排他锁(exclusive lock,即X锁)和共享锁(share lock,即S锁). 共享锁:如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享 ...
- 分布式锁在存储系统中的技术实践
简介: 阿里云存储提供了完整的分布式锁解决方案,经过了阿里云众多云产品宝贵的业务场景中长期锤炼,稳定高可靠,且提供了多种语言的SDK选择,甚至是RESTful集成方案. 1 背景 针对共享资源的互斥访 ...
- 面试只要问到分布式,必问分布式锁
摘要:分布式知识是考验一个程序员知识面广度和深度很好的度量标准,而分布式锁又是其中非常重要的一个知识点. 本文分享自华为云社区<分布式锁实现--超级详细.高级程序员必知必会>,作者: 李子 ...
最新文章
- 保定有国家承认的计算机学校吗,河北省122所大学名单,不在名单内的都是国家不承认的野鸡学校...
- 10-Linux与windows文件互传-pscp坑---- 'pscp' 不是内部或外部命令,也不是可运行的程序或批处理文件...
- zibll子比主题v5.4免授权修复版
- 嵌入式开发有年龄限制吗_报名深圳成考有年龄限制吗?
- presto .vs impala .vs HAWQ query engine
- vue项目中使用lib-flexible解决移动端适配
- 我中的第一标:4000人中脱颖而出的威客
- python编辑快速上手_Python编程如何快速上手,答案在这里
- matlab截取图像像素,图像中获取图像的像素值
- 计算机管理中优盘显示无媒体,无法识别、无媒体、无容量等的U盘,是怎么造成的?(故障篇)...
- Android基于opencv4.6.0实现人脸识别功能
- 解决onenote同步慢的问题
- 内容分发网络(CDN)
- 深度半监督学习方法总结
- ARM+DSP双核处理器应用程序攻略
- 在java中如何对数组实现添加、删除和插入操作呢?
- python杨辉三角函数_python杨辉三角输出指定行_使用python打印十行杨辉三角过程详解...
- 【MongoDB 快速上手】别找了,主流开源分布式系统存储系统三剑客:FastDFS、Minio、MongoDB零基础入门实战教程!
- 交换机下配置banner login是做什么的
- 基于cocos2d-x简易泡泡龙游戏二