查询01_DML锁和DDL锁的处理

简介: 一、摘要Oracle的手册上关于锁的分类说明如下: 1. DML锁:Date lock。执行DML时保护数据的锁。Row Lock(TX)保护特定行,Table Lock(TM)保护整个表,可以通过dba_kml_locks观察。

一、摘要


Oracle的手册上关于锁的分类说明如下:

 

1. DML锁:Date lock。执行DML时保护数据的锁。Row LockTX)保护特定行,Table LockTM)保护整个表,可以通过dba_kml_locks观察。

2. DDL锁:Data dictionary lock。保护User/Table/View/Procedure等定义,可以通过dba_ddl_locks观察。

 

实际上,DML锁和DDL锁只是为了合理分配锁而赋予的名称,请注意这点。

 

DML锁实际上与TM锁一致,DML锁可以通过dba_dml_locks视图观察,这个视图的作用是从V$lock视图上筛选出锁类型为TM的。

数据库上允许的TM锁数量,可以利用DML_LOCKS参数指定。若将DML_LOCKS参数设置为0,则对表无法获得TM锁。

这时,oracle为了保障表定义被保护,对于表根本上不允许DDL操作。

此,即便不获得TM锁,也允许修改该表的特定行。

OPS环境下,为了减少在全局范围内获得TM锁过程中发生的附加资源消耗,有时也将DML_LOCKS值修改为0

 

DDL锁实际上与library cache lock 一致。

DDL锁可以通过DBA_DDL_LOCKS视图观察,这个视图世界上起到加工X$KGLLK视图后显示的作用。

DDL锁除了DBA_DDL_LOCKS视图之外,还可以通过X$KGLLKDBA_KGLLOCK等视图观察。


对于表,普通DML语句以Sub-ExclusiveSX)模式获得TM锁。Sub-exclusive模式之间存在共享性,所以多个会话可以对形同的表执行DML

已执行DML的会话对于表,以Sub-Exclusive莫侯斯获得TM锁,对于已修改的数据Exclusive模式获得TX锁。

 

二、监控DDL和DML锁


1. DBA_DML_LOCKS视图在v$locks视图上只选出TM锁并加工得到的;


2. DBA_DDL_LOCKS视图是加工X$KGLLK视图得到的;


Thanks and Regards

2016-03-25 Created By BaoXinjian




 


 


 









ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
数据采集 存储 分布式计算
如何在Python中处理大规模数据集,以避免内存溢出?
如何在Python中处理大规模数据集,以避免内存溢出?
646 1
|
11月前
|
编解码 小程序 iOS开发
在无影上畅玩《黑神话:悟空》,这十件事你需要知道!
在无影上畅玩《黑神话:悟空》,这十件事你需要知道!
|
数据可视化 项目管理
个人和团队都好用的年度复盘工具:看板与KPT方法解析
本文带你了解高效方法KPT复盘法(Keep、Problem、Try),结合看板工具,帮助你理清头绪,快速完成年度复盘。
1181 7
个人和团队都好用的年度复盘工具:看板与KPT方法解析
|
8月前
|
数据采集 Web App开发 JavaScript
Python爬虫解析动态网页:从渲染到数据提取
Python爬虫解析动态网页:从渲染到数据提取
|
11月前
|
XML 人工智能 Java
如何与AI结对编程:我与AI的8000行代码实践
作者分享了跟 AI 协作的一些经验,使用中如何对 AI 输入和反馈,经过磨合后,工作效率会大大提升。
如何与AI结对编程:我与AI的8000行代码实践
|
NoSQL 数据挖掘 数据处理
深入浅出:MongoDB聚合管道的技术详解
深入浅出:MongoDB聚合管道的技术详解
|
JSON 监控 API
2024年7月免费天气API接口推荐
天气API对于开发人员来说是构建响应更快、安全性更高的应用程序的有力工具。使用天气API可以帮助开发者提供出色的用户体验,实现高效的数据管理。
1415 0
|
JSON Shell 数据格式
在Docker中,docker run cmd entrypoint 有什么区别?
在Docker中,docker run cmd entrypoint 有什么区别?
|
前端开发 JavaScript API
React将组件作为属性传递的最佳实践
本文探讨了在React中将组件作为属性传递的三种常见方式:作为元素传递、作为组件传递、作为函数传递。通过构建带图标的按钮组件,对比分析了每种方式的优缺点,最终推荐将组件作为函数传递,因为它提供了更好的可控性、灵活性和可扩展性。
228 0
|
前端开发
单步调试报错 Thread 1: EXC_BAD_ACCESS (code=1, address=0x6565656565)
单步调试报错 Thread 1: EXC_BAD_ACCESS (code=1, address=0x6565656565)
505 0