oracle 锁----续

来源:互联网 发布:apache php版本 编辑:程序博客网 时间:2024/06/06 08:28

之前介绍了oracle几种锁,还没有完全介绍完,下面继续。

5号锁:SSX(SRX)

触发条件:LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE;

和3~6号锁都不兼容,可以理解为级别最高的表锁

6号锁:X

触发条件:LOCK TABLE table IN EXCLUSIVE MODE;

只允许select

汇总一下触发DML的条件:

oracle 锁----续 - dazuiba_008 - 魂醉的一亩二分地

 

Y*如果没有行锁的冲突,就是Y,如果有,那么wait。

这里DML就介绍完了,下面还有DDL锁

DDL锁分类:

DDL专有锁

DDL共享锁

DDL专有锁:用于阻止别的用户在DDL的对象上做定义修改,触发条件:alter table和drop table,DDL也获得DML锁,所以DML中不能操作DDL

DDL共享锁:有些DDL语句是可以并发执行的,在它所涉及的对象上会有DDL共享锁,保护对象的定义变更。、

举例:如果在一个T1表上同时多个用户建立过程或者包等等,就会加一个DDL共享锁,这个时候在T1表上的DML操作是可以的,但是不能更改表的定义,比如alter table add column这种类型。

触发条件:AUDIT, NOAUDIT, COMMENT, CREATE [OR REPLACE] VIEW/ PROCEDURE/PACKAGE/PACKAGE BODY/FUNCTION/TRIGGER, CREATE SYNONYM, and CREATE TABLE

DDL锁的兼容表:

oracle 锁----续 - dazuiba_008 - 魂醉的一亩二分地

 Breakable Parse Locks(易破碎的解析锁)

锁在SQL/PLSQL关联的对象上,不阻塞任何操作。

这个锁是在SQL/PLSQL解释阶段获取,可以通过DBA_DDL_LOCKS查看session占有的破碎解析锁。

DDL锁在执行完自动提交结束后,就消失了。

 Breakable Parse Locks,只要SQL/PLSQL在共享池,那么就一直保持。

好了,oracle的全部锁的介绍就到这里。