powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите привязать нужный план к запросу..
4 сообщений из 4, страница 1 из 1
Помогите привязать нужный план к запросу..
    #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
Помогите привязать нужный план к запросу..
    #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
Помогите привязать нужный план к запросу..
    #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
Помогите привязать нужный план к запросу..
    #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
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите привязать нужный план к запросу..
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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