`

Oracle Skip Locked

 
阅读更多

原文链接:http://www.javaarch.net/jiagoushi/704.htm

 

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清除死锁知识点 #### 一、Oracle死锁概念 在Oracle数据库中,当两个或多个事务在等待对方释放锁定资源时会发生死锁。这种情况下,所有事务都将被阻塞,无法继续执行,直到其中一个事务回滚或者系统采取...

    ORACLE应用中常见的傻瓜问题1000问-1

    ### ORACLE应用中常见的傻瓜问题1000问(精选知识点解析) #### 知识点1:如何查看系统被锁的事务时间? 在Oracle数据库中,了解哪些对象被锁定以及锁定的时间对于诊断性能问题至关重要。你可以使用以下SQL查询来...

    oracle Session与lock 解除

    ### Oracle Session与Lock解除 在Oracle数据库环境中,锁机制是一种重要的资源管理手段,它能够确保数据的一致性和并发性处理。锁(Lock)是数据库管理系统为了控制多个用户对同一数据资源的同时访问而采取的一种...

    Oracle the account is locked解决办法

    本文将针对“Oracle the account is locked”这一主题进行深入探讨,包括其原因、查询方法以及具体的解锁步骤。 #### 错误提示与含义 当出现`ORA-28000: the account is locked`这样的错误提示时,表明当前尝试登录...

    oracle数据库解决死锁

    Oracle数据库解决死锁 Oracle数据库解决死锁是指在Oracle数据库中出现的死锁问题,通过使用PL/SQL语句手动解决死锁问题。死锁是当多个事务在等待其他事务释放资源时,导致系统无法继续执行的现象。 在Oracle...

    基于oracle中锁的深入理解

    Oracle数据库的锁机制是数据库并发控制的关键组成部分,它确保了数据的一致性和完整性。在Oracle中,锁有多种模式,每个模式对应不同的访问权限和并发级别。以下是对这些锁模式的详细解释: 1. **None (0)**: 这是...

    oracle查看谁锁表

    "SYS"."V_$LOCKED_OBJECT"."ORACLE_USERNAME", "SYS"."V_$LOCKED_OBJECT"."OS_USER_NAME", "SYS"."OBJ$"."NAME" FROM "SYS"."V_$LOCKED_OBJECT", "SYS"."OBJ$" WHERE ("SYS"."V_$LOCKED_OBJECT"."OBJECT_ID" = ...

    数据库oracle for update of和for update的区别

    - `SKIP LOCKED`选项用于跳过那些已经被锁定的行,而不会等待或返回错误。 - 例如: ```sql SELECT * FROM Table1 WHERE pkid = 1 FOR UPDATE SKIP LOCKED; ``` 如果`pkid=1`的行已被锁定,则此查询将不返回...

    Oracle的锁表与解锁

    SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#, l.os_user_name, s.machine, s.terminal, a.sql_text, a.action FROM v$sqlarea a, v$sessions s, v$locked_object l WHERE l...

    如何解决Oracle杀死死锁进程

    解决 Oracle 杀死死锁进程 Oracle 杀死死锁进程是数据库管理员经常遇到的问题,本文将介绍解决 Oracle 杀死死锁进程的方法。 在 Oracle 中,死锁是指两个或多个会话在等待对方释放资源,从而导致互相阻塞的情况。...

    oracle 锁表查询

    from v$locked_object a,v$session b where a.session_id = b.sid and sid in( select a.SESSION_ID from v$locked_object a,dba_objects b where b.object_id = a.object_id and object_name ='HDM_COMPLETED_RATE'...

    oracle死锁表后处理

    "oracle死锁表后处理" oracle死锁表后处理是指在oracle数据库中处理死锁表的各种方法和技巧。oracle死锁表后处理是数据库管理员和开发人员需要掌握的重要技能,旨在解决oracle数据库中出现的死锁问题,确保数据的...

    解决sqlite死锁示例异常database is locked示例

    "database is locked"错误是SQLite在遇到死锁情况时抛出的异常,意味着数据库当前处于锁定状态,无法进行预期的操作。本文将深入探讨SQLite死锁的原因、诊断方法以及解决策略。 **1. SQLite死锁原因** SQLite死锁...

    oracle解锁,死锁

    ### Oracle解锁与死锁解析 #### 一、Oracle解锁与死锁概述 在Oracle数据库管理过程中,解锁与处理死锁是常见的操作需求之一。当多个事务请求对同一资源进行访问时,可能会出现等待的情况,即一个事务正在等待另一...

    oracle中锁的级别和锁表语句

    oracle的锁级别一直感到比较混乱。 把它整理一下。 文章目录锁模式值列表锁表语句例子wait 和 nowait锁模式row share(share update) 2级锁row exclusive 3级锁share 4级锁share row exclusive 5级锁exclusive 6级锁...

    Oracle数据库hang分析

    在分析阶段,如果确定数据库出现了真正的hang问题,或者有会话被“卡住”(stuck)或锁定(locked),则需要进一步确定问题的原因。这可能涉及到数据库中的 blocker(阻塞者)和waiter(等待者)数据的分析。阻塞者...

    (绝对干货)Oracle ADG数据库完整部署、切换、备份、运维手册

    - 使用 `V$LOCKED_OBJECT` 视图来诊断锁定对象。 - 使用 `ALTER SYSTEM KILL SESSION` 命令来杀死导致死锁的会话。 - **数据误删除**: - 使用闪回表或者闪回查询来恢复丢失的数据。 - 在归档模式下,可以使用...

    SVN在客户端执行UPDATE报locked的处理办法

    ### SVN在客户端执行UPDATE报locked的处理办法 #### 背景介绍 在软件开发过程中,版本控制系统(Version Control System, VCS)是必不可少的工具之一。Subversion(SVN)作为一款开源的集中式版本控制系统,被广泛...

Global site tag (gtag.js) - Google Analytics