From:Steve Adams
Date:01-Nov-2000 11:45
Subject:   Deadlocks with no rows waited

For TM locks the first id value is the OBJECT_ID from DBA_OBJECTS. In this case the deadlock involves objects 12293 and 12301. Session 74 has a lock on a row in object 12293 and wants one on a row in object 12301. But first, it must get a lock on the table in SX mode, and is blocked by the conflicting table lock held in S mode by session 15. The "no row" reflects that it is waiting for a table lock, not a row lock. At the same time, session 15 wants to convert its SX lock on object 12293 to SSX mode and is blocked by the SX lock held by session 74 in association with the row lock that it holds in that table.

The question is, If session 74 is just doing inserts and deletes, why does it want shared mode locks on these tables? The normal answer is that unless the application is attempting explicit locking, then it is due to a missing foreign key index on one of these tables or a related table. If so, you should be able to identify the problem with the APT script missing_fk_indexes.sql on the Ixora web site.

I am encountering deadlocks on inserts and deletes with no rows waited. A portion of the user dump trc file:

Deadlock graph:
                       ---------Blocker(s)--------  ---------Waiter(s)---------
Resource Name          process session holds waits  process session holds waits
TM-0000300d-00000000        23      15     S             31      74          SX
TM-00003005-00000000        31      74    SX             23      15    SX   SSX
session 15: DID 0001-0017-00000002      session 74: DID 0001-001F-00000002
session 74: DID 0001-001F-00000002      session 15: DID 0001-0017-00000002
Rows waited on:
Session 74: no row
Session 15: no row
no other errors in the alert file. This is a 3rd party app and the vendor basically says it is not his application. Oracle was not much help, sending me lock detection scripts which are good unless I can capture the lock before the dump file is written.