博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【11g新特性】DDL_LOCK_TIMEOUT的作用
阅读量:6594 次
发布时间:2019-06-24

本文共 1942 字,大约阅读时间需要 6 分钟。

11g以前,DDL 语句是不会等待DML语句的,当DDL语句访问的对象正在执行的DML语句,会立即报错
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效。 而在11g以后,DDL_LOCK_TIMEOUT参数可以修改这一状态,当DDL_LOCK_TIMEOUT=0时,DDL 不等待DML,
当DDL_LOCK_TIMEOUT 为N(秒)时,DDL等待DML N 秒!
版本:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
  
session 1
建立测试表
yang@rac1>create table yangtab as select * from all_objects where rownum <200;
表已创建。
对表执行DML 
yang@rac1>update yangtab set object_name='yangql';
已更新199行。
yang@rac1>show parameter ddl_lock
NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------
ddl_lock_timeout                     integer     0
yang@rac1>update yangtab set wner='yangql';
已更新199行。
session 2 对表执行ddl操作
yang@rac1>alter table yangtab drop column owner;
alter table yangtab drop column owner
            *
第 1 行出现错误:
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
已用时间:  
00: 00: 00.01 --注意时间
设置 ddl_lock_timeout =10 秒,实现DDL语句等待DML语句
yang@rac1>alter session set ddl_lock_timeout=10;
会话已更改。
已用时间:  00: 00: 00.10
yang@rac1>alter table yangtab drop column owner;
alter table yangtab drop column owner
            *
第 1 行出现错误:
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
已用时间:  
00: 00: 10.03 --等待时间接近10秒
yang@rac1>alter session set ddl_lock_timeout=8;改为8秒
会话已更改。
已用时间:  00: 00: 00.02
yang@rac1>alter table yangtab drop column owner;
alter table yangtab drop column owner
            *
第 1 行出现错误:
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
已用时间:
 00: 00: 08.01 --等待8秒
yang@rac1>alter session set ddl_lock_timeout=0;
会话已更改。
已用时间:  00: 00: 00.00
yang@rac1>alter table yangtab drop column owner;
alter table yangtab drop column owner
            *
第 1 行出现错误:
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
已用时间:  
00: 00: 00.00
综上,设置ddl_lock_timeout为N(秒)后,DDL执行后将等待N秒钟后才抛出报错信息。
在ddl_lock_timeout为默认值 0 时,DDL语句提交之后马上报错。
官方解释如下:

DDL_LOCK_TIMEOUT

Property Description
Parameter type Integer
Default value 0
Modifiable ALTER SESSION
Range of values 0 to 1,000,000 (in seconds)
Basic No

转载地址:http://jnjio.baihongyu.com/

你可能感兴趣的文章
615A - 比特率、波特率、 数据传输率、可编程中断控制器
查看>>
mybatis 自身关联 映射
查看>>
nginx反向代理+keepalived
查看>>
大话Ruby Block
查看>>
windows安装TortoiseGit详细使用教程【基础篇】
查看>>
Python 通过SDK抓取aliyun 域名接口相关信息;
查看>>
如何更好的优化MySQL数据库
查看>>
Linux笔记1--本地模拟SSH登陆Linux
查看>>
关于去掉ansible运行前的Warning
查看>>
MyBatis多对多关联查询示例——MyBatis学习笔记之十八
查看>>
ubutun下图片操作
查看>>
修复可执行文件关联
查看>>
Layout属性介绍
查看>>
Swift3.0新变化
查看>>
前端的ejs,less,ant design初探
查看>>
当高德一只脚踏入阿里大门时 就注定另一只脚也会迈进去
查看>>
构建Squid代理服务器
查看>>
css 总结1
查看>>
对Oracle ADF中间件开发的一点感觉
查看>>
AWS EBS Magnetic(standard)磁盘性能测试
查看>>