Oracle的锁有几种模式
编辑: 面试啦 发布时间: 2023-05-15 22:50:39
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面试题
面试题库导航
- C++面试题
- JAVA面试题
- Oracle面试题
- MySQL面试题
- Linux面试题
- 网络工程师面试题
- 网管面试题
- 软件工程师面试题
- PHP面试题
- .net面试题
- 软件测试面试题
- EJB面试题
- Spring面试题
- Javascript面试题
- Python面试题
- QTP面试题
- Servlet面试题
- J2EE面试题
- Database面试题
- ASP面试题
- Unix面试题
- Loadrunner面试题
- 通信面试题
- 嵌入式面试题
- Ruby面试题
- Delphi面试题
- Mobile开发面试题
- SOA面试题
- JAVA面试题面试题
- 研发工程师面试题
- 软件架构师面试题
- 系统工程师面试题
- Android面试题
- JAVA程序员
- C#面试题