首页 > 代码库 > oracle锁
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锁
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。