Oracle AWR之-enq: TX - allocate ITL entry
今天收到压力测试期间awr报告,测试人员要我看看数据库是否有可以优化的地方,数据库服务器配置信息:CPU:32*8,内存:480g 单实例数据库:oracle 11.2.0.4。具体分析过程如下:


可以发现,压力测试期间出现队列锁:enq: TX - allocate ITL entry。

通过Segments by ITL Waits发现等待的对象为hqoa_t_busi和hqoa_t_sendfile两张表:

通过sql执行时间发现了关于对象hqoa_t_busi表的dml语句,基本可以确定问题是由于压力测试期间并发大量对于该对象的update语句导致的数据库问题。
到这个地方,问题似乎很清晰了,就是由于表DIRECT_DEBIT_REQUEST的ITL的设置不能够满足并发事务的需求而导致的等待。数据块是oracle能够发出的最小I/O单位。在数据块中,数据块头部的ITL信息是至关重要的。
每当一个事务需要修改一个数据块时,需要在数据块头部获得一个可用的ITL槽,其中记录了当前事务的id,使用的undo数据块地址,还有对应的scn,事务是否提交等信息。如果一个新的事务发现ITL槽已经被使用,会重新
申请一个新的ITL槽,这个过程是动态的,进一步来说,ITL槽的设置是由ini_trans,max_trans来决定的,在10g之后,max_trans参数被忽略了。
对于initrans,maxtrans的默认值,表级为1,索引级为2. 一般来说不需要做特别的设置。可以根据业务的需要来配置。
通过查询相关信息,确定enq: TX - allocate ITL entry等待事件解决办法如下:
| 解决思路有3种 Increase INITRANSA) 1) Depending on the number of transactions in the table we need to alter the value of INITRANS. here it has been changed to 50: alter table INITRANS 50; 2) Then re-organize the table using move (alter table move;) alter index rebuild INITRANS 50; Increase PCTFREEIf the issue is not resolved by increasing INITRANS then try increasing PCTFREE. Increasing PCTFREE holds more space back and so spreads the same number of rows over more blocks. This means that there are more ITL slots available overall : 1) Spreading rows into more number of blocks will also helps to reduce this wait event. alter table PCTFREE 40; 2) Then re-organize the table using move (alter table service_T move;) 3) Rebuild index alter index index_name rebuild PCTFREE 40; A Combination of increasing both INITRANS and PCTFREE1) Set INITRANS to 50 pct_free to 40 alter table PCTFREE 40 INITRANS 50; 2) Re-organize the table using move (alter table move;) alter index rebuild PCTFREE 40 INITRANS 50; | 
对于大表,数据千万级以上的表,initrans建议设置为8~16
对于中级表,数据量在百万到千万级,initrans建议设置为4~8
对于普通的表,initrans建议设置为1~4
解决压力测试期间问题方法如下:
| --update HQOA_T_BUSI set busiId= :1 , title= :2 where busiId = :3; altertable HQOA_T_BUSI pctfree20INITRANS8; altertable HQOA_T_BUSI move; alterindex idx_HQOA_T_BUSI rebuildPCTFREE20INITRANS16; begin dbms_stats.gather_table_stats(ownname =>'OA_36', tabname =>'HQOA_T_BUSI', estimate_percent =>100, cascade=>true, degree=>20); END; select*from HQOA_T_BUSI; selectcount(*)from HQOA_T_BUSI; | 
重新进行压力测试发现:

同样方法处理hqoa_t_sendfile对象后,发现数据库性能正常,而且压力测试也上去了。
Oracle AWR之-enq: TX - allocate ITL entry的更多相关文章
- 【故障处理】队列等待之TX - allocate ITL entry引起的死锁处理
		[故障处理]队列等待之TX - allocate ITL entry引起的死锁处理 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌 ... 
- AWR之-enq TX - row lock contention的性能故障-转
		1 对这一个小时进行AWR的收集和分析,首先,从报告头中看到DB Time达到近500分钟,(DB Time)/Elapsed=8,这个比值偏高: Snap Id Snap Time Sessio ... 
