文档章节

Oracle学习笔记七 锁

javayou
 javayou
发布于 2016/05/24 14:03
字数 766
阅读 12
收藏 0
点赞 2
评论 0

锁的概念

  • 锁是数据库用来控制共享资源并发访问的机制。
  • 锁用于保护正在被修改的数据
  • 直到提交或回滚了事务之后,其他用户才可以更新数据
  • 对数据的并发控制,保证一致性、完整性。

            

 

并行性 -允许多个用户访问同一数据

一致性 - 一次只允许一个用户修改数据

完整性 - 为所有用户提供正确的数据。如果一个用户进行了修改并保存,所做的修改将反映给所有用户

 

锁的类型

 

行级锁:对操作的数据行进行锁定,防止其他用户(连接)进行修改。

表级锁:对整个表进行锁定。

 

行级锁

对正在被修改的行进行锁定。其他用户可以访问除被锁定的行以外的行。

 

 

行级锁是一种排他锁,防止其他事务修改此行。

在使用以下语句时,Oracle会自动应用行级锁:

  1.INSERT

  2.UPDATE

  3.DELETE

  4.SELECT … FOR UPDATE

SELECT … FOR UPDATE语句允许用户一次锁定多条记录进行更新,锁定的数据自能通过commit或者rollback进行提交或回滚后解锁

 

SELECT … FOR UPDATE语法:

 SELECT … FOR UPDATE [OF columns]
[WAIT n | NOWAIT];

SELECT * FROM order_master WHERE vencode='V002'
           FOR UPDATE OF odate, del_date;
UPDATE order_master SET del_date='28-8月-05'
           WHERE vencode=’V002’;
COMMIT;

 

 

SELECT * FROM order_master WHERE vencode='V002' FOR UPDATE WAIT 5;

 

 

SELECT * FROM order_master WHERE vencode='V002' FOR UPDATE NOWAIT;

 

 

表级锁

表级锁锁定整个表,限制其他用户对表的访问。

 

 

使用表级锁使用命令显示地锁定表,应用表级锁的语法是:

 LOCK TABLE table_name IN mode MODE;

 

 

 

  • 行共享:row share,禁止排他锁(不允许排他锁再锁定),允许其他的用户锁定表数据行共享使用。

 

Lock table emp in row share mode;

 

 

  • 行排他:exclusive 禁止使用排他锁和共享锁
Lock table emp in row exclusive mode;

 

  • 共享锁:share,可以多个用户同时锁定一个表,但是只允许用户查询和不能修改数据

 

    • 1.锁定表,仅允许其他用户查询表中的行
    • 2.禁止其他用户插入、更新和删除行
    • 3.多个用户可以同时在同一个表上应用此锁

       

  • 共享行排他:share row exclusive 比共享锁更多的限制,禁止使用共享锁及更高的锁
  • 排他锁: exclusive,禁止其他的用户再锁定 限制最强的表锁,仅允许其他用户查询该表的行。禁止修改和锁定表

死锁

当两个事务相互等待对方释放资源时,就会形成死锁,Oracle会自动检测死锁,并通过结束其中的一个事务来解决死锁

例:

复制代码

--第一步:用户1
update emp2 set sal=sal+25 where empno=7782;
--第二步:用户2
update emp2 set sal=sal+25 where empno=7566;
--第三步:用户1
update emp2 set sal=sal+25 where empno=7566;
--第四步:用户2
update emp2 set sal=sal+25 where empno=7782;
--产生死锁!!Oracle 自动解锁!

复制代码

本文转载自:http://www.cnblogs.com/hopeblog/p/5003115.html

共有 人打赏支持
javayou
粉丝 3
博文 52
码字总数 688
作品 0
太原
Oracle笔记 目录索引

Oracle笔记 一、oracle的安装、sqlplus的使用 Oracle笔记 二、常用dba命令行 Oracle笔记 三、function 、selectOracle笔记 四、增删改、事务 Oracle笔记 五、创建表、约束、视图、索引、序列...

ibm_hoojo
2011/05/03
0
0
一年走向【Java架构师】之葵花宝典

大多数时候,不是我们不努力,而是不知从何下手,我深知一份好的学习资料是多么的重要,我们通常会把大量的时间都浪费在找资源上,本人搜集学习java架构师的经典学习路线如下可供参考!!! 一...

我一路狂奔
2017/05/20
395
1
多线程学习笔记(七)

