Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 PL/SQL блог  [new]
Dr. Oracle
Member

Откуда:
Сообщений: 40
Здравствуйте, коллеги.

Не подскажите, есть ли возможность как то проверить что за запрос выполняется на данный момент внутри pl/sql блока, вернее не совсем так. Приведу пример, что я имею ввиду:

Предположим я вижу, что на данный момент сессия делает следующее:
=======================================
BEGIN
ALEX.MAKEREPORT(:1, :2, :3);
END;
/
=======================================

Процедура выполняется дольше обычного, как утверждает пользователь. Однако, как мне понять что происходит "внутри"? Какие запросы выполняются внутри данной процедуры?

Мне это необходимо выяснить, что проверить почему она долго выполняется ... может план поменялся у какого-то запроса или что другое.

Есть ли способ это выяснить, что конкретно сейчас выполняется данной процедурой в БД?

Спасибо.
9 ноя 18, 17:33    [21729953]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
maverick2104
Member

Откуда:
Сообщений: 317
Dr. Oracle,

Ну так открой процедуру и посмотри .
9 ноя 18, 18:22    [21730001]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
-2-
Member

Откуда:
Сообщений: 15330
Dr. Oracle
я вижу, что на данный момент сессия делает следующее
Где видишь?
Dr. Oracle
Какие запросы выполняются внутри данной процедуры?
Текущий запрос отражен в v$session.
9 ноя 18, 18:49    [21730030]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10051
Dr. Oracle,

OEM есть? Если есть то там все с картинками :). Если нет, то GV$SESSION, GV$SQL, GV$SQL_PLAN, ...

SY.
9 ноя 18, 18:49    [21730032]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
Dr. Oracle
Member

Откуда:
Сообщений: 40
Я уже заглядывал в v$session. Собственно информация о том, что выполняется pl/sql блок и взята оттуда. OEM, к сожелению, нет. Сама процедура +5000 строк. Писал ее не я естественно, запросов несколько десятков, а на каком конкретно тормозить начало мне и нужно выяснить. Активных сессий в базе несколько сотен, моя конкретно выполняет эту процедуру, повторюсь инфа из v$session.

Может у кого то есть конкретный селект, который поможет мне отыскать проблемный запрос?

Благодарю.
9 ноя 18, 20:09    [21730095]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
Dr. Oracle
Member

Откуда:
Сообщений: 40
-2-,
Текущий запрос не отражен в v$session, там как раз написано только, что выполняется pl/sql блок, который я написал в первом посте.

А мне как раз и нужно понять какой запрос внутри процедуры сейчас бежит ...
9 ноя 18, 20:12    [21730101]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
Dr. Oracle
Member

Откуда:
Сообщений: 40
maverick2104,

Вы видимо не совсем понимаете в чем мой вопрос. В процедуре несколько десятков селектов и всего прочего. Писал ее не я, так что это можно сказать невозможно просто глядя на код, что то определить.
9 ноя 18, 20:14    [21730102]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
Elic
Member

Откуда:
Сообщений: 29990
Dr. Oracle
Писал ее не я,
Чудак, а чего тема так пафосно называется? Ты ничего не попутал? Уверен, что сможешь потянуть целый "блог"?
9 ноя 18, 21:03    [21730130]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
sqr_khv
Member

Откуда:
Сообщений: 6
Dr. Oracle, возьми, запусти на тестовой базе (если нельзя проверить на бою) и посмотри время выполнения построчно (в девелопере есть для этого Test Window, profiler). На какой строке зависает надолго, будет видно. В чем проблема? Я так всегда делаю, перед накатом на бой, если что-то не так.
9 ноя 18, 21:06    [21730132]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
Dr. Oracle
Member

Откуда:
Сообщений: 40
sqr_khv,

Дело в том, что на тесте данную проблему не воспроизвести. Эта, как и любая перфоманс задача, специфична для данного инстанса.

Мне нужно иметь инструмент, в идеале сиквел запрос, с помощью которого можно найти что бежит сейчас внутри pl/sql блока данной мне сессии.

Неужели никто не сталкивался с такой проблемой, когда тебе звонят и просят заробраться почему сегодня эта штука бежит на час дольше обычного?

Благодарю.
9 ноя 18, 21:53    [21730152]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
Dr. Oracle
Member

Откуда:
Сообщений: 40
Elic,

Дружище, это банальная опечатка. Возможности подкорректировать не нашел.

Не лень же тебе было это писать.
9 ноя 18, 22:25    [21730163]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
Dr. Oracle
Member

Откуда:
Сообщений: 40
Если есть модераторы - исправьте, пожалуйста, "блог" на "блок", а то людей путаю почему зря.
9 ноя 18, 22:28    [21730167]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
кит северных морей
Member

Откуда: krsk / nyc / krsk
Сообщений: 882
Dr. Oracle,

вам русским языком сказали - смотрите v$session.sql_id. если сессия выполняет запрос - он будет там. если сессия выполняет plsql (бесконечный цикл и т.п.) - тогда вы увидите вызов процедуры.
9 ноя 18, 22:29    [21730169]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
Dr. Oracle
Member

Откуда:
Сообщений: 40
кит северных морей,