- Tuning “enq:TX – row lock contention” events
		enq是一种保护共享资源的锁定机制,一个排队机制 排它机制从一个事务的第一次改变直到rollback or commit 结束这个事务, TX等待mode是6,当一个session 在一个表的行级锁定 ... 
- ORACLE AWR结合ASH诊断分析enq: TX - row lock contention
		公司用户反馈一系统在14:00~15:00(2016-08-16)这个时间段反应比较慢,于是生成了这个时间段的AWR报告, 如上所示,通过Elapsed Time和DB Time对比分析,可以看出在这 ... 
- ORACLE等待事件:enq: TX - row lock contention
		enq: TX - row lock contention等待事件,这个是数据库里面一个比较常见的等待事件.enq是enqueue的缩写,它是一种保护共享资源的锁定机制,一个排队机制,先进先出(FIF ... 
- [Oracle] enq: TX - row lock contention 优化案例
		依据开发反馈.近期每天早上7:30应用会报警.应用的日志显示数据库连接池满了.新的连接被拒绝. 首先.我做了ASH报告(报告区间:7:25 ~ 7:35),从ASH的等待事件发现enq: TX - r ... 
- Oracle AWR报告指标全解析-11011552
		1-5 Top 5 Timed EventsWaits : 该等待事件发生的次数, 对于DB CPU此项不可用Times : 该等待事件消耗的总计时间,单位为秒, 对于DB CPU 而言是前台进程所消 ... 
- oracle AWR详解
		原文地址:https://blog.csdn.net/elvis_lfc/article/details/52326148 啥是AWR? =============================== ... 
- 记录一则enq: TX - row lock contention的分析过程
		故障描述:与客户沟通,初步确认故障范围大概是在上午的8:30-10:30之间,反应故障现象是Tomcat的连接数满导致应用无法连接,数据库alert中无明显报错,需要协助排查原因. 1.导入包含故障时 ... 
随机推荐
- db2 over()
			说起 DB2 在线分析处理,可以用很好很强大来形容.这项功能特别适用于各种统计查询,这些查询用通常的SQL很难实现,或者根本就无发实现.首先,我们从一个简单的例子开始,来一步一步揭开它神秘的面纱,请看 ... 
- SQLServer------如何让标识列重新开始计算
			方法: DBCC CHECKIDENT (表名, RESEED, ) 
- C#------各种数据库连接字符串编写
			转载: https://www.connectionstrings.com/ 
- Extjs学习笔记--(一vs增加extjs智能感知)
			1,编写class.js var classList=[ "Ext.layout.container.Absolute", "Ext.layout.container.A ... 
- swift - UIDatePicker 的用法
			1.初始化button,datepicker,label等控件,初始化时间格式化器 var datePicker = UIDatePicker() var btnShows = UIBu ... 
- python2.0_day21_web聊天室一
			bbs系统项目中我们用到的ajax不多,但是在聊天室里用到的全是ajax,所以本项目的主要内容就是:前端使用ajax传输json格式的数据是本节的重点以及 前端函数的的使用.http协议的特点是:短链 ... 
- Zookeeper(三)--  JAVA原生API
			一.前提 jar包:zookeeper-3.4.9.jar,slf4j-api-1.6.1.jar,slf4j-log4j12-1.6.1.jar,log4j-1.2.15.jar 二.Demo pa ... 
- osgEarth2.8添加模型
			#include <osgEarthDrivers/model_simple/SimpleModelOptions> SimpleModelOptions modelOptions; mo ... 
- lodash(一)数组
			前言: lodash是一个具有一致接口.模块化.高性能等特性的JavaScript工具库(官网地址:http://lodashjs.com/docs/#_differencearray-values) ... 
- 判断页面中的js方法是否存在,存在就调用它,不存在则忽略
			if(typeof queryResource != 'undefined' && queryResource instanceof Function) queryResource(a ... 
