Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Oracle

В каких случаях может быть разный sql_id у одинаковых запросов : Oracle

14.01.2025 16:58


28.12.2024 21:33
Задали вопрос и я углубился в поиски. Визуально запросы ничем не отличались друг от друга, тем не менее sql_id был разный. Выяснилось, что при использовании маркхота, то есть
SQL код:
begin
        dbms_shared_pool.markhot(
                hash            =>'71fc6ccf9b3265361492ec9f4c5b785b',
                namespace       =>2,
                global          =>true
        );
end;
/ 
копии объектов могут иметь разные sql_id, как это описано в "Different Sql_id's But Sql Is The Same Text When Sql Is Marked Hot (Doc ID 2234171.1)"
Определить такие объекты можно запросом
SQL код:
select
        hash_value,
        full_hash_value,
        namespace,
        child_latch,
        property        hot_flag,
        executions,
        invalidations
from
        v$db_object_cache
where
        name like '{some part of your critical SQL statement}'
; 
Соответственно, в разных вариантах непустая колонка PROPERTY обозначает, что объект замаркхочен (так и не знаю, как коротко обозначить это по-русски), то есть помечен горячим и находится в кеше. Делается это с целью снижения конкуренции за мьютексы (mutex).
04.01.2025 21:34
Может, кто-то все же присоединится к обсуждению?
Часовой пояс GMT +3, время: 16:58.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.