Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / PL/SQL блог / 25 сообщений из 26, страница 1 из 2
09.11.2018, 17:33
    #39730790
Dr. Oracle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
Здравствуйте, коллеги.

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

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

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

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

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

Спасибо.
...
Рейтинг: 0 / 0
09.11.2018, 18:22
    #39730818
maverick2104
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
Dr. Oracle,

Ну так открой процедуру и посмотри .
...
Рейтинг: 0 / 0
09.11.2018, 18:49
    #39730830
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
Dr. Oracleя вижу, что на данный момент сессия делает следующееГде видишь?
Dr. OracleКакие запросы выполняются внутри данной процедуры?Текущий запрос отражен в v$session.
...
Рейтинг: 0 / 0
09.11.2018, 18:49
    #39730831
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
Dr. Oracle,

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

SY.
...
Рейтинг: 0 / 0
09.11.2018, 20:09
    #39730853
Dr. Oracle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
Я уже заглядывал в v$session. Собственно информация о том, что выполняется pl/sql блок и взята оттуда. OEM, к сожелению, нет. Сама процедура +5000 строк. Писал ее не я естественно, запросов несколько десятков, а на каком конкретно тормозить начало мне и нужно выяснить. Активных сессий в базе несколько сотен, моя конкретно выполняет эту процедуру, повторюсь инфа из v$session.

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

Благодарю.
...
Рейтинг: 0 / 0
09.11.2018, 20:12
    #39730856
Dr. Oracle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
-2-,
Текущий запрос не отражен в v$session, там как раз написано только, что выполняется pl/sql блок, который я написал в первом посте.

А мне как раз и нужно понять какой запрос внутри процедуры сейчас бежит ...
...
Рейтинг: 0 / 0
09.11.2018, 20:14
    #39730857
Dr. Oracle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
maverick2104,

Вы видимо не совсем понимаете в чем мой вопрос. В процедуре несколько десятков селектов и всего прочего. Писал ее не я, так что это можно сказать невозможно просто глядя на код, что то определить.
...
Рейтинг: 0 / 0
09.11.2018, 21:03
    #39730877
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
Dr. OracleПисал ее не я,Чудак, а чего тема так пафосно называется? Ты ничего не попутал? Уверен, что сможешь потянуть целый "блог"?
...
Рейтинг: 0 / 0
09.11.2018, 21:06
    #39730879
sqr_khv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
Dr. Oracle, возьми, запусти на тестовой базе (если нельзя проверить на бою) и посмотри время выполнения построчно (в девелопере есть для этого Test Window, profiler). На какой строке зависает надолго, будет видно. В чем проблема? Я так всегда делаю, перед накатом на бой, если что-то не так.
...
Рейтинг: 0 / 0
09.11.2018, 21:53
    #39730889
Dr. Oracle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
sqr_khv,

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

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

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

Благодарю.
...
Рейтинг: 0 / 0
09.11.2018, 22:25
    #39730895
Dr. Oracle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
Elic,

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

Не лень же тебе было это писать.
...
Рейтинг: 0 / 0
09.11.2018, 22:28
    #39730899
Dr. Oracle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
Если есть модераторы - исправьте, пожалуйста, "блог" на "блок", а то людей путаю почему зря.
...
Рейтинг: 0 / 0
09.11.2018, 22:29
    #39730900
кит северных морей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
Dr. Oracle,

вам русским языком сказали - смотрите v$session.sql_id. если сессия выполняет запрос - он будет там. если сессия выполняет plsql (бесконечный цикл и т.п.) - тогда вы увидите вызов процедуры.
...
Рейтинг: 0 / 0
09.11.2018, 22:34
    #39730906
Dr. Oracle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
кит северных морей,

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

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

Неужели я не ясно излагаю свою мысль?
...
Рейтинг: 0 / 0
09.11.2018, 22:47
    #39730908
кит северных морей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
Dr. Oracle,

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

если там нет запроса - значит, ваша сессия ПРЯМО СЕЙЧАС выполняет не запрос, а что-то ещё. как вариант - она выполняет мелкие запросы в цикле в огромном количестве, и вы не успеваете их увидеть. в этом случае вам нужен либо профайлер, либо трассировка.
...
Рейтинг: 0 / 0
09.11.2018, 22:56
    #39730912
Dr. Oracle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
кит северных морей,

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

Благодарю.
...
Рейтинг: 0 / 0
09.11.2018, 23:18
    #39730917
кит северных морей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
Dr. Oracle,

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

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

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

вам не нужно знать, какой запрос выполняется прямо сейчас. вам нужно знать, какой запрос/какая часть процедуры выполняется дольше всего. инструменты для этого я уже озвучил - DBMS_PROFILER, SQL Trace.
...
Рейтинг: 0 / 0
09.11.2018, 23:27
    #39730926
Dr. Oracle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
кит северных морей,

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

Спасибо.
...
Рейтинг: 0 / 0
10.11.2018, 08:38
    #39730970
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
Dr. OracleНе уверен, что вы правы, вернее понимаете что я имею ввиду.У тебя слишком большое самомнение.
А кроме sql_id, есть ещё и PLSQL_*_ID
...
Рейтинг: 0 / 0
10.11.2018, 13:05
    #39731024
EvgeniaMakarova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
посмотрите на AWR report в ваш проблематичный период времени. Можно прямо из SQL Developera смотреть
...
Рейтинг: 0 / 0
10.11.2018, 15:17
    #39731064
Valergrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
gv$active_session_history / dba_hist_active_sess_history

спасет отца русской демократии - если есть. Там прекрасно видно какой sql_id дольше всего выполняется.
Если нет - видно top_level_sql_id.
...
Рейтинг: 0 / 0
10.11.2018, 15:18
    #39731065
Valergrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
Valergradgv$active_session_history / dba_hist_active_sess_history

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

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

Valergradgv$active_session_history / dba_hist_active_sess_history

спасет отца русской демократии - если есть. Там прекрасно видно какой sql_id/top_level_sql_id дольше всего выполняется.
Если нет - есть snapper
...
Рейтинг: 0 / 0
10.11.2018, 15:21
    #39731067
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
Dr. Oracle,

Короче, сделай ashdump/ashrpti по этой сессии за период выполнения и выложи сюда - хоть будет от чего оттолкнуться.
...
Рейтинг: 0 / 0
10.11.2018, 17:59
    #39731102
SkilledJunior
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
ValergradТам прекрасно видно какой sql_id дольше всего выполняется.
Это если проблема в одном запросе, возможна ситуация когда просел не один запрос и возможна ситуация, когда небольшой и быстро выполняющийся запрос стал работать медленнее, допустим вместо 0.02 секунд стал отрабатывать за 0.6 секунд, если он находится в цикле на большое количество повторений, то общее время выполнения процедуры вырастет в десятки раз. Ловить что то в портянке на 5000 строк неблагодарное занятие.
...
Рейтинг: 0 / 0
14.11.2018, 16:42
    #39733113
Деев И.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PL/SQL блог
До кучи можно и про обычную трассировку сессии + TKPROF напомнить...
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / PL/SQL блог / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]