|
|
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
у нас есть огромная база от стороннего разработчика в которой иногда появляются всех нервирующие тормоза. Я поднял statpack соответствующий времени жалоб и убедился, что один за sql-запросов сжирает более 90% ресурсов! Так же я установил, что добавление в запрос одного хинта ( /*+ use_nl(A,B) */ ) в сотни раз уменьшает время его выполнения! Кто подскажет: _как именно_ можно было бы (если вообще возможно?) привязать такой хинт к _чужому_ запросу ( с разработчиком которого контакта нет!)? (ну типа технологии outlines? baselines? и т.п. У меня с ними опыта нет вообще! ) У нас Оracle Enterprise Edition 11g, но увы без платного компонента Diagnostic-Pack! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 15:12 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
DBAshnikКто подскажет: _как именно_ можно было бы (если вообще возможно?)А статистика по объектам актуальна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 15:20 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
DBAshnik, Тупо пересоберите статистику для начала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 15:22 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
Попробуй SQL Patch https://blogs.oracle.com/optimizer/entry/how_can_i_hint_a ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 15:28 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
статистика актуальная! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 16:05 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
Быдло___кодерПопробуй SQL Patch https://blogs.oracle.com/optimizer/entry/how_can_i_hint_a а этот самый dbms_sqldiag_internal - он cлучайно не часть платного DIAGN-пакета? ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 16:06 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
DBAshnik_как именно_ можно было бы (если вообще возможно?) привязать такой хинт к _чужому_ запросу Ну во времена 8i sys-оские объекты правили, подменяя outlin-ы, затем механизма эволюционировала и сегодня вся эта кинематика не только имеет кнопки-рукоятки, но даже обзавелась автоматикой... платной, разумеется :) Еще можно атакой man-in-the-middle лепить хинты в запросы - размещать по вкусу, от клиентской прокси-библиотеки до самого до сервера - под ответственность разработчика. Но лучше всего - все-таки найти причину, по которой строится не устраивающий план (трасса 10053 в помощь) и устранить - изменив optimizer_goal, параметры сессии или к примеру, кастомизировав статистику (dbms_stats.SET_%_stats). Кстати, на версиях до 12с иногда помогает волшебная команда Код: plsql 1. ...и это не совсем шутка, иногда реально помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 16:49 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
это чтобы курсор инвалидировать ? ну так оно и выстрелить library cache lock наплодить может, dbms_shared_pool.purge поточнее будет. Насчет sql patch - здесь пишут вроде бы не надо денег https://blogs.oracle.com/optimizer/entry/additional_information_on_sql_patches Best regards Maxim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 17:39 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
Maxim Demenko ... Maxim да, денег не надо! Это я уже тоже прочитал! andrey_anonymous! Спасибо за интересный ответ, но практически мне из него ничего не получится применить. Быдло___кодер - спасибо огромное!!! Вроде то что надо! ещё и тут описано: http://www.dba-oracle.com/t_dbms_sqldiag_internal.htm Но, увы, у меня пока не работет, как ни стараюсь. То есть пэтч создаётся (он виден в DBA_SQL_PATCHES) но запрос его (хинт) не берёт! Не пойму - почему??? :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 17:52 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
DBAshnikandrey_anonymous! Спасибо за интересный ответ, но практически мне из него ничего не получится применить. Жаль. Я надеялся склонить Вас к варианту "разобраться что ему мешает". К примеру, NL-ю может "мешать" большая hash_area в сочетании с all_rows, большим db_file_multiblock_read_count, завышенной optimizer_index_cost_adj или даже просто неудачная гистограмма на индексированной колонке. DBAshnikне берёт! Не пойму - почему??? :-( Потому что... тщательнее надо, тщательнее! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 18:11 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousПосмотрите комменты к ссылке, особенно последний. Имеется ввиду, естественно, ссылка от Быдло___кодер 19701187 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 18:12 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
DBAshnik, Хинт должен быть представлен во внутреннем системном виде, как в outline Можно взглянуть на https://iusoltsev.wordpress.com/2015/02/22/sql-patch-notes/ и комментарии к этой заметке, там приведен скрипт применения полного набора хинтов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 18:22 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
так и не получилось у меня научиться приклеивать хороший execution-план на плохой запрос. :-( вот попытался через baselines тоже не работает почему-то. Мне кажется там у них какая-то ошибка в описании. Но не могу разобраться, опыта в этом мало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2016, 16:30 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
Деев И.DBAshnik, Хинт должен быть представлен во внутреннем системном виде, как в outline Можно взглянуть на https://iusoltsev.wordpress.com/2015/02/22/sql-patch-notes/ и комментарии к этой заметке, там приведен скрипт применения полного набора хинтов. спасибо, но я абсолютно не понимаю, 1. что значит "Хинт должен быть представлен во внутреннем системном виде, как в outline" ? (статья вообще то про ограничение длинны хинта в 500 байт) 2. что вообще такое скрипты и откуда они взялись?: SQL> @sqlpatch_hints SQL> @shared_cu12 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2016, 16:36 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
DBAshnikвот попытался через baselines Молодец ) DBAshnikМне кажется там у них какая-то ошибка в описании. Но не могу разобраться, опыта в этом мало. Ну так опубликуй свои изыскания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2016, 17:17 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
IMHO пока уже в HOW-TO добавить и где нибудь в шапке чата закрепить )) http://www.fors.ru/upload/magazine/05/http_texts/russia_ruoug_deev_sql_plans.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2016, 17:22 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
djeday84IMHO пока уже в HOW-TO добавить и где нибудь в шапке чата закрепить )) http://www.fors.ru/upload/magazine/05/http_texts/russia_ruoug_deev_sql_plans.html ой спасибо огромнейшее! После добавление магической строчки авторl_hints := replace( l_hints, 'IGNORE_OPTIM_EMBEDDED_HINTS' ); в вариант с SQL-Patch-ами всё отлично заработало! )) ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2016, 18:07 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
DBAshnikв вариант с SQL-Patch-ами всё отлично заработало! )) ;-) советуя SQL-Patch стоит напоминать, что это недокументированная возможность. В некоторых организациях есть политика запрещающая использовать недокументированные возможности на прод системах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2016, 11:14 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
kinky catDBAshnikв вариант с SQL-Patch-ами всё отлично заработало! )) ;-) советуя SQL-Patch стоит напоминать, что это недокументированная возможность. В некоторых организациях есть политика запрещающая использовать недокументированные возможности на прод системах.Сама возможность - документированная: How to Create a SQL Patch to add Hints to Application SQL Statements (Doc ID 1931944.1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2016, 14:52 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
xtenderСама возможность - документированная: How to Create a SQL Patch to add Hints to Application SQL Statements (Doc ID 1931944.1) А средство - нет ;) Код: plaintext авторIn a critical situation, where a SQL Plan Baseline is not possible, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2016, 14:58 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
AlexFF__|, то, что не документировали API этого пакета, не означает, что создание патчей не документировано. Грубо говоря, фактически разрешили использовать только одну процедуру оттуда и только в определенном случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2016, 15:03 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
xtenderAlexFF__|, то, что не документировали API этого пакета, не означает, что создание патчей не документировано. Грубо говоря, фактически разрешили использовать только одну процедуру оттуда и только в определенном случае. Я бы сказал, что документированность определяется присутствием функционала в официальной документации. А в данном случае мы имеет официально рекомендованный костыль с оговорками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2016, 15:08 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
AlexFF__|, Забавно, а я всегда считал MOS приоритетнее публичной доки и многие вещи документированы только на нем. в принципе, хинты/аутлайны/профили/патчи/бейслайны - уже сами по себе "костыли с оговорками"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2016, 15:14 |
|
||
|
как привязать свой хинт к sql-запросу в _чужой_ БД.?
|
|||
|---|---|---|---|
|
#18+
xtenderЗабавно, а я всегда считал MOS приоритетнее публичной доки Ага, а поддержка приоритетнее MOS =) Но это не сделает ее советы документированней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2016, 15:23 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39314582&tid=1887366]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
207ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
84ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 571ms |

| 0 / 0 |
