Oracle 11gR2上遇到blocking txn id for DDL等待事件

本文是原创文章,转载请注明出处:http://blog.csdn.net/msdnchina/article/details/44726875

在最近处理的一个案例(11.2.0.4版本的oracle db)中,遇到了blocking txn id for DDL 这个等待事件。

下面来说一下当时的操作:

create index idx_tab_1 on table_name (column_name)   tablespace xxx  online;

如上建立索引的操作用了17分钟零7秒才完成。

之后我生成该时间段的awr报告,截取top10 等待事件如下:

blocking txn id for DDL 的wait time是1023.1秒 ,17分钟零7秒 =1027秒,也就是说,当时该create index语句的绝大多数时间都在等待。

后来又生成了该时间段的ash报告,在ash报告中,也能清楚的看到  create index操作的等待事件是blocking txn id for DDL,如下:

在mos文章Alter Table Add Column Command Hangs With Wait Event ‘blocking txn id for DDL‘ (文档 ID 1553725.1)中,清楚的说明了该等待事件:

原文如下:

DDL commands require exclusive locks on internal structures. If these locks are not available, the commands return with an "ORA-00054: resource busy" error message.
On Oracle 11.2 instead of ora-54, the ALTER TABLE statement will not error out immediately. Instead, it waits indefinitely.
Prior to 11g, if these locks are not available, the DDL command will fail with an "ORA-00054: resource busy" error message.

翻译如下:

DDL命令需要在内部结构上的排他锁。如果这些锁不能获得,DDL命令会失败,并返回"ORA-00054: resource busy" 错误信息。

在Oracle 11.2中,取代了ora-54,alter table语句 不会立即返回错误,而是会无限期的等待。

在11g之前,如果这些锁不能获得,DDL命令会失败,并返回"ORA-00054: resource busy" 错误信息。

时间: 2024-08-28 23:31:04

Oracle 11gR2上遇到blocking txn id for DDL等待事件的相关文章

Oracle常见等待事件说明

Oracle的等待事件是衡量Oracle运行状况的重要依据及指标.等待事件的概念是在Oracle7.0.1.2中引入的,大致有100个等待事件.在Oracle 8.0中这个数目增加到了大约150个,在Oracle8i中大约有200个事件,在Oracle9i中大约有360个等待事件.主要有两种类别的等待事件,即空闲(idle)等待事件和非空闲(non-idle)等待事件. 空闲事件指Oracle正等待某种工作,在诊断和优化数据库的时候,我们不用过多注意这部分事件. 常见的空闲事件有: ? disp

RHEL5 X86-64上安装Oracle 11gR2示例与总结

进入Oracle DBA行业也有好几年了,但是说到安装Oracle的经验,我还真不是特别多,印象中刚开始每次安装都有点磕磕碰碰,随着接触Oracle的时间越来越长,各方面的原理.机制也都有一定的了解后,现在安装Oracle已经很少会遇到问题了.基本上我把自己安装Oracle的方式可以归为下面三个阶段 刚接触和学习Oracle,安装完全没有头绪,只能按照网上或者书上有截图的方式一步一步照样安装,出错后,只能协助,然后重新安装 接触Oracle一段时间以后,安装的基本原理.步骤也都了解了,一般都是再

CentOS X64上64位Oracle 11gR2 静默安装

CentOS 6.2 X64上64位Oracle 11gR2 静默安装 www.linuxidc.com/Linux/2012-03/56606p4.htm HP-UX静默安装oracle11g过程 http://blog.csdn.net/yangyinbo/article/details/6221220 docker下oracle11g安装 http://blog.sina.com.cn/s/blog_d840ff330102v4j0.html 解决oracle 11g startup 问题

RedHat 6 静默安装Oracle 11gR2

之前看了网上很多篇Linux静默安装Oracle的文章,但安装测试时老觉得有问题,后来直接找来Oracle官方英文文档并仔细阅读研究rsp文件的内容说明,经过自己在虚拟机中的安装测试,使用RedHat 6.5(内核版本:2.6.32-431.el6.x86_64)上静默安装Oracle 11gR2(版本:11.2.0.3),整理出了本文,主要包括了环境要求与准备.静默安装Oracle软件与监听.静默安装Oracle数据库.安装完成后检查.设置Oracle开机自动启动等部分. 一. 环境要求与准备

Oracle 11gR2 RAC中的SCAN IP

Oracle 11gR2 中,引入了SCAN(Single ClientAccess Name)的特性.SCAN是一个域名,可以解析至少1个IP,最多解析3个SCAN IP,客户端可以通过这个SCAN 名字来访问数据库,另外SCAN ip必须与public ip和VIP在一个子网. 在11gR2之前配置TNS连接串使用的都是VIP,如果RAC集群添加节点或VIP有变化,就需要对所有的客户端的TNS配置进行修改,这样很麻烦,引入SCAN后就省去了这些麻烦.启用SCAN 之后,会在数据库与客户端之间

CentOS7安装Oracle 11gR2 安装

概述 Oracle 在Linux和window上的安装不太一样,公司又是Linux系统上的Oracle,实在没辙,研究下Linux下Oracle的使用,oracle默认不支持CentOS系统安装,所以安装的时候,需要修改部分属性,先参考同行博客和自己安装实践,总结下安装流程. 准备工作 1.下载Oracle安装包:linux.x64_11gR2_database_1of2.zip 和 linux.x64_11gR2_database_2of2.zip ,可以下载到本地,通过ftp服务上传到Lin

Oracle Study之--AMD CPU安装Oracle 11gR2 RAC错误

Oracle Study之--AMD CPU安装Oracle 11gR2 RAC错误 系统环境: 操作系统: RedHat  EL55     Oracle :     Oracle 11gR2 Grid +  Oracle 1.错误现象 [[email protected] install]# /u01/11.2.0/grid/root.shRunning Oracle 11g root.sh script... The following environment variables are 

Oracle 11gR2光钎链路切换crs服务发生crash

Oracle 11gR2光钎链路切换crs服务发生crash 背景: 我们将Oracle 11gR2(11.2.0.4)在RedHat EnterPrise 5.8上通过RDAC完成的多路径链路冗余,在部署完成后,我们需要做多路径链路冗余测试,我们的光钎链路连接方式如下.我们做多路径测试完成了如下几个组合: 拔线测试组合一: 1. 先拔下光钎链路 ②和④ 一切正常没有问题:插上五分钟后执行第2步. 2. 再拔下光钎链路 ①和③ 数据库服务正常,crs进程crash无法访问,手工重启crs进程即可

CentOS7 之安装 Oracle 11gR2

一.准备工作 1.下载Oracle安装包:linux.x64_11gR2_database_1of2.zip 和 linux.x64_11gR2_database_2of2.zip ,可以下载到本地,通过ftp服务上传到Linux系统(参考CentOS7 FTP服务器搭建),也可以使用Linux系统的wget命令,下载文件包: 2.创建运行oracle数据库的系统用户和用户组: 用Root账号登录,运行下面指令,创建所需要用户和用户组,分组原因参考网址 groupadd oinstall #创建