powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
25 сообщений из 48, страница 1 из 2
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766389
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

У меня есть 3 окружения и один проблематичный запрос, который на 2-х окружениях отрабатывает за секунды и юзает index unique scan по первичным ключам (4 табы и по каждой идет доступ по PK), а на третьем окружении запрос висит и висит и смотря на execution plan он не юзает индексы а идет table access storage full.

Обьемы данных примерно одинаковые на всех трех окружениях, статистика собрана, clustering_factor примерно одинаковый по используемым индексам, хотя он и очень большой и равен кол-ву строк в табах, но все равно даже с таким фактором быстро работает на остальных окружениях.

Два окружения Оракл 12, одно -10. Проблемы на одном из Оракл 12.

В какую сторону смотреть ?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766402
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniaMakarova,

какая статистика (объектная, гистограммы, системная) и как именно собрана?
конфигурация и настройки стендов примерно околоодинаковые?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766420
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна,

как собрана статистика не знаю, этим ДБА заведуют, я вижу last_analyzed . гистограммы есть по всем табам из запроса.

про настройки не знаю, думаю что собака зарыта там, но что конкретно надо смотреть?

Написала про эту проблему ДБА - они ответили что зарепортили SR в Oracle, незнаю как уж они разбирались и что такого нашли что сами починить не могут.
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766423
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
EvgeniaMakarova,

в сторону трассы 10053
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766450
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender,

а без него как? мне его будет трудно получить - ни разу не могла дождаться окончания выполнения запроса, и доступа на сервер нет, прав включить трассировку нет:-) идти к ДБА уже стремно , думала может есть такие прям классические причины когда уникальный индекс перестает браться оптимизатором?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766452
Фотография Aliona
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniaMakarovaЩукина Анна,
Написала про эту проблему ДБА - они ответили что зарепортили SR в Oracle,.
:)
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766460
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniaMakarovaидти к ДБА уже стремно , думала может есть такие прям классические причины если причины классические, то без DBA всё одно мало чего сможете сделать.
К тексту запроса доступ имеете? Вносить в него изменения можете? Получить параметры настроек оптимизатора для сессии на нормальных и на приболевшем инстансах - сможете?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766467
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Анна,

может, там память или процы другие
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766482
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniaMakarovaмне его будет трудно получить - ни разу не могла дождаться окончания выполнения запросаПлан строится при парсе. Выполнять запрос не обязательно.

EvgeniaMakarovaдоступа на сервер нетесли есть права на directory, то получить файл можно sqlем.

EvgeniaMakarovaправ включить трассировку нетalter session отобрали?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766494
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-EvgeniaMakarovaправ включить трассировку нетalter session отобрали?RTFM Prerequisites
To enable and disable the SQL trace facility, you must have ALTER SESSION system privilege.
To enable or disable resumable space allocation, you must have the RESUMABLE system privilege.
You do not need any privileges to perform the other operations of this statement unless otherwise indicated.
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766536
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна,
имею запрос, имею данные из v$parameter. какие конкретно параметры надо сравнить ?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766539
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-,

подскажите пожалуйста как запросом получить данные из трассировочного файла 10053
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766544
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна,


Эти параметры одинаковые на двух сравниваемых 12-шках :

optimizer_mode

optimizer_index_cost_adj

optimizer_index_caching

optimizer_dynamic_sampling

db_file_multiblock_read_count

hash_area_size

sort_area_size
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766557
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniaMakarovaЩукина Анна,


Эти параметры одинаковые на двух сравниваемых 12-шках :

optimizer_mode

optimizer_index_cost_adj

optimizer_index_caching

optimizer_dynamic_sampling

db_file_multiblock_read_count

hash_area_size

sort_area_sizeдавайте уже сам запрос
А вдруг там десяток фулл аутеров по лайкам
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766565
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymx,

запрос выглядит так (таблицы и столбцы переименованы.все остальное оригинальное, в том числе хинт :-)):
*Если что, то запрос писала не я, и каким бы он страшным и ужасным ни был, он работает быстро на других окружениях и юзает уникальные индексы:-)

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
SELECT   /*+FIRST_ROWS*/
    col2,
    col5
