视窗
loading...
您现在的位置:首页 > 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会跳过被锁住的行,只查询没有锁住的行。

銆€

銆€

銆愬厤璐e0鏄庡拰鐗堟潈璇存槑銆�
鏈珯閮ㄥ垎淇℃伅鏉ユ簮浜庝簰鑱旂綉锛�瀵硅浆杞界殑淇℃伅鎴戜滑鍔涙眰鏍囨槑淇℃伅鐨勫嚭澶勶紝鎴戜滑灏婇噸浣滆€呯殑鐗堟潈钁椾綔鏉冿紝瀵规垜浠浆杞界殑淇℃伅濡傛湁寮傝鎴栨湁渚垫潈鎴栬繚娉曚俊鎭鍙婃椂鑱旂郴鎴戜滑锛屾湰绔欎細绔嬪嵆鍒犻櫎锛�瀵瑰師鍒涘唴瀹规垜浠効鎰忔敮浠橀€傚綋鐨勭ǹ閰紝鑱旂郴鏂瑰紡锛氶偖浠�:webmaster@jscj.com銆€鐢佃瘽锛�4008816886

相关文章

无相关信息
更新时间2022-03-13 11:18:58【至顶部↑】
联系我们 | 邮件: webmaster@jscj.com | 客服热线电话:4008816886(QQ同号) |  娣诲姞瀹㈡湇寰俊

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

客服电话:4008816886