ddl_lock_timeout 与 ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired

FROM http://blog.csdn.net/jgmydsai/article/details/10523969

[sql]  view plain copy
  1. Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0   
  2. Connected as test@192.168.1.118:1521/orcl  
  3.   
  4. SQL>   
  5. SQL> INSERT INTO TEST SELECT 1 FROM dual WHERE NOT EXISTS(SELECT * FROM TEST);  
  6. 1 row inserted  
  7. SQL> COMMIT;  
  8. Commit complete  
  9. SQL> BEGIN  
  10.   2    DBMS_SCHEDULER.CREATE_JOB(JOB_NAME   => 'TEST_JOB',  
  11.   3                              JOB_TYPE   => 'PLSQL_BLOCK',  
  12.   4                              JOB_ACTION => 'declare  
  13.   5      v_date date := sysdate + 10 / 24 / 60 / 60;  
  14.   6    begin  
  15.   7      loop  
  16.   8        dbms_lock.sleep(1);  
  17.   9        update test set t1 = t1 + 1;  
  18.  10        exit when sysdate >= v_date;  
  19.  11      end loop;  
  20.  12        commit;  
  21.  13    end;',  
  22.  14                              START_DATE => SYSDATE,  
  23.  15                              ENABLED    => TRUE,  
  24.  16                              AUTO_DROP  => TRUE);  
  25.  17    DBMS_LOCK.SLEEP(5);  
  26.  18  END;  
  27.  19  /  
  28. PL/SQL procedure successfully completed  
  29. SQL> TRUNCATE TABLE TEST;  
  30. TRUNCATE TABLE TEST  
  31. ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired  
  32.   
  33. SQL>   
[sql]  view plain copy
  1. SQL> show parameter ddl_lock;  
  2. NAME                                 TYPE        VALUE  
  3. ------------------------------------ ----------- ------------------------------  
  4. ddl_lock_timeout                     integer     0  
  5.   
  6. SQL> alter session set ddl_lock_timeout=10;  
  7. Session altered  
  8.   
  9. SQL>   
  10. SQL> INSERT INTO TEST SELECT 1 FROM dual WHERE NOT EXISTS(SELECT * FROM TEST);  
  11. rows inserted  
  12. SQL> COMMIT;  
  13. Commit complete  
  14. SQL> BEGIN  
  15.   2    DBMS_SCHEDULER.CREATE_JOB(JOB_NAME   => 'TEST_JOB',  
  16.   3                              JOB_TYPE   => 'PLSQL_BLOCK',  
  17.   4                              JOB_ACTION => 'declare  
  18.   5      v_date date := sysdate + 10 / 24 / 60 / 60;  
  19.   6    begin  
  20.   7      loop  
  21.   8        dbms_lock.sleep(1);  
  22.   9        update test set t1 = t1 + 1;  
  23.  10        exit when sysdate >= v_date;  
  24.  11      end loop;  
  25.  12        commit;  
  26.  13    end;',  
  27.  14                              START_DATE => SYSDATE,  
  28.  15                              ENABLED    => TRUE,  
  29.  16                              AUTO_DROP  => TRUE);  
  30.  17    DBMS_LOCK.SLEEP(5);  
  31.  18  END;  
  32.  19  /  
  33. PL/SQL procedure successfully completed  
  34. SQL> TRUNCATE TABLE TEST;  
  35. Table truncated  
  36.   
  37. SQL>   

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值