принудительный запрос к v $ session_longops - PullRequest
3 голосов
/ 27 июня 2011

У меня есть запрос, выполнение которого занимает много времени (отдельная операция).Но этот запрос не указан в v $ session_longops.Как заставить запрос быть помещенным в v $ session_longops.

1 Ответ

4 голосов
/ 28 июня 2011

К сожалению, если вы говорите об одном запросе SQL, вы, вероятно, не сможете заставить его отображаться в V$SESSION_LONGOPS.Oracle записывает запрос в V$SESSION_LONGOPS, когда один шаг занимает более 6 секунд.Но у вас может быть очень длительный запрос, который состоит из множества очень коротких шагов.Например, объединение вложенных циклов, когда внутренние и внешние запросы используют индекс для извлечения данных, может выполняться в течение длительного времени, но ни одна отдельная операция не может занимать более небольшой доли секунды.Если это так, то обычно стоит сравнить расчетную мощность оптимизатора с фактической мощностью.Вполне возможно, что Oracle выполняет большое количество коротких операций, потому что недооценивает мощность различных этапов операции.Получение более точных оценок для оптимизатора может привести как к более эффективному плану запросов, так и к более длительным операциям, отслеживаемым в V$SESSION_LONGOPS.

Если вы говорите о процессе PL / SQL, в котором возникает один или несколько SQL-запросовзапросы, комментарий Раджеша пятно на.Вы можете использовать метод DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS для отслеживания хода процесса PL / SQL в V$SESSION_LONGOPS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...