Oracle的锁有几种模式
Oracle里面的锁共有一下几种模式:
0:none
1:null 空
2:Row-S 行共享(Row Share RS): 共享表锁
3:Row-X 行专用(RX): 用于行数据的修改
4:Share 共享锁(S): 阻止其他DML操作
5:S/Row-X 共享行专用(SRX): 阻止其他事务操作
6:exclusive 专用(X): 独立访问使用
以上可以看出,数字越大的锁影响的操作越多,锁的级别越高。
一般的查询语句是小于2的锁,如select * from *
select … from … for update 是2的锁,这时候返回集的数据行都将处于行级(Row-X)独占式锁定,其他对象只能对这些数据进行查询,而不能进行更新或者select for update操作。
insert/update/delete是3的锁, 在这些操作没有commit之前插入同样的记录会没有反应,因为3的锁必须要等到前一个3的锁执行释放掉以后才能继续。 创建索引的时候也会产生3,4级别的锁。
locked_mod为2,3,4的锁,不影响DML(insert,delete,update,select)操作,但是DDL(alter,drop)等修改表结构的操作会提示ora-00054错误。
当有主外键约束时执行update/delete操作可能会产生4,5的锁。
DDL语句时是6的锁。
0:none
1:null 空
2:Row-S 行共享(Row Share RS): 共享表锁
3:Row-X 行专用(RX): 用于行数据的修改
4:Share 共享锁(S): 阻止其他DML操作
5:S/Row-X 共享行专用(SRX): 阻止其他事务操作
6:exclusive 专用(X): 独立访问使用
以上可以看出,数字越大的锁影响的操作越多,锁的级别越高。
一般的查询语句是小于2的锁,如select * from *
select … from … for update 是2的锁,这时候返回集的数据行都将处于行级(Row-X)独占式锁定,其他对象只能对这些数据进行查询,而不能进行更新或者select for update操作。
insert/update/delete是3的锁, 在这些操作没有commit之前插入同样的记录会没有反应,因为3的锁必须要等到前一个3的锁执行释放掉以后才能继续。 创建索引的时候也会产生3,4级别的锁。
locked_mod为2,3,4的锁,不影响DML(insert,delete,update,select)操作,但是DDL(alter,drop)等修改表结构的操作会提示ora-00054错误。
当有主外键约束时执行update/delete操作可能会产生4,5的锁。
DDL语句时是6的锁。
【Oracle的锁有几种模式】相关文章
2. XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
3. 如何设定的weblogic的热启动模式(开发模式)与产品发布模式
4. 说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
8. Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
9. Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
10. Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
本文来源:https://www.mianshiwenti.com/a13417.html
进入下载页面
上一篇:如何查看当前ORACLE数据库里面锁的情况
下一篇:华鼎博士科技Oracle面试题
﹝Oracle的锁有几种模式﹞相关内容
- 在spring中有几种事务管理,分别是什么
- ASP.NET中共有几种类型的控件?各有什么区别?
- C#中的验证控件有几种
- Oracle面试(DBA For oracle数据库技术)
- How to detect and cleanup pending transactions in Oracle
- 什么是Oracle的后台进程background processes?都有哪些后台进程?
- Oracle的内存结构(Memory structures)
- 什么是Oracle的同义词(synonym)? 如何创建synonym?
- 介绍一下Oracle的操作符优化
- J2ee常用的设计模式?说明工厂模式