Oracle не использует лучший dbplan

я борюсь с производительностью в оракуле. Ситуация такова: подсистема B имеет dblink для главной БД A. в системе B запрос завершается через 15 секунд через dblink, план db использует соответствующие индексы.

Если тот же запрос должен сейчас заполнить таблицу в хранимой процедуре, Oracle использует другой план с полным сканированием. что бы я ни пытался (подсказки), я не могу избавиться от этих полных сканирований. это ужасно.

Что я могу сделать?


person user    schedule 27.07.2017    source источник
comment
Пожалуйста, предоставьте свой код и соответствующие определения таблиц   -  person Rene    schedule 27.07.2017


Ответы (3)


Oracle Query Optimizer пробует 2000 различных возможностей и выбирает наилучшую в обычных ситуациях. Но если вы думаете, что выбрали неправильный план, вы можете заподозрить следующие случаи:

1- Ваши гистограммы, принадлежащие таблицам запросов, устарели.

2- Ваши индексы не могут быть использованы из-за ошибочного запроса.

3- Вы можете использовать подсказки индексов, чтобы принудительно использовать индексы.

4- Вы можете использовать SQL Advisor или запустить TKProf для анализа производительности и решить, что не так или что вызвало плохую производительность. Проверьте сеть, значения дискового ввода-вывода и т. д.

Если вы поделитесь своим запросом, мы можем предоставить вам больше информации.

person mehmet sahin    schedule 27.07.2017

Похоже, мы не принимаем одни и те же запросы в двух разных условиях. Первый случай - это простой выбор поверх dblink, а второй случай - "вставить как выбор поверх dblink".

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

-Абхи

person Abhishek Dixit    schedule 27.07.2017

после многих попыток я смог создать новый план БД с помощью Enterprise Manager. теперь работает идеально.

person user    schedule 02.08.2017