Корректировка плана запроса — Stored Outlines

Корректировка плана запроса без изменения кода через Stored Outlines (всего 4 способа: Stored Outlines, SQL Profiles, SQL patch, SQL plan baseline).
Stored Outlines подходит для разных версий и редакций Oracle – 9, 10, 11, EE, SE, XE.
В Oracle 11g функционал Stored Outlines официально объявлен устаревшим, рекомендуется использовать SQL Plan Management (SQL plan baseline).
В некоторых случаях, когда хинт неэффективный, но заменить его оперативно в запросе не представляется возможным (например, чужая разработка),
имеется возможность, не меняя рабочий запрос в программном модуле, заменить хинт (хинты) в запросе, а также в его подзапросах,
на эффективный хинт (хинты). Это прием — подмена хинтов (который известен, как использование хранимых шаблонов Stored Outlines).
Но такая подмена должна быть временным решением до момента корректировки запроса, поскольку постоянная подмена хинта может привести
к некоторому снижению производительности запроса.

—Создание public outline
create public outline FNC_COUNTER_NOZ_OUTLINE4
on
SELECT…

—проверить UNUSED/USED
select * from dba_outlines
select * from dba_outline_hints where name = ‘FNC_COUNTER_NOZ_OUTLINE4’

— включить использование public outline, категория DEFAULT
alter system set use_stored_outlines=true;
alter session set use_stored_outlines = true;
— выключить
alter system set use_stored_outlines=false;
alter session set use_stored_outlines = false;

— удалить все outline из категории DEFAULT
BEGIN
DBMS_OUTLN.drop_by_cat (cat => ‘DEFAULT’);
END;
— удалить по названию
drop public outline FNC_COUNTER_NOZ_OUTLINE4;

—для редактирования хинтов нужно создать private outline.
select * from ol$;
select * from ol$hints;
select * from ol$nodes;
https://docs.oracle.com/cd/E15586_01/server.1111/e16638/outlines.htm
http://oracle-base.com/articles/misc/outlines.php
http://www.fors.ru/upload/magazine/05/http_texts/russia_ruoug_deev_sql_plans.html