DML锁
在DDL 操作中会自动为对象加DDL 锁(DDL Lock),从而保护这些对象不会被其他会话所修改。
例如,如果执行一个DDL 操作alter table t,表T 上就会加一个排他DDL 锁,以防止其他会话得到这个表的DDL锁和TM锁。
DML释放机制有COMMIT,ROLLBACK,KILL。
DDL默认有个COMMIT操作,也就是DDL语句执行结束后会自动提交。
所以需要注意的是:先执行DML,然后执行DDL语句,DML会被提交

DDL锁分为两个类型:DDL专有锁、DDL共享锁,咱们分别介绍一下:
⊙ DDL专有锁
用于阻止别的用户在DDL所引用的对象定义上可能的修改。
DDL专有锁与DDL专用锁、DML锁是冲突的:如你先ALTER TABLE T,就不能执行ALTER TABLE T或DELETE FROM T 。
⊙ DDL共享锁
有些DDL语句会产生DDL共享锁,用于保护对对象定义的变更,可以同时并发执行。
比如同时两个用户在EMP表上创建一个存储过程,分别会在它引用的对象上(EMP)加一个DDL共享锁,
而且用DML修改表的数据也允许,但是不允许EMP上修改表定义。
再来看看DDL专用锁与DDL共享锁

DDL锁相对DML锁要好理解一些,当然其内容远远不止我写的这些。
关于Oracle锁的内容,暂时就到这。
学海无涯,适时而止。
翻翻历史,温故知新
开始聊聊恶心的“锁”-- 3.Oracle DML表级锁概念
开始聊聊恶心的“锁”-- 2.Oracle DML行级锁概念
开始聊聊恶心的“锁”-- 1.一个故事了解Oracle有哪些锁
文章转载自InDataBase,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




