Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите привязать нужный план к запросу.. / 4 сообщений из 4, страница 1 из 1
05.10.2021, 10:34
    #40102006
Ден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите привязать нужный план к запросу..
Помогите пожалуйста..
Нужно для определенного запроса отключить индексы..
По документации для 12.1 делаю
BEGIN
-- SQL Text
SYS.DBMS_SQLDIAG_INTERNAL.i_create_patch(
sql_text => 'SELECT T0.IMITM, T0.IMSTKT, T1.SDKCOO, T1.SDDOCO, T1.SDDCTO, T1.SDLNID, T1.SDSFXO, T1.SDMCU, T1.SDCO, T1.SDITM, T1.SDAITM, T1.SDLOCN, T1.SDLOTN, T1.SDLNTY, T1.SDNXTR, T1.SDLTTR, T1.SDEMCU, T1.SDRLIT, T1.SDRKIT, T1.SDUOM, T1.SDUORG, T1.SDSOQS, T1.SDSOBK, T1.SDSOCN, T1.SDSONE, T1.SDQTYT, T1.SDCOMM, T1.SDOTQY, T1.SDUOM1, T1.SDUOM2, T1.SDSQOR, T1.SDSO02, T1.SDSO15, T1.SDSWMS, T1.SDCRCD, T1.SDPID, T1.SDDUAL, T1.SDBCRC, T1.SDALLOC FROM PRODDTA.F4101 T0,PRODDTA.F4211 T1 WHERE ( ( T1.SDSO02 = :KEY1 AND T1.SDSO15 = :KEY2 AND T1.SDNXTR < :KEY3 AND T0.IMSTKT <> :KEY4 AND T1.SDITM >= :KEY5 AND T1.SDITM <= :KEY6 ) ) AND ( T0.IMITM = T1.SDITM ) ORDER BY T1.SDMCU ASC,T1.SDITM ASC,T1.SDLOCN ASC,T1.SDLOTN ASC',
hint_text => 'FULL(T0) FULL(T1)',
name => 'PLAN_FOR_R5542996A');


END;
/

вроде все привязывается, но какая то фигня выходит, индексы используются..

Plan hash value: 1505045477

--------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
--------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 327 | 124K| 2747 (1)| 00:00:01 | | |
| 1 | SORT ORDER BY | | 327 | 124K| 2747 (1)| 00:00:01 | | |
|* 2 | FILTER | | | | | | | |
| 3 | NESTED LOOPS | | 327 | 124K| 2746 (1)| 00:00:01 | | |
| 4 | NESTED LOOPS | | 327 | 124K| 2746 (1)| 00:00:01 | | |
|* 5 | TABLE ACCESS BY INDEX ROWID BATCHED| F4101 | 325 | 2600 | 80 (0)| 00:00:01 | | |
|* 6 | INDEX RANGE SCAN | F4101_0 | 779 | | 1 (0)| 00:00:01 | | |
| 7 | PARTITION RANGE ALL | | 1 | | 8 (0)| 00:00:01 | 1 | 15 |
|* 8 | INDEX RANGE SCAN | F4211P_9 | 1 | | 8 (0)| 00:00:01 | 1 | 15 |
|* 9 | TABLE ACCESS BY LOCAL INDEX ROWID | F4211 | 1 | 383 | 8 (0)| 00:00:01 | 1 | 1 |
--------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - filter(TO_NUMBER(:KEY6)>=TO_NUMBER(:KEY5))
5 - filter("T0"."IMSTKT"<>SYS_OP_C2C(:KEY4))
6 - access("T0"."IMITM">=TO_NUMBER(:KEY5) AND "T0"."IMITM"<=TO_NUMBER(:KEY6))
8 - access("T0"."IMITM"="T1"."SDITM")
filter("T1"."SDITM">=TO_NUMBER(:KEY5) AND "T1"."SDITM"<=TO_NUMBER(:KEY6))
9 - filter("T1"."SDNXTR"<SYS_OP_C2C(:KEY3) AND "T1"."SDSO02"=SYS_OP_C2C(:KEY1) AND
"T1"."SDSO15"=SYS_OP_C2C(:KEY2))

Note
-----
- SQL patch "PLAN_FOR_R5542996A" used for this statement
- this is an adaptive plan
...
Рейтинг: 0 / 0
05.10.2021, 11:28
    #40102026
SeaGate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите привязать нужный план к запросу..
ДенПо документации для 12.1 делаю
Это неправда. Документация по 12.1 это: https://docs.oracle.com/database/121/nav/portal_booklist.htm
Денвроде все привязывается, но какая то фигня выходит, индексы используются..
Нужно с query block указывать. Получить их через dbms_xplan.display% с format alias и/или outline.
В sql patch использовать уже с query block, вида: full(@sel$1 t@sel$1)
Редко JDE видно.
...
Рейтинг: 0 / 0
05.10.2021, 11:40
    #40102034
Ден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите привязать нужный план к запросу..
SeaGate,
ну да, на счет документации, погорячился)
отсюда взял https://oracle-base.com/articles/11g/sql-repair-advisor-11g

как я понял, я получаю для запроса с хинтом план и использовать оттуда в hint_text .
спасибо! попробую.

Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------

1 - SEL$1
5 - SEL$1 / T0@SEL$1
8 - SEL$1 / T1@SEL$1

Outline Data
-------------

/*+
BEGIN_OUTLINE_DATA
PX_JOIN_FILTER(@"SEL$1" "T1"@"SEL$1")
USE_HASH(@"SEL$1" "T1"@"SEL$1")
LEADING(@"SEL$1" "T0"@"SEL$1" "T1"@"SEL$1")
FULL(@"SEL$1" "T1"@"SEL$1")
FULL(@"SEL$1" "T0"@"SEL$1")
OUTLINE_LEAF(@"SEL$1")
OPT_PARAM('optimizer_index_caching' 80)
OPT_PARAM('optimizer_index_cost_adj' 20)
DB_VERSION('12.1.0.2')
OPTIMIZER_FEATURES_ENABLE('12.1.0.2')
IGNORE_OPTIM_EMBEDDED_HINTS
END_OUTLINE_DATA
*/
...
Рейтинг: 0 / 0
05.10.2021, 11:41
    #40102035
Ден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите привязать нужный план к запросу..
SeaGate
ДенПо документации для 12.1 делаю

Это неправда. Документация по 12.1 это: https://docs.oracle.com/database/121/nav/portal_booklist.htm
Денвроде все привязывается, но какая то фигня выходит, индексы используются..
Нужно с query block указывать. Получить их через dbms_xplan.display% с format alias и/или outline.
В sql patch использовать уже с query block, вида: full(@sel$1 t@sel$1)
Редко JDE видно.
Спасибо! получилось!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите привязать нужный план к запросу.. / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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