在使用synchronized时,当一个线程得到一个对象锁后,再次请求此对象锁时是可以再次得到该对象锁的.这也证明在一个synchronized方法/块的内部调用本类的其他synchronized方法/块时,是永远可以得...

scymore
2016/09/07
18
0
系统的撸一遍MySQL - MySQL读书笔记

作为一个工作6年的PHP工程师,说实话从来没有系统的去看过一本MySQL的书,哪怕入门的书,表示真的很汗颜。。。 记得最早学数据库的时候学过sql server、oracle 但是最终没有搞Java、也没有搞...

logbird
2016/08/20
64
3
mysql与Oracle的区别

一、并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。 mysql: mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他ses...

鲸落大叔
06/17
0
0
读书笔记之《Java并发编程的艺术》-线程池和Executor的子孙们

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
0
1

hjimce算法类博文目录 个人博客:http://blog.csdn.net/hjimce 个人qq:1393852684 知乎:https://www.zhihu.com/people/huang-jin-chi-28/activities 一、深度学习 深度学习(七十)darknet...

hjimce
2016/01/24
0
0
java 获取指定目录下的所有文件

java ,如何获取指定目录下的所有文件呢? 看代码: 说明:上述方法采用了递归,所以包含子目录下的子目录中的文件。。。 测试代码: 输出结果: d:Tempaadividedmergedoracle学习笔记.doc ...

zh119893
2014/05/10
325
0
“我爱智能”原创性博客索引

不知不觉,博客也写出了一点小体系,新的阶段已经开始,未来希望再接再厉继续补充这一体系,在成长中写博客,在博客中成长,在此先做一个小的梳理,谢谢大家的支持。 一)关于深度学习系列 ...

on2way
2015/08/29
0
0
UNIX网络编程卷2进程间通信读书笔记汇总

UNIX网络编程卷2进程间通信读书笔记(一)—概述 http://blog.chinaunix.net/u/22935/article527112.html UNIX网络编程卷2进程间通信读书笔记(二)—管道 (1) http://blog.chinaunix.net/...

长平狐
2012/09/03
185
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Git 基础 - 远程仓库的使用

远程仓库的使用 要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库。远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写。同他人协作开发某...

谢思华
10分钟前
0
0
面试宝典-悲观锁和乐观锁

悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。 乐观锁(Optimistic...

suyain
11分钟前
0
0
崛起于Springboot2.X之集成MongoDb使用mongoTemplate CRUD(27)

1、pom依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version></dependency><dependency> <groupId>log4j</......

木九天
21分钟前
0
0
切分log日志

新建logback.xml放到resource里面 <?xml version="1.0" encoding="utf-8"?><configuration> <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender"> <......

talen
27分钟前
0
0
spring @Resource 和 @Autowired 的使用区别

这两个 注解 @Resource 和 @Autowired , 常识都知道 @Resource 是 JAVAEE 自带的,@Autowired 是 spring 的自定义注解。 一般情况下, 使用 bean的时候, 这两个注解 随便使用一个即可。 但...

之渊
32分钟前
0
0
springboot集成elasticsearch客户端问题记录

1背景说明 服务端ES版本为5.5.2,springboot版本为1.5.6。 工程中添加如下依赖 2问题记录 2.1 NetworkPlugin类找不到 报错java.lang.ClassNotFoundException: org.elasticsearch.plugins.Net...

zjg23
34分钟前
1
0
快速构建ceph可视化监控系统

前言 ceph的可视化方案很多,本篇介绍的是比较简单的一种方式,并且对包都进行了二次封装,所以能够在极短的时间内构建出一个可视化的监控系统 本系统组件如下: ceph-jewel版本 ceph_expor...

万建宁
34分钟前
0
0
Java构造器使用注意

public class 父类A {int age = 10;protected void say() {System.out.println("父类A");}public 父类A() {override();}public void override() {Syst...

咸鱼AI
34分钟前
0
0
TensorFlow 线性分类

构造直线 z = 2 * x - 3 * y + 4 x0*w0+x1*w1+b=0 x1=-x0* w0/w1-b/w1 斜率 k= -w0/w1 截距 -b/w1 随机生成数据,加入一定的偏差,用直线将二维平面分为两部分 使用线性模型拟合参数 损失函数...

阿豪boy
37分钟前
0
0
翻译冒泡排序测试

翻译一个冒泡排序: var a = [1,3,2,4,6,5];var f = 0;var n = a.length ;for( var i =1; i<= n; i++) { for( var j = n-1 ; j >= i; j --) { if(a[j] < a[j+1]) { ......

钟元OSS
39分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部