DDL锁分为三种

1.排他DDL锁

2.共享DDL锁

3.可中断解析锁

大部分DDL都带有排他DDL锁,如一个表被修改中,可以使用select查询数据,但是大多数操作都是不允许执行的,包括所有其他DDL语句。

但是在oracle中,有一些DDL操作没有DDL锁也发生。比如online创建索引

在线创建索引,会带有DL,OD,低级TM锁,但是没有排他DDL锁

DL 直接加载锁,对表进行直接加载路径与创建索引不能同时进行。

OD锁 online DDL支持真正的联机。

低级TM锁 防止其他DDL发生,同时还允许DML正常进行

另一类是共享DDL锁

创建过程或视图时,会对其中涉及到的表添加共享DDL锁,这样可以修改表的内容但是不能修改表的结构。

可中断解析锁

会话解析一条语句时,对于该语句引用的每一个对象都会施加解析锁,这个目的是如果以某种方式删除或修改了引用对象,可以将共享池中已经解析的缓存语句无效刷出。

查询指定表的锁情况
select
(select username from v$session where sid=v$lock.sid) username,
sid,
id1,
id2,
lmode,
request,block,v$lock.type
from v$lock
where id1=73834;//object_id  通过user_objects查询

查询当前会话的可中断解析锁,作用是发现代码无法编译或超时等待可以通过这个查询找到谁正在使用
set linesize 1000
select session_id sid,owner,name,type,mode_held held,mode_requested request
from dba_ddl_locks
where session_id = (select sid from v$mystat where rownum=1);

oracle学习----DDL锁理解的更多相关文章

  1. oracle学习----行级锁的理解

    通过实验来理解行级锁的发生 1.创建需要的表 SQL> conn / as sysdba已连接.SQL> create table dept as select * from scott. ...

  2. Oracle学习笔记(一)——并发与锁

    1 并发 多用户数据库管理系统的一个主要任务是对 并发(concurrency)进行控制,即对多个用户同时访问同一数据进行控制.当缺乏有效的并发控制时,修改数据的操作就不能保证正常,从而危害数据完整性 ...

  3. Oracle学习系列1-7

    Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...

  4. Oracle学习系列7

    Oracle学习系列7 ************************************************************************************ 关联表 ...

  5. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  6. 查询01_DML锁和DDL锁的处理

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

  7. Oracle学习指南

    Oracle学习指南 你走的那天,我决定不落泪,迎着风撑着眼帘用力不眨眼 创建数据库.创建用户.创建表空间.创建表.插入数据..... 1.用系统用户登录,任选系统用户 代码: >>sql ...

  8. oracle事务和锁

    数据库事务概括 1. 说明 一组SQL,一个逻辑工作单位,执行时整体修改或者整体回退. 2.事务相关概念 1)事务的提交和回滚:COMMIT/ROLLBACK 2)事务的开始和结束 开始事务:连接到数 ...

  9. oracle事务和锁(转)

    If you use a SET TRANSACTION statement, then it must be the first statement in your transaction. How ...

随机推荐

  1. Android开发规范

    一.Android编码规范 1.java代码中不出现中文,最多注释中可以出现中文 2.局部变量命名.静态成员变量命名 只能包含字母,单词首字母出第一个外,都为大写,其他字母都为小写 3.常量命名 只能 ...

  2. trash目录: ~/.local/share/Trash

    trash目录:~/.local/share/Trash

  3. PHP ‘scan’函数拒绝服务漏洞

    漏洞名称: PHP ‘scan’函数拒绝服务漏洞 CNNVD编号: CNNVD-201311-464 发布时间: 2013-12-06 更新时间: 2013-12-06 危害等级: 中危   漏洞类型 ...

  4. POJ 1321 棋盘问题(DFS & 状压DP)

    用DFS写当然很简单了,8!的复杂度,16MS搞定. 在Discuss里看到有同学用状态压缩DP来写,就学习了一下,果然很精妙呀. 状态转移分两种,当前行不加棋子,和加棋子.dp[i][j]中,i代表 ...

  5. 【转】Android source build/envsetup.sh学习笔记

    原文网址:http://blog.csdn.net/mliubing2532/article/details/7567164 如果你只需要修改某一个模块的内容,但是却每次都要执行make, 最后等待很 ...

  6. LoadRunner脚本优化之—参数化迭代介

    在LoadRunner的脚本优化时,有时发送给服务器的请求参数化时,服务器返回的内容也会和参数化的内容相对应,例如发送的请求带有查询key=123,则服务器也会返回含有123相关的内容.这时我们在使用 ...

  7. 为EF DbContext生成的实体添加注释(T5模板应用)[转]

    1 先加上类注释 找到这行代码WriteHeader(codeStringGenerator, fileManager): 在它下面加上我们的代码: string summary=string.Emp ...

  8. curl检查远程文件是否存在

    size_t processdata(void *buffer, size_t size, size_t nmemb, void *user_p) { //写一个空的写函数 return nmemb; ...

  9. Ubuntu 14.04 SSH + 远程登录xrdp

    1. 安装ssh 打开"终端窗口",输入"sudo apt-get install openssh-server"-->回车-->输入"y ...

  10. bzoj 2242 [SDOI2011]计算器(数论知识)

    Description 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给 ...