Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как привязать свой хинт к sql-запросу в _чужой_ БД.? / 25 сообщений из 26, страница 1 из 2
23.09.2016, 15:12:05
    #39314396
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
у нас есть огромная база от стороннего разработчика в которой иногда появляются всех нервирующие тормоза. Я поднял statpack соответствующий времени жалоб и убедился, что один за sql-запросов сжирает более 90% ресурсов! Так же я установил, что добавление в запрос одного хинта ( /*+ use_nl(A,B) */ ) в сотни раз уменьшает время его выполнения!

Кто подскажет: _как именно_ можно было бы (если вообще возможно?) привязать такой хинт к _чужому_ запросу ( с разработчиком которого контакта нет!)? (ну типа технологии outlines? baselines? и т.п. У меня с ними опыта нет вообще! )
У нас Оracle Enterprise Edition 11g, но увы без платного компонента Diagnostic-Pack!
...
Рейтинг: 0 / 0
23.09.2016, 15:20:57
    #39314405
ORA__SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
DBAshnikКто подскажет: _как именно_ можно было бы (если вообще возможно?)А статистика по объектам актуальна?
...
Рейтинг: 0 / 0
23.09.2016, 15:22:32
    #39314409
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
DBAshnik,

Тупо пересоберите статистику для начала.
...
Рейтинг: 0 / 0
23.09.2016, 15:28:26
    #39314420
как привязать свой хинт к sql-запросу в _чужой_ БД.?
...
Рейтинг: 0 / 0
23.09.2016, 16:05:13
    #39314468
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
статистика актуальная!
...
Рейтинг: 0 / 0
23.09.2016, 16:06:22
    #39314469
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
Быдло___кодерПопробуй SQL Patch
https://blogs.oracle.com/optimizer/entry/how_can_i_hint_a

а этот самый dbms_sqldiag_internal - он cлучайно не часть платного DIAGN-пакета? ;-)
...
Рейтинг: 0 / 0
23.09.2016, 16:49:58
    #39314515
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
DBAshnik_как именно_ можно было бы (если вообще возможно?) привязать такой хинт к _чужому_ запросу
Ну во времена 8i sys-оские объекты правили, подменяя outlin-ы, затем механизма эволюционировала и сегодня вся эта кинематика не только имеет кнопки-рукоятки, но даже обзавелась автоматикой... платной, разумеется :)
Еще можно атакой man-in-the-middle лепить хинты в запросы - размещать по вкусу, от клиентской прокси-библиотеки до самого до сервера - под ответственность разработчика.

Но лучше всего - все-таки найти причину, по которой строится не устраивающий план (трасса 10053 в помощь) и устранить - изменив optimizer_goal, параметры сессии или к примеру, кастомизировав статистику (dbms_stats.SET_%_stats).
Кстати, на версиях до 12с иногда помогает волшебная команда
Код: plsql
1.
comment on table <имя_таблицы> is 'fast=true'


...и это не совсем шутка, иногда реально помогает.
...
Рейтинг: 0 / 0
23.09.2016, 17:39:59
    #39314556
Maxim Demenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
это чтобы курсор инвалидировать ? ну так оно и выстрелить library cache lock наплодить может, dbms_shared_pool.purge поточнее будет.

Насчет sql patch -
здесь пишут вроде бы не надо денег
https://blogs.oracle.com/optimizer/entry/additional_information_on_sql_patches

Best regards

Maxim
...
Рейтинг: 0 / 0
23.09.2016, 17:52:40
    #39314564
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
Maxim Demenko
...
Maxim

да, денег не надо! Это я уже тоже прочитал!

andrey_anonymous! Спасибо за интересный ответ, но практически мне из него ничего не получится применить.

Быдло___кодер - спасибо огромное!!! Вроде то что надо! ещё и тут описано:
http://www.dba-oracle.com/t_dbms_sqldiag_internal.htm