FROM
    (
        SELECT
            a.col2,
            a.col5
        FROM
            t4 a
        UNION ALL
        SELECT
            a.col2,
            DECODE(
                e.col5,
                NULL,
                -1,
                e.col5
            ) col5
        FROM
            (
                SELECT
                    a.col2
                FROM
                    t6 a
                WHERE
                    a.col2 NOT IN (
                        SELECT
                            col2
                        FROM
                            t4
                        WHERE
                            col2 = a.col2
                    )
            ) a,
            t2 b,
            t1 c,
            t3 d,
            t4 e
        WHERE
                a.col2 = b.col2 (+)
            AND
                b.col1 = c.col1 (+)
            AND
                c.col1 = d.col1 (+)
            AND
                d.col3 = e.col3 (+)
    ) b
ORDER BY col2;
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766572
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniaMakarovaподскажите пожалуйста как запросом получить данные из трассировочного файла 10053bfilename или external table
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766578
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
EvgeniaMakarova,

если вы не разбираетесь в этом и не отвечаете за сбор статистики, то вам и не надо этим заниматься. Просто скажите админам сравнить 10053 на обоих базах.
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766595
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT /*+FIRST_ROWS*/ col2, col5
  FROM (SELECT a.col2, a.col5 FROM t4 a
        UNION ALL
        SELECT a.col2, -1 col5 FROM (SELECT col2 FROM t6 MINUS SELECT col2 FROM t4) a
         WHERE NOT EXISTS (select 'null' from t2 b
                                         join t1 c on b.col1 = c.col1
                                         join t3 d on c.col1 = d.col1
                                         join t4 e on d.col3 = e.col3
                            where a.col2 = b.col2)
        UNION ALL
        SELECT a.col2, e.col5              FROM (SELECT col2 FROM t6 MINUS SELECT col2 FROM t4) a
                                           join t2 b on a.col2 = b.col2
                                           join t1 c on b.col1 = c.col1
                                           join t3 d on c.col1 = d.col1
                                           join t4 e on d.col3 = e.col3
        ) b
ORDER BY col2;
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766639
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dshedoo,

это запрос уже юзает уникальные индексы и кост упал радикально.
Раскройте тайну, как Вы рассуждали и почему все же индексы не юзаются в исходной версии ?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766654
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кост упал а запрос так и висит(
слушайте, один из PK индексов (то есть уникальный) показывает в плане Кардинальность 19760 , вместо 1. почему такое может быть ?
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766658
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniaMakarovaДва окружения Оракл 12, одно -10. Проблемы на одном из Оракл 12.


Обe 12C на одинаковых patchset/patch? Если нет возможности/умения анализировать 10053, провeрить adaptive. С ним зачастую чудеса в решете. Смотри explain plan на обеих 12c на предмет "this is adaptive plan", "statistics feedback used for this statement" ну и dynamic sampling.

SY.
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766664
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,
да, на проблематичном сервере план пишет что он адаптив
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766671
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniaMakarovaда, на проблематичном сервере план пишет что он адаптив

Т.e. две 12C это apples & oranges. В SQL*Plus на обеих 12C выдай SHOW PARAMETER ADAPTIVE и сравни.

SY.
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766677
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgeniaMakarova,

Я бы начал так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
SELECT   /*+FIRST_ROWS*/
    col2,
    col5
FROM
    (
        SELECT
            f.col2,
            f.col5
        FROM
            t4 f
        UNION ALL
        SELECT
            a.col2,
            nvl(e.col5,-1) col5
        FROM
            (   SELECT g.col2
                  FROM t6 g
                minus
                SELECT col2
                  FROM t4
            ) a,
            t2 b,
            t1 c,
            t3 d,
            t4 e
        WHERE a.col2 = b.col2 (+)
          AND b.col1 = c.col1 (+)
          AND b.col1 = d.col1 (+)
--          AND c.col1 = d.col1 (+)
          AND d.col3 = e.col3 (+)
    ) b
ORDER BY col2;



1. переправил все алиасы на уникальные
2. прописал minus
3. decode -> nvl
4. таблица t1 c, нужна для not exists только ...

но первое - обязательно, у Вас 3 алиаса с именем "a" что может запутать Oracle (да и Вас)
...
Рейтинг: 0 / 0
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
    #39766678
EvgeniaMakarova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXL, мне не надо переписывать, мне надо понять почему он индексы не юзает. Запрос отстойный это ясное дело.
...
Рейтинг: 0 / 0
25 сообщений из 48, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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