Quali sono le cause di una situazione di stallo con Oracle?

June 7

Quali sono le cause di una situazione di stallo con Oracle?


Deadlock sono frustranti. Se si richiede l'accesso a informazioni specifiche sul computer, ad esempio, il computer non può fornire con l'accesso quando un deadlock accade. Un deadlock si verifica in Oracle quando due sessioni tentano di utilizzare la stessa risorsa. Il codice di errore "ORA-00060" segnala una situazione di stallo in Oracle. I quattro tipi principali di deadlock in Oracle sono generali, transazione autonoma, indice bitmap e chiave esterna non indicizzata.

Deadlock generale

Un deadlock generale si verifica in Oracle quando due sessioni indipendenti devono accedere alla stessa risorsa nello stesso momento. Ogni sessione attende l'altra sessione per rilasciare la risorsa. Alla fine, Oracle sceglie arbitrariamente una delle sessioni e produce un errore. Purtroppo, anche se una sessione riceve un errore, la risorsa utilizza rimane bloccato. Per evitare questo tipo di stallo, tutte codifica Oracle deve essere scritto in modo che i processi avvengono sempre nello stesso ordine. In altre parole, gli utenti devono codificare tutti i processi di iniziare con la stessa risorsa e procedere attraverso le altre risorse in ordine numerico.

transazione autonoma

Una transazione autonoma è una sessione che è programmato per operare una seconda sessione in sé. Deadlock si verificano in una transazione autonoma quando la sessione secondaria e la sessione genitore competono per le stesse risorse. Come con una situazione di stallo generale, entrambe le sessioni attendono il rilascio di una risorsa prima di rilasciare la loro risorsa corrente. Oracle quindi produce un codice di errore situazione di stallo, ma ancora una volta le risorse restano bloccati. Come con un deadlock generale, un deadlock un'operazione autonoma è il risultato di pratiche di codifica incoerenti. Assicurando tutti i processi partono da una determinata risorsa e il progresso in ordine, non si verificherà un deadlock autonoma.

Indice bitmap

Un indice bitmap viene utilizzato quando i dati vengono memorizzati e si verifica molto poco la manipolazione dei dati. Un deadlock indice bitmap si verifica quando la manipolazione dei dati è tentata su righe della tabella che vengono utilizzati da tale indice bitmap. Il deadlock è causato da blocchi di indice essendo in uso quando la manipolazione dei dati è tentato. Purtroppo, questo tipo di stallo è pressoché inevitabile. Alcuni manipolazione dei dati sempre sarà necessario per un indice bitmap, anche se è solo per aggiornare l'indice. La necessità di manipolazione dei dati rende questo tipo deadlock difficile da evitare.

Non indicizzati chiave esterna

Una chiave esterna non indicizzata è una causa comune di stallo in Oracle, ma è anche una causa facilmente risolto. Il processo di questa situazione di stallo comporta un record padre cercando di accedere alle informazioni in una sottotabella. Un sottotabella, o tabella figlio, è una tabella all'interno del record padre originale. La chiave esterna non indicizzata è nella tabella figlio. Nel tentativo di eseguire la manutenzione, Oracle blocca l'intera tabella figlio, che aumenta la possibilità di un deadlock si verifichi. Il modo migliore per garantire questo tipo di situazione di stallo non si verifica è quello di indicizzare tutti i tasti.