Вопрос

У меня есть трассировка от машины, где следующий запрос, казалось, был подвешен на дни:

SELECT table_name FROM user_tables
.

Что может генерировать такой замок?Пользователи никогда не могут изменять эту таблицу;И было много последующих экземпляров этого запроса, которое успешно побежало.

Это было полезно?

Решение

Так, поскольку состояние больше не существует, нет способа сказать, что произошло.

Однако в будущем, если это или что-то подобное происходит снова, вы захотите использовать интерфейс ждать Oracle. То есть посмотрите на V$SESSION.

Во-первых, вы захотите определить, будет ли процесс вращаться (то есть на CPU) или блокировка (то есть ждем на событии ожидания). Способ определить, что это посмотреть на столбец STATE:

    .
  • Если состояние 'WAITING', то сеанс заблокирован. Если это так, то столбец событий должен описать, на каком случае сеанс ждет сеанс.
  • Если государство - это что-то другое, чем «ожидание», то сеанс находится на процессоре, а столбец событий - это последнее, что он ждал.
      .
    • Если состояние 'WAITED KNOWN TIME', то wait_time - это время ждали в сетьсекунде.
    • Если состояние 'WAITED SHORT TIME', то сеанс ждал меньше, чем сентиюка.
    • Если состояние 'WAITED UNKNOWN TIME', то время ждал, не известен, потому что timed_statistics был установлен на false для сеанса.

Надеюсь, что помогает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top