Но, увы, у меня пока не работет, как ни стараюсь. То есть пэтч создаётся (он виден в DBA_SQL_PATCHES) но запрос его (хинт) не берёт!
Не пойму - почему??? :-(
...
Рейтинг: 0 / 0
23.09.2016, 18:11:09
    #39314580
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
DBAshnikandrey_anonymous! Спасибо за интересный ответ, но практически мне из него ничего не получится применить.

Жаль. Я надеялся склонить Вас к варианту "разобраться что ему мешает".
К примеру, NL-ю может "мешать" большая hash_area в сочетании с all_rows, большим db_file_multiblock_read_count, завышенной optimizer_index_cost_adj или даже просто неудачная гистограмма на индексированной колонке.

DBAshnikне берёт!
Не пойму - почему??? :-(
Потому что... тщательнее надо, тщательнее!
YouTube Video
...
Рейтинг: 0 / 0
23.09.2016, 18:12:49
    #39314582
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
andrey_anonymousПосмотрите комменты к ссылке, особенно последний.
Имеется ввиду, естественно, ссылка от Быдло___кодер 19701187
...
Рейтинг: 0 / 0
23.09.2016, 18:22:11
    #39314590
Деев И.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
DBAshnik,
Хинт должен быть представлен во внутреннем системном виде, как в outline
Можно взглянуть на https://iusoltsev.wordpress.com/2015/02/22/sql-patch-notes/
и комментарии к этой заметке, там приведен скрипт применения полного набора хинтов.
...
Рейтинг: 0 / 0
27.09.2016, 16:30:39
    #39316345
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
так и не получилось у меня научиться приклеивать хороший execution-план на плохой запрос. :-(
вот попытался через baselines
тоже не работает почему-то. Мне кажется там у них какая-то ошибка в описании. Но не могу разобраться, опыта в этом мало.
...
Рейтинг: 0 / 0
27.09.2016, 16:36:13
    #39316353
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
Деев И.DBAshnik,
Хинт должен быть представлен во внутреннем системном виде, как в outline
Можно взглянуть на https://iusoltsev.wordpress.com/2015/02/22/sql-patch-notes/
и комментарии к этой заметке, там приведен скрипт применения полного набора хинтов.


спасибо, но я абсолютно не понимаю,


1. что значит "Хинт должен быть представлен во внутреннем системном виде, как в outline" ?
(статья вообще то про ограничение длинны хинта в 500 байт)


2. что вообще такое скрипты и откуда они взялись?:

SQL> @sqlpatch_hints
SQL> @shared_cu12
...
Рейтинг: 0 / 0
27.09.2016, 17:17:37
    #39316404
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
DBAshnikвот попытался через baselines
Молодец )

DBAshnikМне кажется там у них какая-то ошибка в описании. Но не могу разобраться, опыта в этом мало.
Ну так опубликуй свои изыскания.
...
Рейтинг: 0 / 0
27.09.2016, 17:22:53
    #39316412
djeday84
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
IMHO пока уже в HOW-TO добавить и где нибудь в шапке чата закрепить ))

http://www.fors.ru/upload/magazine/05/http_texts/russia_ruoug_deev_sql_plans.html
...
Рейтинг: 0 / 0
27.09.2016, 18:07:42
    #39316465
DBAshnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
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-ами всё отлично заработало! )) ;-)
...
Рейтинг: 0 / 0
28.09.2016, 11:14:24
    #39316762
kinky cat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
DBAshnikв вариант с SQL-Patch-ами всё отлично заработало! )) ;-)
советуя SQL-Patch стоит напоминать, что это недокументированная возможность. В некоторых организациях есть политика запрещающая использовать недокументированные возможности на прод системах.
...
Рейтинг: 0 / 0
28.09.2016, 14:52:07
    #39316985
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
kinky catDBAshnikв вариант с SQL-Patch-ами всё отлично заработало! )) ;-)
советуя SQL-Patch стоит напоминать, что это недокументированная возможность. В некоторых организациях есть политика запрещающая использовать недокументированные возможности на прод системах.Сама возможность - документированная: How to Create a SQL Patch to add Hints to Application SQL Statements (Doc ID 1931944.1)
...
Рейтинг: 0 / 0
28.09.2016, 14:58:08
    #39316990
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
xtenderСама возможность - документированная: How to Create a SQL Patch to add Hints to Application SQL Statements (Doc ID 1931944.1)
А средство - нет ;)
Код: plaintext
The SQL patch allows a user to "insert hints" into a query whose text cannot be edited due to the application constraints using an undocumented API called DBMS_SQLDIAG_INTERNAL.I_CREATE_PATCH()
Тем более, что использование рекомендуется в случае
авторIn a critical situation, where a SQL Plan Baseline is not possible,
...
Рейтинг: 0 / 0
28.09.2016, 15:03:28
    #39316996
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
AlexFF__|,

то, что не документировали API этого пакета, не означает, что создание патчей не документировано.
Грубо говоря, фактически разрешили использовать только одну процедуру оттуда и только в определенном случае.
...
Рейтинг: 0 / 0
28.09.2016, 15:08:55
    #39317004
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
xtenderAlexFF__|,

то, что не документировали API этого пакета, не означает, что создание патчей не документировано.
Грубо говоря, фактически разрешили использовать только одну процедуру оттуда и только в определенном случае.
Я бы сказал, что документированность определяется присутствием функционала в официальной документации.
А в данном случае мы имеет официально рекомендованный костыль с оговорками.
...
Рейтинг: 0 / 0
28.09.2016, 15:14:12
    #39317008
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
AlexFF__|,

Забавно, а я всегда считал MOS приоритетнее публичной доки и многие вещи документированы только на нем.
в принципе, хинты/аутлайны/профили/патчи/бейслайны - уже сами по себе "костыли с оговорками"...
...
Рейтинг: 0 / 0
28.09.2016, 15:23:06
    #39317027
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
xtenderЗабавно, а я всегда считал MOS приоритетнее публичной доки
Ага, а поддержка приоритетнее MOS =)
Но это не сделает ее советы документированней.
...
Рейтинг: 0 / 0
28.09.2016, 15:40:32
    #39317056
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как привязать свой хинт к sql-запросу в _чужой_ БД.?
AlexFF__|,

Т.е. по-вашему даже трасса 10053 недокументирована и ее использовать нельзя? И советы поддержки тем более нельзя выполнять?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как привязать свой хинт к sql-запросу в _чужой_ БД.? / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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