Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Блокирующий sql_id / 11 сообщений из 11, страница 1 из 1
12.06.2019, 13:59
    #39825744
alex722
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокирующий sql_id
Добрый день.

Наверное, уже спрашивали и не раз, но как найти блокирующий sql_id (DML например update) от сессии, которая этот dml давно выполнила, но не зафиксировала, после этого была куча селектов, но заблокированных сессий собрался вагон. Update был моментальным в ash отчёт не попал.
...
Рейтинг: 0 / 0
12.06.2019, 14:25
    #39825749
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокирующий sql_id
alex722как найти блокирующий sql_id (DML например update)Никак.
...
Рейтинг: 0 / 0
13.06.2019, 09:34
    #39825981
pihel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокирующий sql_id
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
13.06.2019, 09:38
    #39825982
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокирующий sql_id
pihelиз ash можно взять строку, которая блокируется,Она и так есть в заблокированной сессии.
pihelпотом если повезет по косвенным признакамЗвучит как "если и можно, то я не знаю как".
...
Рейтинг: 0 / 0
13.06.2019, 16:50
    #39826254
Valergrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокирующий sql_id
Зная какая таблица менялась, обычно несложно через dba_source найти код который делает этот update.
В ash также есть plsql_object_id, plsql_object_subprogram_id, plsql_entry_object_id ... который даст подсказку ( смотреть для блокирующей сессии чуть раньше или чуть позже).
Но это все сработает только если эта сессия была не пользовательская, а приложения. Но если она была пользовательская - проще спросить у пользователя что он исполнял.
Зная код легко нагуглить как получить по коду sql_id ( это просто хэш от текста, какой функцией хешируется на память не помню ).
...
Рейтинг: 0 / 0
14.06.2019, 07:34
    #39826391
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокирующий sql_id
ValergradЗная какая таблица менялась, обычно несложно через dba_source найти код который делает этот update.
В ash также есть plsql_object_id, plsql_object_subprogram_id, plsql_entry_object_id ... который даст подсказку ( смотреть для блокирующей сессии чуть раньше или чуть позже).
Но это все сработает только если эта сессия была не пользовательская, а приложения. Но если она была пользовательская - проще спросить у пользователя что он исполнял.
Зная код легко нагуглить как получить по коду sql_id ( это просто хэш от текста, какой функцией хешируется на память не помню ).Столько бесполезного бреда...
...
Рейтинг: 0 / 0
14.06.2019, 19:40
    #39826759
flexgen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокирующий sql_id
alex722Добрый день.

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

Вот здесь есть несколько вариантов поиска блокирующих сессий и блокированных объектов, попробуй, может и найдешь чего.
...
Рейтинг: 0 / 0
14.06.2019, 19:55
    #39826760
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокирующий sql_id
flexgenнесколько вариантов поиска блокирующих сессий и блокированных объектов, попробуй, может и найдешь чего.
Поиск блокирующей сессии и заблокированного объекта особых сложностей не представляет.
ТС хотел найти sql_id.
...
Рейтинг: 0 / 0
14.06.2019, 21:06
    #39826767
flexgen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокирующий sql_id
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
14.06.2019, 21:08
    #39826768
flexgen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокирующий sql_id
flexgen,

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

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


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