powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / 11.2.0.3 cursor: pin S wait on X + library cache lock
6 сообщений из 6, страница 1 из 1
11.2.0.3 cursor: pin S wait on X + library cache lock
    #39382838
Pavel_PV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго.
Коллеги есть запрос, визуально всё нормально. На 12-ке тоже подвисает по указанному событию, но ненадолго - пока максимум видел 5 минут и далее выполняется. На 11.2.0.3 всё менее предсказуемо, может на 2 минуты подвиснуть, может на 5, может на час, может на 4 часа. При этом план появляется в v$sql_plan, запрос появляется в v$sql_monitor, в самом em как будет просто висит и ничего не делает.
Причину искать пробовал по разному, но стойкое ощущение что это просто бага. В запросе на join/left join более 15 таблиц. Уже дошло до абсурда, думал может дело в какой-то таблице, убирал их по одной. Итого: когда остаётся 7 таблиц отрабатывает всё мгновенно и далее по мере прибавления начинаются вот эти ожидания, при этом неважно какую добавлять т.е. будто от количества зависит. Не думаю, что хинтами тут можно что-то изменить, уже пробовал по разному.
Что происходит в момент когда всё висит? Плодятся запросы в v$sql с точно таким же sql_id и одинаковым временем запуска, время обновления при этом меняется. Так же множатся данные в v$sql_shared_cursor и меняется у них только OPTIMIZER_MISMATCH, ну и конечно child_adress+child_number. В Reason указано примерно следующее:
Код: sql
1.
<ChildNode><ChildNumber>0</ChildNumber><ID>3</ID><reason>Optimizer mismatch(2)</reason><size>4x4</size><parallel_query_default_dop>120</parallel_query_default_dop><kxfr_Default_DOP>116</kxfr_Default_DOP><isParallel>1</isParallel><Need_Default_Dop>0</Need_Default_Dop></ChildNode><ChildNode><ChildNumber>0</ChildNumber><ID>9</ID><reason>PQ Slave mismatch(5)</reason><size>2x4</size><ctxpq_StmtId_pqctx>3855020</ctxpq_StmtId_pqctx><fxu_kxfxutqidb>3636381</fxu_kxfxutqidb></ChildNode> 



Ещё заметил, что возможно это связано с тем, что запрос в пакете. При запуске вне пакета такого дикого подвисания не видел ни разу, ну может минут 5 максимум. При запуске из анонимного блока подвисание тоже есть, но опять же о часах речи никогда не шло. При вставке в темповую таблицу всё отрабатывает нормально, ожидания есть но совсем копеечные.
Перехода на 12-ку пока нет, надо как-то отладить этот механизм на 11-ой версии. Может есть у кого идеи?

P.S> Заранее спасибо!
...
Рейтинг: 0 / 0
11.2.0.3 cursor: pin S wait on X + library cache lock
    #39382839
Pavel_PV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, что-то у меня форматирование текста какое-то странное. Извиняюсь, видимо что-то не так сделал.
...
Рейтинг: 0 / 0
11.2.0.3 cursor: pin S wait on X + library cache lock
    #39382935
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel_PV,

По описанию похоже на High Parse Time Elapsed And High Cursor : Pin S Wait On X Wait Event With Parallelism (Doc ID 1675659.1)
Чтобы более точнее сказать, нужен план и real-time sql monitoring report, которых нет.
Указанный документ применим, если в плане есть temp table transformation (CDT).
...
Рейтинг: 0 / 0
11.2.0.3 cursor: pin S wait on X + library cache lock
    #39383208
Kamael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel_PV,
Попробуйте поиграться с _max_permutations, начиная с _max_permutations=100 и выше
...
Рейтинг: 0 / 0
11.2.0.3 cursor: pin S wait on X + library cache lock
    #39383296
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
могу ошибаться, но похоже проблема звучит как

http://www.sql.ru/forum/actualsearch.aspx?search=markhot&&bid=3
https://www.google.ru/?gws_rd=ssl#q=markhot oracle
...
Рейтинг: 0 / 0
11.2.0.3 cursor: pin S wait on X + library cache lock
    #39383735
Pavel_PV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SeaGate, в плане действительно есть temp table transformation. В запросе участвует конструкция with с хинтом MATERIALIZE, если вместо MATERIALIZE указать хинт INLINE, то запрос почти никогда не отрабатывает, уходит в бесконечное ожидание. Но в v$sql запросы плодится перестают, появляется всего 2. По reason всё тоже самое <reason>Optimizer mismatch(2)</reason>. При том, что сам запрос после начала работы выполняется за 5-10сек. В каком формате предоставить план? format => Parallel или как-то иначе?
По ссылке пройти не смог.
--
Kamael, насколько я понимаю _max_permutations отвечает в какой-то мере за скорость парсинга, в моем же случае запрос разбирается корректно. С уменьшением этого параметра запрос разбирался конечно быстрее, но в остальном профита не было - то же бесконечно ожидание.
--
dbpatch, да сначала тоже подумал про Mutex-ы. Но потом начал читать разбираться и думаю, что в них дело. К слову ожидания "library cache: mutex X" у меня нет.

Сейчас парадокс в том, что с хинтом INLINE вместо MATERIALIZE вставка не выполняется даже в темповую табличку. Т.е. по сути проблему удаётся повторять многократно, от этого конечно легче разбираться.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / 11.2.0.3 cursor: pin S wait on X + library cache lock
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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