powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / запрос из приложения vs запрос из IDE
13 сообщений из 13, страница 1 из 1
запрос из приложения vs запрос из IDE
    #40135919
mlc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Вопрос может и ламеркий, но все же. Столкнулся с такой ситуацией, что один и тот же запрос запущенный из бизнес-приложения и SQL Developer'a работает по разному (разный план, разное время выполнения). Запрос срейдний с некоторым количеством скаляров в условиях фильтрации. Порядок тестирования таков:
1. Выполняют определенные действия в приложении, чтобы выполнить запрос. Приложение виснет.
2. В gv$session ищу сессию и SQL_ID (Oracle RAC). Запрос в представлении с замененными скалярами на бинды, так как cursor_sharing=FORCE.
3. Выполняю найденный запрос из SQL Developer'a, затолкав его в REF курсор с подставлением биндов. Запрос работает молниеносно.

Собственно вопрос, почему из IDE запрос может идти по другому плану, хотя ничего не меняется? И второй вопрос, как выполнить запрос из IDE так, чтобы он работал также долго?

Спасибо.
...
Рейтинг: 0 / 0
запрос из приложения vs запрос из IDE
    #40135922
mlc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из того что сделал я:
1. Пересобрал статистику.
2. Проверил параметры оптимизатора (gv$sql_optimizer_env) у запроса из IDE и из приложения - одинаковые.
3. сравнил на всякий случай параметры инстансов - одинаковые.
...
Рейтинг: 0 / 0
запрос из приложения vs запрос из IDE
    #40135929
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlc,

4. Протри монитор чистой тряпочкой
5. Приведи запросы и планы
6. Если запросы имеют один и тот же sql_id => gv$sql_shared_cursor
...
Рейтинг: 0 / 0
запрос из приложения vs запрос из IDE
    #40135930
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя ничего не меняется?

:1, 123, '123' - это можно счесть "ничего не меняется", но меняется.

Запрос в представлении с замененными скалярами на бинды

Сделайте пример запроса, и покажите, что на что меняете.
...
Рейтинг: 0 / 0
запрос из приложения vs запрос из IDE
    #40135932
mlc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm,

я ничего не меняю. Скаляры меняются на бинды из-за cursor_sharing=force.
...
Рейтинг: 0 / 0
запрос из приложения vs запрос из IDE
    #40135935
mlc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__,

4. Спасибо, протёр.
5. Что вам даст запрос из неизвестных вам таблиц? Почему запрос из приложения тормозит я и сам понимаю. Меня интересует почему он может не тормозить из IDE.
6. Сюда ещё на заглядывал, спасибо.
...
Рейтинг: 0 / 0
запрос из приложения vs запрос из IDE
    #40135937
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlc
5. Что вам даст запрос из неизвестных вам таблиц? Почему запрос из приложения тормозит я и сам понимаю. Меня интересует почему он может не тормозить из IDE

Делаешь trace 10053 и не гадаешь.
...
Рейтинг: 0 / 0
запрос из приложения vs запрос из IDE
    #40135939
mlc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlc
AlexFF__,
6. Сюда ещё на заглядывал, спасибо.


Запрос будет иметь в любом случае другой sql_id, так как мне приходится дописывать схему к объектам.
...
Рейтинг: 0 / 0
запрос из приложения vs запрос из IDE
    #40135941
mlc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|
mlc
5. Что вам даст запрос из неизвестных вам таблиц? Почему запрос из приложения тормозит я и сам понимаю. Меня интересует почему он может не тормозить из IDE

Делаешь trace 10053 и не гадаешь.


как выполнить 10053 трассу сессии приложения? Через dbms_system.set_ev? Сессия открывается непосредственно перед выполнением SQL запроса.
...
Рейтинг: 0 / 0
запрос из приложения vs запрос из IDE
    #40135943
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
mlc
AlexFF__|
пропущено...

Делаешь trace 10053 и не гадаешь.


как выполнить 10053 трассу сессии приложения? Через bms_system.set_ev? Сессия открывается непосредственно перед выполнением SQL запроса.

http://orasql.org/2021/05/20/oracle-diagnostic-events-cheat-sheet/
Код: plsql
1.
alter system set events 'trace[SQL_Compiler.* | SQL_Execution.*][SQL: ...]'
...
Рейтинг: 0 / 0
запрос из приложения vs запрос из IDE
    #40135944
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlc

как выполнить 10053 трассу сессии приложения? Через dbms_system.set_ev? Сессия открывается непосредственно перед выполнением SQL запроса.


alter session set events '10053 trace name context forever, level 1';
.................
alter session set events '10053 trace name context off';

Если запрос уже распарсен, что чуда не будет, удали запрос из shared_pool
...
Рейтинг: 0 / 0
запрос из приложения vs запрос из IDE
    #40135945
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
mlc
И второй вопрос, как выполнить запрос из IDE так, чтобы он работал также долго?
mlc
Запрос будет иметь в любом случае другой sql_id, так как мне приходится дописывать схему к объектам.

сделайте alter session set current_schema и запускайте запрос as-is с литералами
...
Рейтинг: 0 / 0
запрос из приложения vs запрос из IDE
    #40135947
mlc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо, ушел мучать 10053.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / запрос из приложения vs запрос из IDE
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (5): Анонимы (4), Yandex Bot 5 мин.
Пользователи онлайн (8): Анонимы (5), Bing Bot, Google Bot 1 мин., Yandex Bot 1 мин.
x
x
Закрыть


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