Possiedo un pacchetto Oracle DB che causa abitualmente ciò che ritengo sia un deadlock ITL (Interest Transaction List). La parte rilevante di un file di traccia è sotto.Identificazione e risoluzione di Oracle ITL Deadlock
Deadlock graph:
---------Blocker(s)-------- ---------Waiter(s)---------
Resource Name process session holds waits process session holds waits
TM-0000cb52-00000000 22 131 S 23 143 SS
TM-0000ceec-00000000 23 143 SX 32 138 SX SSX
TM-0000cb52-00000000 30 138 SX 22 131 S
session 131: DID 0001-0016-00000D1C session 143: DID 0001-0017-000055D5
session 143: DID 0001-0017-000055D5 session 138: DID 0001-001E-000067A0
session 138: DID 0001-001E-000067A0 session 131: DID 0001-0016-00000D1C
Rows waited on:
Session 143: no row
Session 138: no row
Session 131: no row
Non ci sono indici bitmap su questa tabella, quindi non è la causa. Per quanto posso dire, la mancanza di "Rows wait on" più la "S" nella colonna Waiter Waiting indica che si tratta di un deadlock ITL. Inoltre, la tabella viene scritta abbastanza spesso (circa 8 inserimenti o aggiornamenti contemporaneamente, fino a 240 volte al minuto), quindi un deadlock ITL sembra una forte possibilità.
Ho aumentato il parametro INITRANS della tabella e gli indici sono a 100 e ho aumentato il PCT_FREE sul tavolo da 10 a 20 (quindi ho ricostruito gli indici), ma i deadlock si verificano ancora. Il deadlock sembra accadere più spesso durante un aggiornamento, ma potrebbe essere solo una coincidenza, dato che l'ho tracciato solo un paio di volte.
Le mie domande sono duplice:
1) Si tratta di un blocco critico ITL?
2) Se si tratta di un deadlock ITL, che altro si può fare per evitarlo?
Si scopre che questo non era un problema di lire stallo a tutti, ma piuttosto un problema con le chiavi esterne non-indicizzati. L'ho scoperto grazie alla risposta di dpbradley, che mi ha fatto capire che non si trattava di un problema di ITL e mi ha spinto a scoprire quali potrebbero essere le altre cause di un deadlock con "nessuna riga".
Si potrebbe prendere in considerazione la possibilità di postare questo messaggio su serverfault. La mia reazione iniziale è stata quella in cui questo appartiene, ma c'è anche un gusto di programmazione per la domanda. Ad ogni modo potresti catturare un altro paio di occhi che non sono qui. – DCookie