Oracle加锁
来源:互联网 发布:mac笔记本怎么清理垃圾 编辑:程序博客网 时间:2024/06/04 19:17
select * from 表名 where XXX for update nowaitl -- 锁符合条件的记录
Oracle Skip Locked
Oracle 11g引入skip locked。
Skip Locked 是在query select语句中跳过已经被其他正在执行的query select语句锁住的行,只执行能够获得锁的行。
select for update如何查询大数量,那么其他session同时执行的select语句可能会等待锁超时而报下面这个错
ORA-30006: resource busy; acquire with WAIT timeout expired
如果是不超时的case,那么会出现
ORA-00054 resource busy and NOWAIT specified
比如session1执行下面语句:
SELECT *
FROM dept WHERE
deptno = 10
FOR UPDATE NOWAIT;
输出:
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
session2执行下面语句:
SELECT * FROM dept
WHERE deptno IN (10,20)
FOR UPDATE NOWAIT;
那么输出:
SELECT * FROM dept WHERE deptno IN (10,20)
FOR UPDATE NOWAIT
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified
因为session1已经锁住10这一行,session2请求获得不到10这一行的锁,就报错了。
那么在session2我们可以使用skip locked
SELECT * FROM dept
WHERE deptno IN (10,20)
FOR UPDATE SKIP LOCKED;
此时输出:
DEPTNO DNAME LOC
---------- -------------- -------------
20 RESEARCH DALLAS
SKIP LOCKED会跳过被锁住的行,只查询没有锁住的行。
- Oracle加锁
- oracle加锁for update
- oracle用户解锁/加锁
- oracle 给表加锁
- ORACLE存储过程,函数加锁
- oracle关于加锁的讨论
- oracle用户解锁与加锁
- oracle中加锁与解锁
- Oracle systemstatedump 会加锁么?
- Oracle 用户加锁与解锁
- 加锁
- 加锁
- 加锁
- 加锁
- 加锁
- 加锁
- 加锁
- Oracle数据库用户自动加锁解决
- 保存异常至本地,上传服务器
- HttpClient 上传文件
- Ubuntu Linux镜像下载
- 操作系统学习7
- Scala学习笔记20【Scala 模式匹配之case class实战】
- Oracle加锁
- 面试总结
- 在Linux下判断系统当前是否开启了超线程
- 黑马程序员——IO流之IO包中的其他类
- CSerialPort类的使用
- WifiStateTracker
- 算法复杂度的计算
- LeetCode----Power of Two
- windows下安装redis(Redis服务端按照 非常简单)