Domanda

Ho una traceback da una macchina in cui la seguente query sembrava essere appesa per giorni:

SELECT table_name FROM user_tables
.

Cosa potrebbe generare un blocco del genere?Gli utenti non possono mai modificare questa tabella;E c'erano un sacco di casi successivi di questa query che correva con successo.

È stato utile?

Soluzione

Quindi, poiché la condizione non esiste più, non c'è modo di dire cosa è successo.

Tuttavia, in futuro, se questo o qualcosa di simile si verificano di nuovo, ti consigliamo di utilizzare l'interfaccia di attesa di Oracle. Cioè, guarda V$SESSION.

In primo luogo, ti consigliamo di determinare se il processo sta girando (I.e., sulla CPU) o il blocco (I.e., in attesa di un evento di attesa). Il modo per determinarlo, è guardare la colonna STATE:

    .
  • Se lo stato è 'WAITING', la sessione è bloccata. Se questo è il caso, la colonna evento dovrebbe descrivere quale evento è in attesa della sessione.
  • Se lo stato è qualcosa di diverso da "Aspettando", allora la sessione è sulla CPU, e la colonna evento è l'ultima cosa che ha aspettato.
      .
    • Se lo stato è 'WAITED KNOWN TIME', allora wait_time è il tempo atteso in centisecondi.
    • Se lo stato è 'WAITED SHORT TIME', la sessione ha aspettato meno di un centesimo.
    • Se lo stato è 'WAITED UNKNOWN TIME', quindi il tempo atteso non è noto perché Timed_statistics è stato impostato su false per la sessione.

Spero che ti aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top