【11g新特性】DDL_LOCK_TIMEOUT的作用

简介: 11g以前,DDL 语句是不会等待DML语句的,当DDL语句访问的对象正在执行的DML语句,会立即报错ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效。
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
目录
相关文章
|
10月前
|
存储 SQL 分布式计算
大数据时代的引擎:大数据架构随记
大数据架构通常分为四层:数据采集层、数据存储层、数据计算层和数据应用层。数据采集层负责从各种源采集、清洗和转换数据,常用技术包括Flume、Sqoop和Logstash+Filebeat。数据存储层管理数据的持久性和组织,常用技术有Hadoop HDFS、HBase和Elasticsearch。数据计算层处理大规模数据集,支持离线和在线计算,如Spark SQL、Flink等。数据应用层将结果可视化或提供给第三方应用,常用工具为Tableau、Zeppelin和Superset。
3898 8
|
SQL 容灾 关系型数据库
PSQLException: ERROR: column “xxxxx“ does not exist
PSQLException: ERROR: column “xxxxx“ does not exist
572 0
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之当需要将数据从ODPS同步到RDS,且ODPS表是二级分区表时,如何同步所有二级分区的数据
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
249 7
|
存储 SQL 分布式计算
Hive存储表数据的默认位置详解
【8月更文挑战第31天】
1131 1
|
分布式计算 监控 测试技术
Spark的错误处理与调试技巧
Spark的错误处理与调试技巧
|
数据采集 DataWorks 安全
DataWorks产品使用合集之在DataWorks中创建了一个周期任务,但是没有生成周期实例如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
134 0
|
SQL 监控 关系型数据库
Navicat 面向 PostgreSQL 查询超时的工具解决方案
Navicat 面向 PostgreSQL 查询超时的工具解决方案
368 0
|
存储 缓存 NoSQL
学习总结
学习总结
|
SQL 运维 DataWorks
DataWorks调度依赖配置深度解析
规范的依赖关系配置后,您无需关心当前节点需要依赖表由哪个节点产出,通过DataWorks自动解析将一键为您设置任务依赖。
4448 0
DataWorks调度依赖配置深度解析
|
运维 DataWorks 调度
DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖
本系列文章为DataWorks钉钉大群内熟能生巧系列直播的文字版,基本涵盖了直播中讲解到的大部分内容,大家可以学习或者Mark一下,有需要的时候再来回顾。本系列直播内容由DataWorks技术支持团队出品,运营团队整理,大部分是DataWorks用户实际使用中遇到的频率较高的问题,希望对大家有一定帮助。
DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