Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: Enqueue TX level 4 wait -- blocks dump

Re: Enqueue TX level 4 wait -- blocks dump

From: Jonathan Lewis <jonathan_at_jlcomp.demon.co.uk>
Date: Mon, 3 May 2004 18:25:00 +0100
Message-ID: <003b01c43133$90b5c060$7102a8c0@Primary>

Can you clarify your comments about ITL and ITC.

Do you mean that the value from ini_trans in dba_tables and dba_indexes were 10 and 11 respectively ?

If so, then you should expect the number of ITL slots in the tables and indexes to be 10 and 11 (assuming the initrans was not altered on the fly after data had been entered). If you want to determine the actual concurrency from the block dumps, you would have to guess, based on how close the SCNs were in the ITL entries.

TX/4 arises from many causes - the most likely one on inserts into heap tables relates to collision on primary keys and foreign keys.

Could you have multiple processes trying to insert the same PK, waiting, failing, then using the next value from a sequence number to try again ? Could you have processes inserting child rows for parent rows that had not yet been created ... and so on.

Regards

Jonathan Lewis
http://www.jlcomp.demon.co.uk

The Co-operative Oracle Users' FAQ
http://www.jlcomp.demon.co.uk/faq/ind_faq.html

Optimising Oracle Seminar
http://www.jlcomp.demon.co.uk/seminar.html

June 2004 UK Manchester
July 2004 Iceland
July 2004 USA California
Aug 2004 USA North Carolina
Sept 2004 UK Manchester
Sept 2004 USA NYC
Oct 2004 USA Boston

Hi everybody,
I have a question on TX enqueues.
I'm seeing a lot of TX enqueues level 4 on a table. I have also found that the statement that was waiting on this wait was an ***INSERT*** operation.

Oracle 8i
Table:
ITL = 10
4 FREELISTS
4 FREELISTS GROUPS
PCTFREE 20 I dumped every table block and checked the ITC entry. I found ITC was almost always 10 for every block.
Then I checked for the average free space within the blocks, (supposing the block had needed an additional ITL slot) and again I found that in every block there was at least 80 bytes free. (as Avsp reported).

So I went for the indexes

ITL = 11
4 FREELISTS
4 FREELISTS GROUPS
PCTFREE 10 and I found no problem at all in the ITC entries.(most of them were 11) But I found many blocks with kdxcoavs = 0. (no free space on them).

Taking into consideration that we're talking about an INSERT, Can it be possible that the TX 4 is being caused by an ITL shortage in the index?

(All slots are being used and there's no free space in the block, so when a new INSERT needs to put its entry in that block, despite of the fact that this block will surely need to split because there's no free space left in it, the transaction first needs to get a free ITL slot and as they are all taken and there's no free space it has to wait in a enqueue TX 4. Is this the way it works on this case?)

What do you think?

Thanks,
Diego.



Please see the official ORACLE-L FAQ: http://www.orafaq.com

To unsubscribe send email to: oracle-l-request_at_freelists.org put 'unsubscribe' in the subject line.
--

Archives are at http://www.freelists.org/archives/oracle-l/ FAQ is at http://www.freelists.org/help/fom-serve/cache/1.html
Received on Mon May 03 2004 - 12:22:43 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US