`
liwenshui322
  • 浏览: 520867 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ORACLE DDL锁介绍

阅读更多

      在DDL操作中会自动为对象加DDL锁(DDL Lock),从而保护这些对象不会被其他会话所修改。例如,如果我执行一个DDL操作ALTERTABLE T,表T上就会加一个排他DDL锁,以防止其他会话得到这个表的DDL锁和TM锁。在DDL语句执行期间会一直持有DDL锁,一旦操作执行就立即释放DDL锁。实际上,通常会把DDL语句包装在隐式提交(或提交/回滚对)中来执行这些工作。由于这个原因,在Oracle中DDL一定会提交。

      因此,DDL总会提交(即使提交不成功也会如此)。DDL一开始就提交,一定要知道这一点。它首先提交,因此如果必须回滚,它不会回滚你的事务。如果你执行了DDL,它会使你所执行的所有未执行的工作成为永久性的,即使DDL不成功也会如此。如果你需要执行DDL,但是不想让它提交你现有的事务,就可以使用一个自治事务换言之,在执行DDL语句之后,会立即提交事务。这样的话,在执行DDL语句之前,如果执行了DML语句,也会被一并提交,并且不可回滚。

     有3种类型的DDL锁:

     1.排他DDL锁(Exclusive DDL lock):这会防止其他会话得到它们自己的DDL锁或TM(DML)锁。这说明,在DDL操作期间你可以查询一个表,但是无法以任何方式修改这个表。

     2.共享DDL锁(Share DDL lock):这些锁会保护所引用对象的结构,使之不会被其他会话修改,但是允许修改数据。

     3.可中断解析锁(Breakable parse locks):这些锁允许一个对象(如共享池中缓存的一个查询计划)向另外某个对象注册其依赖性。如果在被依赖的对象上执行DDL,Oracle会查看已经对该对象注册了依赖性的对象列表,并使这些对象无效。因此,这些锁是“可中断的”,它们不能防止DDL出现。

 

     大多数DDL都带有一个排他DDL锁。比如发出如下一条语句:Alter table t add new_column date。

      但是,现在有些DDL操作没有DDL锁也可以发生。例如,可以发出以下语句:create index t_idx on t(x) ONLINE;

      ONLINE关键字会改变具体建立索引的方法。Oracle并不是加一个排他DDL锁来防止数据修改,而只会试图得到表上的一个低级(mode 2)TM锁。这会有效地防止其他DDL发生,同时还允许DML正常进行。Oracle执行这一“壮举”的做法是,为DDL语句执行期间对表所做的修改维护一个记录,执行CREATE时再把这些修改应用至新的索引。这样能大大增加数据的可用性。

      另外一类DDL会获得共享DDL锁。在创建存储的编译对象(如过程和视图)时,会对依赖的对象加这种共享DDL锁。例如,如果执行以下语句:

      Create view MyView
      as
      select *
      from emp, dept
      where emp.deptno = dept.deptno;

      表EMP和DEPT上都会加共享DDL锁,而CREATE VIEW命令仍在处理。可以修改这些表的内容,但是不能修改它们的结构。

      最后一类DDL锁是可中断解析锁。你的会话解析一条语句时,对于该语句引用的每一个对象都会加一个解析锁。加这些锁的目的是:如果以某种方式删除或修改了一个被引用的对象,可以将共享池中已解析的缓存语句置为无效(刷新输出)。

      有一个意义非凡的视图可用于查看这个信息,即DBA_DDL_LOCKS视图。对此没有相应的V$视图。DBA_DDL_LOCKS视图建立在更神秘的X$表基础上,而且默认情况下,你的数据库上不会安装这个视图。可以运行[ORACLE_HOME]/rdbms/admin目录下的catblock.sql脚本来安装这个视图以及其他锁视图。必须作为用户SYS来执行这个脚本才能成功。一旦执行了这个脚本,可以对视图运行一个查询。查询语句如下:

    select session_id sid, owner, name, type,mode_held held, mode_requested request from dba_ddl_locks



 

 

     这个视图对开发人员很有用,发现测试或开发系统中某段代码无法编译时,将会挂起并最终超时。这说明,有人正在使用这段代码(实际上在运行这段代码),你可以使用这个视图来查看这个人是谁。对于GRANTS和对象的其他类型的DDL也是一样。例如,无法对正在运行的过程授予EXECUTE权限。可以使用同样的方法来发现潜在的阻塞者和等待者。

 

 

分享到:
评论

相关推荐

    【PHP】基于ThinkPHP 5.0的考试系统tp5.zip

    【PHP】基于ThinkPHP 5.0的考试系统tp5

    ssm-vue-新能源汽车在线租赁管理系统-源码工程-32页从零开始全套图文详解-34页参考论文-27页参考答辩-全套开发环境工具、文档模板、电子教程、视频教学资源.zip

    资源说明: 1:csdn平台资源详情页的文档预览若发现'异常',属平台多文档混合解析和叠加展示风格,请放心使用。 2:32页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解)。 3:34页范例参考毕业论文,万字长文,word文档,支持二次编辑。 4:27页范例参考答辩ppt,pptx格式,支持二次编辑。 5:工具环境、ppt参考模板、相关教程资源分享。 6:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 7:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于 B/S 网络结构,在IDEA中开发。服务端用 Java 并借 ssm 框架(Spring+SpringMVC+MyBatis)搭建后台。前台采用支持 HTML5 的 VUE 框架。用 MySQL 存储数据,可靠性强。 能学到什么: 学会用ssm搭建后台,提升效率、专注业务。学习 VUE 框架构建交互界面、前后端数据交互、MySQL管理数据、从零开始环境搭建、调试、运行、打包、部署流程。

    三台松下的PLC一起通信控制16轴的程序,表格定位,用于固态硬盘的组装,精密度要求高,手动,自动、报景、空机运行等,程序写法新颖,清晰明了,注释清晰易懂,是学习多台PLC并联和定位控制非常好的栗子

    三台松下的PLC一起通信控制16轴的程序,表格定位,用于固态硬盘的组装,精密度要求高,手动,自动、报景、空机运行等,程序写法新颖,清晰明了,注释清晰易懂,是学习多台PLC并联和定位控制非常好的栗子

    ssm-jsp-多角色学生管理系统-源码工程-32页从零开始全套图文详解-34页参考论文-27页参考答辩-全套开发环境工具、文档模板、电子教程、视频教学资源.zip

    资源说明: 1:csdn平台资源详情页的文档预览若发现'异常',属平台多文档混合解析和叠加展示风格,请放心使用。 2:32页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解)。 3:34页范例参考毕业论文,万字长文,word文档,支持二次编辑。 4:27页范例参考答辩ppt,pptx格式,支持二次编辑。 5:工具环境、ppt参考模板、相关教程资源分享。 6:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 7:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于 B/S 网络结构,在 IDEA 中开发。服务端用 Java 并借 ssm 框架(Spring+SpringMVC+MyBatis)搭建后台。用 MySQL 存储数据,可靠性强。 能学到什么: 学会用ssm搭建后台,提升效率、专注业务。学习使用jsp、html构建交互界面、前后端数据交互、MySQL管理数据、从零开始环境搭建、调试、运行、打包、部署流程。

    【课程设计】基于pytorch实现Transformer模型的最简洁方式源码+模型+详细注释+运行说明.zip

    【课程设计】基于pytorch实现Transformer模型的最简洁方式源码+模型+详细注释+运行说明.zip

    ssm-jsp-车库智能管理平台-源码工程-32页从零开始全套图文详解-34页参考论文-27页参考答辩-全套开发环境工具、文档模板、电子教程、视频教学资源.zip

    资源说明: 1:csdn平台资源详情页的文档预览若发现'异常',属平台多文档混合解析和叠加展示风格,请放心使用。 2:32页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解)。 3:34页范例参考毕业论文,万字长文,word文档,支持二次编辑。 4:27页范例参考答辩ppt,pptx格式,支持二次编辑。 5:工具环境、ppt参考模板、相关教程资源分享。 6:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 7:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于 B/S 网络结构,在 IDEA 中开发。服务端用 Java 并借 ssm 框架(Spring+SpringMVC+MyBatis)搭建后台。用 MySQL 存储数据,可靠性强。 能学到什么: 学会用ssm搭建后台,提升效率、专注业务。学习使用jsp、html构建交互界面、前后端数据交互、MySQL管理数据、从零开始环境搭建、调试、运行、打包、部署流程。

    【课程设计】基于keil手机菜单系统仿真程序源码.zip

    【课程设计】基于keil手机菜单系统仿真程序源码.zip

    大数据存储HBase与Cassandra部署与应用实例-图书管理系统的构建

    内容概要:本文介绍了HBase与Cassandra这两种大数据存储技术的实际应用场景,主要侧重于Cassandra的具体实施细节。首先详细展示了Cassandra在单个节点上的部署与配置步骤,如下载软件包、解压、启动与连接等基本操作。其次深入讲解了多节点环境下Cassandra的分布式部署,涵盖环境准备(包括关闭防火墙、设置无密码登陆)、文件上传与配置编辑直至最后的启动检查。进一步,文章通过建立图书管理系统来演示如何利用CQL进行数据库的基本操作(CRUD),从定义库结构(如创建Keyspaces和表格)、键值设置再到数据的增、删、改、查操作流程都有涉及。此外,提供了具体的Python代码示例指导用户完成基于Cassandra的图书管理系统编程实战部分,从而巩固对于所讲概念和技术点的理解。 使用场景及目标:旨在让读者熟悉NoSQL数据库特性,尤其是面向非结构化数据处理时的优势;掌握Cassandra这种分布式的NoSQL数据库系统的架构设计与运维方法;最终能够在实际项目中独立运用Cassandra搭建高效能的应用程序,像文中提到的图书管理系统。

    PDD盈利增长特训营教程

    PDD盈利增长特训营教程

    基于配电网有功电压控制的多智能体强化学习,python代码,可以发中文核心或者中文ei,非常好的代码

    基于配电网有功电压控制的多智能体强化学习,python代码,可以发中文核心或者中文ei,非常好的代码

    塑料链板输送机sw16可编辑全套技术资料100%好用.zip

    塑料链板输送机sw16可编辑全套技术资料100%好用.zip

    毕业设计基于python+pyqt5+sqlite3的学生通讯录管理系统源码

    毕业设计基于python+pyqt5+sqlite3的学生通讯录管理系统源码,个人大四的毕业设计、经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 毕业设计基于python+pyqt5+sqlite3的学生通讯录管理系统源码毕业设计基于python+pyqt5+sqlite3的学生通讯录管理系统源码毕业设计基于python+pyqt5+sqlite3的学生通讯录管理系统源码毕业设计基于python+pyqt5+sqlite3的学生通讯录管理系统源码毕业设计基于python+pyqt5+sqlite3的学生通讯录管理系统源码毕业设计基于python+pyqt5+sqlite3的学生通讯录管理系统源码毕业设计基于python+pyqt5+sqlite3的学生通讯录管理系统源码毕业设计基于python+pyqt5+sqlite3的学生通讯录管理系统源码毕业设计基于python+pyqt5+sqlite3的学生通讯录管理系统源码毕业设计基于python

    电力电子技术:简易手机充电器的AC/DC变换电路设计与MATLAB/Simulink仿真

    内容概要:这篇结题报告详细介绍了从220V交流电到5V直流电的小功率手机充电器设计方案。整个充电器设计由四大部分组成:变压器降压,桥式整流电路,LC低通滤波及基于Buck电路的降压斩波电路。其中Buck电路是重点讨论的内容之一,它不仅起到了重要的电压调整角色并且在PWM调制方式下可以实现对电压精确的控制。文中通过理论推导以及数学公式,阐述了不同组件的选择理由及依据,并结合具体实例给出了关键元件的选型计算。为了进一步验证此设计的效果,还建立了完整的充电器Simulink仿真环境,分别针对两种典型负载情况(轻载及突加双倍负载)、短路保护三种工况进行了多次实验测试,并最终得出所提出设计方案可以在较大幅范围内保证5V输出电压稳定性。 适用人群:本文适用于电力电子技术领域的科研人员和技术爱好者,特别是那些专注于小功率电源设计的研究群体。 使用场景及目标:本项目的实施旨在帮助理解现代手机充电器的基本工作原理及其各组件的具体运作机制;通过对Buck电路和PWM调制的理解和掌握解决实际工程中遇到的问题。 其他说明:报告引用了一些相关文献,提供了深入探讨某些细节的基础资料。此外,所有设计都基于MATLAB/Simulink仿真工具完成,为后续可能的实物制造提供了有力支持。这表明了MATLAB/Simulink在现代电子设计流程里的重要地位。

    基于绿证-阶梯式碳交易交互的源荷互补调度优化 23年新鲜代码,基本完成四个场景的复现 程序注释齐全 针对多能精合的区域综合能源系统的低经济运行问题,提出基于绿证-阶梯式碳交易交与的源荷互补优化调度模

    基于绿证-阶梯式碳交易交互的源荷互补调度优化 23年新鲜代码,基本完成四个场景的复现。 程序注释齐全 针对多能精合的区域综合能源系统的低经济运行问题,提出基于绿证-阶梯式碳交易交与的源荷互补优化调度模型。 首先,通过引入绿证-阶梯式碳交易交互机制来提高源侧可再生能源的消纳水平和降低系统碳排放量,其次,在负荷侧引入考用户满意度的激励型需求响应和调峰收益来实现热电负荷的\\\"峰填公”。 最后以日运行成本最小化为标。

    Carsim与matlab simulink联合仿真,线控转向,四轮电动汽车转向失效容错控制模型,提供参考文献

    Carsim与matlab simulink联合仿真,线控转向,四轮电动汽车转向失效容错控制模型,提供参考文献

    基于Python+flask的豆瓣音乐数据聚类分析可视化

    该项目基于 Flask 框架开发,用于提供音乐数据分析与可视化功能,涉及用户管理、音乐数据爬取、聚类分析及其可视化展示。系统包含用户和管理员角色,提供丰富的页面功能。 主要功能: 用户登录与注册 音乐数据展示与搜索 管理员管理用户与音乐数据 K-Means 聚类分析及其可视化 数据爬取与存储 运行环境: 语言: Python 3.x 依赖库: Flask (Web 框架) pymysql (数据库操作) sklearn (聚类算法) matplotlib (可视化) WordCloud (词云生成) 数据库: MySQL

    【java】基于jsp+servlet+mysql+tomcat的在线考试系统_pgj.zip

    【java】基于jsp+servlet+mysql+tomcat的在线考试系统_pgj

    低秩矩阵分解代码 用于图像、信号等杂波去除 Matlab实现 算法较新,实现效果好

    低秩矩阵分解代码 用于图像、信号等杂波去除 Matlab实现 算法较新,实现效果好。

    锂离子电池恒流恒压充电Simulink仿真模型(CC-CV) 电路结构包括:直流电压源、DC DC变器、锂离子电池、CCCV控制系统 赠送2000多字的说明文档和参考文献,帮助您更快理解 恒流恒压充电

    锂离子电池恒流恒压充电Simulink仿真模型(CC-CV) 电路结构包括:直流电压源、DC DC变器、锂离子电池、CCCV控制系统 赠送2000多字的说明文档和参考文献,帮助您更快理解 恒流恒压充电过程: [1]在CC阶段对电池施加恒定电流,以获得更快的充电速度,此时电池电压持续升高,经过一段时间后达到预设的最大电压,但是由于极化的存在,充电过程中测量的电池电压要大于实际的电池电压;所以还需要进入CV阶段继续充电 [2]在CV阶段电压保持恒定,电流呈指数级下降,极化电压逐渐降低,测量的电池电压更加接近于电池真实电压,当充电电流减小到一定值或SOC升高到一定值时,可以认为电池已经完全充电。

    ssm-vue-在线购物系统-源码工程-32页从零开始全套图文详解-34页参考论文-27页参考答辩-全套开发环境工具、文档模板、电子教程、视频教学资源.zip

    资源说明: 1:csdn平台资源详情页的文档预览若发现'异常',属平台多文档混合解析和叠加展示风格,请放心使用。 2:32页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解)。 3:34页范例参考毕业论文,万字长文,word文档,支持二次编辑。 4:27页范例参考答辩ppt,pptx格式,支持二次编辑。 5:工具环境、ppt参考模板、相关教程资源分享。 6:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 7:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于 B/S 网络结构,在IDEA中开发。服务端用 Java 并借 ssm 框架(Spring+SpringMVC+MyBatis)搭建后台。前台采用支持 HTML5 的 VUE 框架。用 MySQL 存储数据,可靠性强。 能学到什么: 学会用ssm搭建后台,提升效率、专注业务。学习 VUE 框架构建交互界面、前后端数据交互、MySQL管理数据、从零开始环境搭建、调试、运行、打包、部署流程。

Global site tag (gtag.js) - Google Analytics