Pregunta

Tengo un rastreo de una máquina donde se realiza la siguiente consulta parecía colgado por días:

SELECT table_name FROM user_tables

Lo que podría generar este tipo de bloqueo?Los usuarios nunca puede modificar esta tabla;y había un montón de instancias posteriores de esta consulta se ejecutó correctamente.

¿Fue útil?

Solución

Así que, ya que la condición ya no existe, no hay ninguna manera de saber lo que pasó.

Sin embargo, en el futuro, si esto o algo similar sucede de nuevo, usted querrá usar Oracle de espera de la interfaz.Que es, mira en V$SESSION.

En primer lugar, usted querrá determinar si el proceso está girando (es decir, en la CPU) o bloquear (es decir, a la espera de una espera de eventos).La forma de determinar que, es mirar a la STATE columna:

  • Si el ESTADO es 'WAITING', a continuación, la sesión está bloqueado.Si ese es el caso, entonces la columna EVENTO debe describir lo que caso de que la sesión está esperando.
  • Si el ESTADO es algo distinto de la 'ESPERA', entonces la sesión se encuentra en el CPU, y en el CASO de la columna es la última cosa que esperar.
    • Si el ESTADO es 'WAITED KNOWN TIME', a continuación, WAIT_TIME es el tiempo esperado en centiseconds.
    • Si el ESTADO es 'WAITED SHORT TIME', a continuación, la sesión esperaba menos de un centisecond.
    • Si el ESTADO es 'WAITED UNKNOWN TIME', entonces el tiempo esperado no se sabe porque timed_statistics se establece en FALSE para la sesión.

Espero que ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top