powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Блокирующий sql_id
11 сообщений из 11, страница 1 из 1
Блокирующий sql_id
    #39825744
alex722
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Наверное, уже спрашивали и не раз, но как найти блокирующий sql_id (DML например update) от сессии, которая этот dml давно выполнила, но не зафиксировала, после этого была куча селектов, но заблокированных сессий собрался вагон. Update был моментальным в ash отчёт не попал.
...
Рейтинг: 0 / 0
Блокирующий sql_id
    #39825749
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex722как найти блокирующий sql_id (DML например update)Никак.
...
Рейтинг: 0 / 0
Блокирующий sql_id
    #39825981
pihel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex722,

из ash можно взять строку, которая блокируется, а потом если повезет по косвенным признакам выйти на программу и update в ней
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select h.event, h.client_id, h.BLOCKING_SESSION, h.BLOCKING_SESSION_SERIAL# , H.CURRENT_BLOCK#, H.CURRENT_OBJ#, 
H.CURRENT_ROW#,o.owner || '.' || o.object_name as obj_name, COUNT(*) as cnt , COUNT(DISTINCT H.SESSION_ID) as sid_cnt,
'select * from '||o.owner || '.' || o.object_name||' where SYS.dbms_rowid.rowid_block_number(rowid) = '||H.CURRENT_BLOCK#||' and SYS.dbms_rowid.rowid_row_number(rowid) = ' || H.CURRENT_ROW# as sql_text
from dba_hist_active_sess_history h 
left join dba_objects o on o.object_id = H.CURRENT_OBJ#
where h.sample_time between :ST_DT and :ED_DT
and sql_id = :SQL_ID
AND h.BLOCKING_SESSION IS NOT NULL
GROUP BY h.event, h.BLOCKING_SESSION, h.BLOCKING_SESSION_SERIAL# , H.CURRENT_BLOCK#, H.CURRENT_OBJ#, H.CURRENT_ROW#,o.owner, o.object_name, h.client_id
order by cnt desc

...
Рейтинг: 0 / 0
Блокирующий sql_id
    #39825982
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pihelиз ash можно взять строку, которая блокируется,Она и так есть в заблокированной сессии.
pihelпотом если повезет по косвенным признакамЗвучит как "если и можно, то я не знаю как".
...
Рейтинг: 0 / 0
Блокирующий sql_id
    #39826254
Valergrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зная какая таблица менялась, обычно несложно через dba_source найти код который делает этот update.
В ash также есть plsql_object_id, plsql_object_subprogram_id, plsql_entry_object_id ... который даст подсказку ( смотреть для блокирующей сессии чуть раньше или чуть позже).
Но это все сработает только если эта сессия была не пользовательская, а приложения. Но если она была пользовательская - проще спросить у пользователя что он исполнял.
Зная код легко нагуглить как получить по коду sql_id ( это просто хэш от текста, какой функцией хешируется на память не помню ).
...
Рейтинг: 0 / 0
Блокирующий sql_id
    #39826391
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValergradЗная какая таблица менялась, обычно несложно через dba_source найти код который делает этот update.
В ash также есть plsql_object_id, plsql_object_subprogram_id, plsql_entry_object_id ... который даст подсказку ( смотреть для блокирующей сессии чуть раньше или чуть позже).
Но это все сработает только если эта сессия была не пользовательская, а приложения. Но если она была пользовательская - проще спросить у пользователя что он исполнял.
Зная код легко нагуглить как получить по коду sql_id ( это просто хэш от текста, какой функцией хешируется на память не помню ).Столько бесполезного бреда...
...
Рейтинг: 0 / 0
Блокирующий sql_id
    #39826759
flexgen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex722Добрый день.

Наверное, уже спрашивали и не раз, но как найти блокирующий sql_id (DML например update) от сессии, которая этот dml давно выполнила, но не зафиксировала, после этого была куча селектов, но заблокированных сессий собрался вагон. Update был моментальным в ash отчёт не попал.

Вот здесь есть несколько вариантов поиска блокирующих сессий и блокированных объектов, попробуй, может и найдешь чего.
...
Рейтинг: 0 / 0
Блокирующий sql_id
    #39826760
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flexgenнесколько вариантов поиска блокирующих сессий и блокированных объектов, попробуй, может и найдешь чего.
Поиск блокирующей сессии и заблокированного объекта особых сложностей не представляет.
ТС хотел найти sql_id.
...
Рейтинг: 0 / 0
Блокирующий sql_id
    #39826767
flexgen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousflexgenнесколько вариантов поиска блокирующих сессий и блокированных объектов, попробуй, может и найдешь чего.
Поиск блокирующей сессии и заблокированного объекта особых сложностей не представляет.
ТС хотел найти sql_id.

Тут может быть несколько вариантов, если объект все еще блокирован значит сессия не завершилась, т.е. в v$session и v$sql что-то может быть. Либо искать в dba_hist_sqltext все что относится к искомому объекту:

Код: plsql
1.
2.
select * from dba_objects where object_id = <object_id>;
select * from dba_hist_sqltext where upper(sql_text) like upper '<object_name>';



И проверять содержимое поля sql_text всех тех sql_id, что получили. Если повезет то мы найдем наш sql_id.
...
Рейтинг: 0 / 0
Блокирующий sql_id
    #39826768
flexgen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flexgen,

авторзначит сессия не завершилась

Имелась ввиду транзакция.
...
Рейтинг: 0 / 0
Блокирующий sql_id
    #39826778
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flexgen Если повезетЭтот вариант уже предлагали. Остается, правда, еще маленький нюанс - как узнать, что "повезло".
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Блокирующий sql_id
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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