ITL deadlocks question

From: McPeak, Matt <vxsmimmcp_at_subaru.com>
Date: Fri, 24 Jan 2014 19:24:13 +0000
Message-ID: <D7864FA3E7830B428CB2A5A5301B63EE7D290DE9_at_S7041VA005.soa.soaad.com>



I have a situation where the users like to submit eight (8) copies of an I/O intensive job simultaneously - one job for each of our product lines.

The job operates on tables that are not partitioned (or otherwise physically separated) by product line, so that one database block may contain rows for many different product lines.

Occasionally, some of the processes are failing due to ITL deadlocks.

My question is: suppose you have:

Block 1  => ITL: txn A, txn B  with txn C waiting.
Block 2  => ITL: txn B, txn C  with txn A waiting...
Block 3  => ITL: txn C, txn *R*  with txn B waiting...

Is Oracle's ITL deadlock detection smart enough to realize that, in block #1 for example, txn C is waiting for *either* txn A *or* txn B to end, but that it need not wait for both?

In other words, is it smart enough to know that the situation above is *not* a deadlock? (Because txn R can still end, then txn B, then both txn C and txn A can continue.)

The two tables involved are each in their own single table hash cluster, if that matters.

Thanks in advance for any help!

Matt

--
http://www.freelists.org/webpage/oracle-l
Received on Fri Jan 24 2014 - 20:24:13 CET

Original text of this message