Вы не понимаете, читаете предыдущие посты или просто свои пять копеек вставить? Я проверил v$session, данная сессия выполняет pl/sql, но выполняется он дольше обычного, причина в каком то из десятков селектов которые бегут в данной процедуре.

Мне нужно выяснить, на каком идёт затык, если это возможно. Если это нельзя выяснить каким то способом помимо предложенного с помощью OEM или SQL Developer просто дайте знать.

Неужели я не ясно излагаю свою мысль?
9 ноя 18, 22:34    [21730175]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
кит северных морей
Member

Откуда: krsk / nyc / krsk
Сообщений: 882
Dr. Oracle,

ещё раз. поле sql_id изменяется в реальном времени в зависимости от того, что сессия делает ПРЯМО СЕЙЧАС. если она выполняет запрос - значит, там будет id запроса - не важно, вызываете вы его через 50 уровней вложенности plsql, или напрямую, нажав ctrl+enter в IDE.

если там нет запроса - значит, ваша сессия ПРЯМО СЕЙЧАС выполняет не запрос, а что-то ещё. как вариант - она выполняет мелкие запросы в цикле в огромном количестве, и вы не успеваете их увидеть. в этом случае вам нужен либо профайлер, либо трассировка.
9 ноя 18, 22:47    [21730179]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
Dr. Oracle
Member

Откуда:
Сообщений: 40
кит северных морей,

Ясно. Большое спасибо за ответ. Не уверен, что вы правы, вернее понимаете что я имею ввиду. Буду рад обсудить в личке или скайпе, если есть такая возможность.

Благодарю.
9 ноя 18, 22:56    [21730184]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
кит северных морей
Member

Откуда: krsk / nyc / krsk
Сообщений: 882
Dr. Oracle,

я отвечал на заданный вами предельно конкретный вопрос.

вы хотите "проверить что за запрос выполняется на данный момент внутри pl/sql блока" (вероятно, исходя из предположения, что сломался один конкретный запрос, который "держит" всю процедуру)? v$session.sql_id, точка.

проблема в том что вы задали неправильный вопрос.

вам не нужно знать, какой запрос выполняется прямо сейчас. вам нужно знать, какой запрос/какая часть процедуры выполняется дольше всего. инструменты для этого я уже озвучил - DBMS_PROFILER, SQL Trace.
9 ноя 18, 23:18    [21730192]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
Dr. Oracle
Member

Откуда:
Сообщений: 40
кит северных морей,

Ещё раз большое спасибо за обратную связь. Воспозуюсь Вашими рекомендациями. Возможно, я не совсем корректно изложил вопрос, приношу свои извинения.

Спасибо.
9 ноя 18, 23:27    [21730203]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
Elic
Member

Откуда:
Сообщений: 29990
Dr. Oracle
Не уверен, что вы правы, вернее понимаете что я имею ввиду.
У тебя слишком большое самомнение.
А кроме sql_id, есть ещё и PLSQL_*_ID
10 ноя 18, 08:38    [21730311]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
EvgeniaMakarova
Member

Откуда:
Сообщений: 87
посмотрите на AWR report в ваш проблематичный период времени. Можно прямо из SQL Developera смотреть
10 ноя 18, 13:05    [21730387]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
Valergrad
Member

Откуда:
Сообщений: 704
gv$active_session_history / dba_hist_active_sess_history

спасет отца русской демократии - если есть. Там прекрасно видно какой sql_id дольше всего выполняется.
Если нет - видно top_level_sql_id.
10 ноя 18, 15:17    [21730453]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
Valergrad
Member

Откуда:
Сообщений: 704
Valergrad
gv$active_session_history / dba_hist_active_sess_history

спасет отца русской демократии - если есть. Там прекрасно видно какой sql_id дольше всего выполняется.
Если нет - видно top_level_sql_id.


Сорри, запостилось раньше времени. Читать как:

Valergrad
gv$active_session_history / dba_hist_active_sess_history

спасет отца русской демократии - если есть. Там прекрасно видно какой sql_id/top_level_sql_id дольше всего выполняется.
Если нет - есть snapper
10 ноя 18, 15:18    [21730454]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
Dr. Oracle,

Короче, сделай ashdump/ashrpti по этой сессии за период выполнения и выложи сюда - хоть будет от чего оттолкнуться.
10 ноя 18, 15:21    [21730456]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
SkilledJunior
Member

Откуда:
Сообщений: 303
Valergrad
Там прекрасно видно какой sql_id дольше всего выполняется.

Это если проблема в одном запросе, возможна ситуация когда просел не один запрос и возможна ситуация, когда небольшой и быстро выполняющийся запрос стал работать медленнее, допустим вместо 0.02 секунд стал отрабатывать за 0.6 секунд, если он находится в цикле на большое количество повторений, то общее время выполнения процедуры вырастет в десятки раз. Ловить что то в портянке на 5000 строк неблагодарное занятие.
10 ноя 18, 17:59    [21730523]     Ответить | Цитировать Сообщить модератору
 Re: PL/SQL блог  [new]
Деев И.
Member

Откуда: отсюда
Сообщений: 783
До кучи можно и про обычную трассировку сессии + TKPROF напомнить...
14 ноя 18, 16:42    [21734398]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить