|
|
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, коллеги. Не подскажите, есть ли возможность как то проверить что за запрос выполняется на данный момент внутри pl/sql блока, вернее не совсем так. Приведу пример, что я имею ввиду: Предположим я вижу, что на данный момент сессия делает следующее: ======================================= BEGIN ALEX.MAKEREPORT(:1, :2, :3); END; / ======================================= Процедура выполняется дольше обычного, как утверждает пользователь. Однако, как мне понять что происходит "внутри"? Какие запросы выполняются внутри данной процедуры? Мне это необходимо выяснить, что проверить почему она долго выполняется ... может план поменялся у какого-то запроса или что другое. Есть ли способ это выяснить, что конкретно сейчас выполняется данной процедурой в БД? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 17:33 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
Dr. Oracle, Ну так открой процедуру и посмотри . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 18:22 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
Dr. Oracleя вижу, что на данный момент сессия делает следующееГде видишь? Dr. OracleКакие запросы выполняются внутри данной процедуры?Текущий запрос отражен в v$session. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 18:49 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
Dr. Oracle, OEM есть? Если есть то там все с картинками :). Если нет, то GV$SESSION, GV$SQL, GV$SQL_PLAN, ... SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 18:49 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
Я уже заглядывал в v$session. Собственно информация о том, что выполняется pl/sql блок и взята оттуда. OEM, к сожелению, нет. Сама процедура +5000 строк. Писал ее не я естественно, запросов несколько десятков, а на каком конкретно тормозить начало мне и нужно выяснить. Активных сессий в базе несколько сотен, моя конкретно выполняет эту процедуру, повторюсь инфа из v$session. Может у кого то есть конкретный селект, который поможет мне отыскать проблемный запрос? Благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 20:09 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
-2-, Текущий запрос не отражен в v$session, там как раз написано только, что выполняется pl/sql блок, который я написал в первом посте. А мне как раз и нужно понять какой запрос внутри процедуры сейчас бежит ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 20:12 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
maverick2104, Вы видимо не совсем понимаете в чем мой вопрос. В процедуре несколько десятков селектов и всего прочего. Писал ее не я, так что это можно сказать невозможно просто глядя на код, что то определить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 20:14 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
Dr. OracleПисал ее не я,Чудак, а чего тема так пафосно называется? Ты ничего не попутал? Уверен, что сможешь потянуть целый "блог"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 21:03 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
Dr. Oracle, возьми, запусти на тестовой базе (если нельзя проверить на бою) и посмотри время выполнения построчно (в девелопере есть для этого Test Window, profiler). На какой строке зависает надолго, будет видно. В чем проблема? Я так всегда делаю, перед накатом на бой, если что-то не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 21:06 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
sqr_khv, Дело в том, что на тесте данную проблему не воспроизвести. Эта, как и любая перфоманс задача, специфична для данного инстанса. Мне нужно иметь инструмент, в идеале сиквел запрос, с помощью которого можно найти что бежит сейчас внутри pl/sql блока данной мне сессии. Неужели никто не сталкивался с такой проблемой, когда тебе звонят и просят заробраться почему сегодня эта штука бежит на час дольше обычного? Благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 21:53 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
Elic, Дружище, это банальная опечатка. Возможности подкорректировать не нашел. Не лень же тебе было это писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 22:25 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
Если есть модераторы - исправьте, пожалуйста, "блог" на "блок", а то людей путаю почему зря. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 22:28 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
Dr. Oracle, вам русским языком сказали - смотрите v$session.sql_id. если сессия выполняет запрос - он будет там. если сессия выполняет plsql (бесконечный цикл и т.п.) - тогда вы увидите вызов процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 22:29 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
кит северных морей, Вы не понимаете, читаете предыдущие посты или просто свои пять копеек вставить? Я проверил v$session, данная сессия выполняет pl/sql, но выполняется он дольше обычного, причина в каком то из десятков селектов которые бегут в данной процедуре. Мне нужно выяснить, на каком идёт затык, если это возможно. Если это нельзя выяснить каким то способом помимо предложенного с помощью OEM или SQL Developer просто дайте знать. Неужели я не ясно излагаю свою мысль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 22:34 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
Dr. Oracle, ещё раз. поле sql_id изменяется в реальном времени в зависимости от того, что сессия делает ПРЯМО СЕЙЧАС. если она выполняет запрос - значит, там будет id запроса - не важно, вызываете вы его через 50 уровней вложенности plsql, или напрямую, нажав ctrl+enter в IDE. если там нет запроса - значит, ваша сессия ПРЯМО СЕЙЧАС выполняет не запрос, а что-то ещё. как вариант - она выполняет мелкие запросы в цикле в огромном количестве, и вы не успеваете их увидеть. в этом случае вам нужен либо профайлер, либо трассировка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 22:47 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
кит северных морей, Ясно. Большое спасибо за ответ. Не уверен, что вы правы, вернее понимаете что я имею ввиду. Буду рад обсудить в личке или скайпе, если есть такая возможность. Благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 22:56 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
Dr. Oracle, я отвечал на заданный вами предельно конкретный вопрос. вы хотите "проверить что за запрос выполняется на данный момент внутри pl/sql блока" (вероятно, исходя из предположения, что сломался один конкретный запрос, который "держит" всю процедуру)? v$session.sql_id, точка. проблема в том что вы задали неправильный вопрос. вам не нужно знать, какой запрос выполняется прямо сейчас. вам нужно знать, какой запрос/какая часть процедуры выполняется дольше всего. инструменты для этого я уже озвучил - DBMS_PROFILER, SQL Trace. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 23:18 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
кит северных морей, Ещё раз большое спасибо за обратную связь. Воспозуюсь Вашими рекомендациями. Возможно, я не совсем корректно изложил вопрос, приношу свои извинения. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 23:27 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
Dr. OracleНе уверен, что вы правы, вернее понимаете что я имею ввиду.У тебя слишком большое самомнение. А кроме sql_id, есть ещё и PLSQL_*_ID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2018, 08:38 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
посмотрите на AWR report в ваш проблематичный период времени. Можно прямо из SQL Developera смотреть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2018, 13:05 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
gv$active_session_history / dba_hist_active_sess_history спасет отца русской демократии - если есть. Там прекрасно видно какой sql_id дольше всего выполняется. Если нет - видно top_level_sql_id. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2018, 15:17 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2018, 15:18 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
Dr. Oracle, Короче, сделай ashdump/ashrpti по этой сессии за период выполнения и выложи сюда - хоть будет от чего оттолкнуться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2018, 15:21 |
|
||
|
PL/SQL блог
|
|||
|---|---|---|---|
|
#18+
ValergradТам прекрасно видно какой sql_id дольше всего выполняется. Это если проблема в одном запросе, возможна ситуация когда просел не один запрос и возможна ситуация, когда небольшой и быстро выполняющийся запрос стал работать медленнее, допустим вместо 0.02 секунд стал отрабатывать за 0.6 секунд, если он находится в цикле на большое количество повторений, то общее время выполнения процедуры вырастет в десятки раз. Ловить что то в портянке на 5000 строк неблагодарное занятие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2018, 17:59 |
|
||
|
|

start [/forum/topic.php?fid=52&startmsg=39730790&tid=1883181]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
185ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 514ms |

| 0 / 0 |
