powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как найти проблемный sql запрос в pl/sql?
7 сообщений из 7, страница 1 из 1
как найти проблемный sql запрос в pl/sql?
    #39273919
жвачкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть код PL/SQL который выполняется три часа.
В AWR в таблице Elapsed Time выглядит запись так в поле SQL Text: begin procedure-tra-ta-ta
из OEM видно, что по ожиданиям 53% - CPU, 47% I/O.
В этом PL/SQL +100500 sql запросов, селекты, инсёрты...
Как выявить, что именно работает из этого медленно?

С точки зрения пользователя - он нажимает одну кнопку.
С точки зрения БД: я вижу, что запускается PL/SQL Begin tra-ta-ta...
...
Рейтинг: 0 / 0
как найти проблемный sql запрос в pl/sql?
    #39273956
tracerrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alter session set events '10046 trace name context forever, level8'
...
Рейтинг: 0 / 0
как найти проблемный sql запрос в pl/sql?
    #39274006
pihel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
жвачкин,

по ash
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select sql_id, SQL_PLAN_HASH_VALUE, avg(secs), sum(secs) as secs, sum(cnt) as cnt, txt from (
select h.sql_id, h.SQL_PLAN_HASH_VALUE, h.sql_exec_id, h.sql_exec_start, max(h.sample_time),  to_char(max(sample_time),'SSSSS') - to_char(sql_exec_start,'SSSSS')  as secs,
count(*) cnt, max( trim(DBMS_LOB.SUBSTR (t.sql_text,4000)) ) as txt
 FROM   dba_hist_active_sess_history h 
left join dba_hist_sqltext t on t.sql_id = h.sql_id
where 
h.sample_time between to_date('13.07.16 21:31:09', 'dd.mm.yy hh24:mi:ss') and to_date('13.07.16 21:55:12', 'dd.mm.yy hh24:mi:ss')
group by h.sql_id, h.SQL_PLAN_HASH_VALUE, h.sql_exec_id, h.sql_exec_start
) group by sql_id, SQL_PLAN_HASH_VALUE, txt
order by cnt desc nulls last;
...
Рейтинг: 0 / 0
как найти проблемный sql запрос в pl/sql?
    #39274070
жвачкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pihelжвачкин,

по ash
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select sql_id, SQL_PLAN_HASH_VALUE, avg(secs), sum(secs) as secs, sum(cnt) as cnt, txt from (
select h.sql_id, h.SQL_PLAN_HASH_VALUE, h.sql_exec_id, h.sql_exec_start, max(h.sample_time),  to_char(max(sample_time),'SSSSS') - to_char(sql_exec_start,'SSSSS')  as secs,
count(*) cnt, max( trim(DBMS_LOB.SUBSTR (t.sql_text,4000)) ) as txt
 FROM   dba_hist_active_sess_history h 
left join dba_hist_sqltext t on t.sql_id = h.sql_id
where 
h.sample_time between to_date('13.07.16 21:31:09', 'dd.mm.yy hh24:mi:ss') and to_date('13.07.16 21:55:12', 'dd.mm.yy hh24:mi:ss')
group by h.sql_id, h.SQL_PLAN_HASH_VALUE, h.sql_exec_id, h.sql_exec_start
) group by sql_id, SQL_PLAN_HASH_VALUE, txt
order by cnt desc nulls last;


спасибо большое, но вот к примеру результат:
Код: plsql
1.
2.
sql_id            SQL_PLAN_HASH_VALUE     avg(secs)    secs  cnt        txt
6hk0tngxa5nmq             0                 165       165    1     BEGIN REC_LOAD.Save(:load_id); END;


и тут для меня вопрос, куда было потрачено время при REC_LOAD.Save
...
Рейтинг: 0 / 0
как найти проблемный sql запрос в pl/sql?
    #39274160
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tracerrrralter session set events '10046 trace name context forever, level8'

да можно проще, в EM зайти в момент выполнения процедуры или после, там все будет видно, и там будет конкретный запрос, а не вся процедура.

и план будет, и вообще все.
...
Рейтинг: 0 / 0
как найти проблемный sql запрос в pl/sql?
    #39274295
pihel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
жвачкин,

кроме вызова этой процедуры в ash ничего нет? Смотрите все, кроме pl/sql блоков.
* Выведите h.sample_time, посмотрите какие sql_id работали одновременно с процедурой.
* Отфильтруйте ash по полю TOP_LEVEL_SQL_ID = 6hk0tngxa5nmq или по PLSQL_ENTRY_OBJECT_ID = ID pl/sql процедуры.
и т.д.
...
Рейтинг: 0 / 0
как найти проблемный sql запрос в pl/sql?
    #39274807
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
жвачкин,

гляньте dbms_profiler, мож пригодится

http://www.interface.ru/home.asp?artId=3695


......
stax
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как найти проблемный sql запрос в pl/sql?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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