Re: High value of "enq: TX - allocate ITL entry" waits but wait events are on an index not affected by the SQL statement

From: Martin Klier <usn_at_usn-it.de>
Date: Mon, 22 Jul 2013 17:02:41 +0200
Message-ID: <51ED4991.20600_at_usn-it.de>



Hi Thomas,

to explain this behavior, we should know a little bit more about the transactions happening.

ITL entries are maintained on block level and work for row level OF A TABLE, so you can get locked by updating the same row - independent of the columns you are touching.

The wait event "enq: TX - allocate ITL entry" means, that you have more open transactions then you have free ITL slots there. So a new slot has to be created. After this, the locking mechanism can start doing its job.

You can try to
select statistics_name, value
from v$segment_statistics
where object_name in (table, index1, index2, index3); to find out more stuff about this issue in real time.

To answer your final question: I think increasing the space for the block header can help, but I'd also have a look at the number of transactions open at one time.

HTH Regards
Martin

Thomas Kellerer schrieb:

> What I don't understand is the fact that the UPDATE statement does not touch any of the columns from ORDERS_IDX1 index. The second statement (bgy3mh3wby1js) is an insert statement into the ORDERS table which naturally would touch the index ORDERS_IDX1 (and all the others).
>
> Could that be caused by index block splits due to increasing in the ITL?
> The wait count is also way higher than the actual execution count of 1019 the UPDATE statement in the time frame in question.

-- 
Usn's IT Blog for Oracle and Linux
http://www.usn-it.de

--
http://www.freelists.org/webpage/oracle-l
Received on Mon Jul 22 2013 - 17:02:41 CEST

Original text of this message