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>

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号