您现在的位置:首页 > IT认证 > oracle认证 >

Oracle开发技术:OracleSkipLocked


Oracle开发技术:OracleSkipLocked

Oracle Skip Locked

  [html]

  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会跳过被锁住的行,只查询没有锁住的行。

相关文章

无相关信息
更新时间2022-03-13 11:18:58【至顶部↑】
联系我们 | 邮件: | 客服热线电话:4008816886(QQ同号) | 

付款方式留言簿投诉中心网站纠错二维码手机版

客服电话:4008816886