Oracle 11g DDL 的 wait选项(DDL_LOCK_TIMEOUT)

php中文网
发布: 2016-06-07 17:23:47
原创
1313人浏览过

DDL命令需要排它锁的内部结构。如果这些锁不可用,将返回一个rdquo; ORA-00054: resource busyrdquo;,当试图修改频繁访问的对象

ddl命令需要排它锁的内部结构。如果这些锁不可用,将返回一个” ora-00054: resource busy”,当试图修改频繁访问的对象时,这可能特别让人沮丧,为了解决这个问题oracle 11g 包含了ddl_lock_timeout参数,可以在实例或者会话级别分别使用alter system 和 alter session命令。
 
ddl_lock_timeout 表示一个ddl命令等待锁可用的秒数在抛出”resource busy”错误之前。默认值是0(表示nowait)。
 
sql> create  table  ddl_lock_test (
 
      id  number
 
    );
 
sql> insert  into ddl_lock_test    values  ( 1 );
 
 
 
-----------创建一个测试表,并插入一条数据,,但不commit;
 
-----------新开一个session,在session 级别设置 ddl_lock_timeout 为一个非0值并试图在表上加一列;
 
 
 
 
 
sql> alter  session  set  ddl_lock_timeout = 20;
 
 
 
sql>alter  table  ddl_lock_test  add  (
 
    name  varchar2(20)
 
      );
 
 
 
--------这个会话会等待20秒在失败之前.
 
 alter  table  ddl_lock_test  add  (name  varchar2(20))
 
*
 
error at line 1:
 
ora-00054: resource busy and acquire with nowait specified
 
 
 
----若我们重复alter  table 命令并在20秒内commit 第一个session 的 insert , alter  table 将会返回执行成功消息。
 
 
 
sql>alter  table  ddl_lock_test  add  (
 
    name  varchar2(20)
 
      );
 
 table  altered.
 
 
 
sql>

linux

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号