oracle锁

Posted 架构成长之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle锁相关的知识,希望对你有一定的参考价值。

分为排它锁和共享锁,当一个事务获得排它锁后,其它事务不能进行读或写操作,当一个事务获得共享锁后,其它事务可以进行读操作但不能写。

排它锁也叫写锁或x锁,共享锁叫读锁或s锁。

按保护内容来分:

dml锁,保护数据的完整和一致性,分tm锁(又称表级锁)和tx锁(又称行级锁或事务锁)

ddl锁,保护数据对象结构,比如table,index

内部锁,保护数据库内部结构,比如sga

当oracle进行insert、delete、update、select for update操作,oracle会自动申请tm锁,然后再申请tx锁,tx锁只能是排它锁,共享锁没有意义,oracle在表上面默认是共享锁。

TM锁包括了SS、SX、S、X等多种模式,在数据库中用1-6来表示。不同的SQL操作产生不同类型的TM锁。如下表:

1 Select,有时会在v$locked_object出现。
2 相应的sql有:Select for update ,Lock xxx in  Row Share mode,select for update当对
话使用for update子串打开一个游标时,所有返回集中的数据行都将处于行级(Row-X)独
占式锁定,其他对象只能查询这些数据行,不能进行update、delete或select for update
操作。
3 相应的sql有:Insert, Update, Delete, Lock xxx in Row Exclusive mode,没有commit
之前插入同样的一条记录会没有反应, 因为后一个3的锁会一直等待上一个3的锁, 我们
必须释放掉上一个才能继续工作。
4 相应的sql有:Create Index, Lock xxx in Share mode
5 相应的sql有:Lock xxx in Share Row Exclusive mode,当有主外键约束时update
/delete ... ; 可能会产生4,5的锁。
6 相应的sql有:Alter table, Drop table, Drop Index, Truncate table, Lock xxx in Exclusive
mode







以上是关于oracle锁的主要内容,如果未能解决你的问题,请参考以下文章

oracle 死锁和锁等待的区别,锁等待

查询Oracle锁表语句以及解锁语句

oracle查询锁表与解锁情况提供解决方案

Oracle 锁机制

oracle数据库怎么锁表

ORACLE的TM锁和TX锁