powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
11 сообщений из 11, страница 1 из 1
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
    #39389473
expimp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простой запрос

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select 
    count(order_id) 
from 
    tab_order
where 
        contract_number = :p1
    and creation_date > to_date(:p3);

Интервал, рассматриваемый запросом, должен быть 10 минут.
Выполнение мгновенное. Затраты ничтожны.
Вдруг, я обнаруживаю этот запрос на первом месте с большим отрывом по CPU и buffer_gets
через v$sql.

Понимаю, что в какой-то момент передача параметров "залипла".
И запрос продолжает выполнятья с какой-то, давно прошедшей датой и contract_number.
Написал удобочитаемый запрос к v$sql_bind_capture и течении недели регулярно нажимаю Enter

Вот до 14 января все было нормально, а потом "залипло"
Код: plaintext
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.
WATCH_TIME  CATCH_TIME     PARAM_NAME      VALUE              
----------- -------------- --------------- --------------------
13.01 17:56 13.01 17:46:55 TIME POINT      13.01.2017 17.36.56 
                           CONTRACT_NUMBER 218886523           

WATCH_TIME  CATCH_TIME     PARAM_NAME      VALUE             
----------- -------------- --------------- -------------------
14.01 19:11 14.01 19:07:47 TIME POINT      14.01.2017 18.57.47
                           CONTRACT_NUMBER 229176064          
 
WATCH_TIME  CATCH_TIME     PARAM_NAME      VALUE             
----------- -------------- --------------- -------------------
15.01 13:33 15.01 13:33:40 TIME POINT      14.01.2017 22.28.11
                           CONTRACT_NUMBER 126333506          
 
WATCH_TIME  CATCH_TIME     PARAM_NAME      VALUE             
----------- -------------- --------------- -------------------
16.01 13:58 16.01 13:58:03 TIME POINT      14.01.2017 22.28.11
                           CONTRACT_NUMBER 126333506

WATCH_TIME  CATCH_TIME     PARAM_NAME      VALUE             
----------- -------------- --------------- -------------------
17.01 10:59 17.01 10:59:16 TIME POINT      14.01.2017 22.28.11
                           CONTRACT_NUMBER 126333506

WATCH_TIME  CATCH_TIME     PARAM_NAME      VALUE             
----------- -------------- --------------- -------------------
18.01 10:37 18.01 10:37:35 TIME POINT      14.01.2017 22.28.11
                           CONTRACT_NUMBER 126333506

WATCH_TIME  CATCH_TIME     PARAM_NAME      VALUE             
----------- -------------- --------------- -------------------
19.01 16:14 19.01 16:14:58 TIME POINT      14.01.2017 22.28.11
                           CONTRACT_NUMBER 126333506          

Ситуация воспроизводима.
т.е. Было обновление системы - перезапуск.
Несколько дней работало нормально.
Потом затык.
Джависты смотрял логи своего приложения и клянутся, что параметры передаются обновленные, правильные.

Пока пытался пронизать эту загадку вселенной, наткнулся на подобный, простенький запрос с count(*).
Только к другой таблице.
И тоже висит.

Мое предложение разработчикам простое - пусть забирают значение из процедуры, хранимой на сервере.

>>> Но сам вопрос остается - в чем может быть дело?!<<<
...
Рейтинг: 0 / 0
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
    #39389494
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
expimp,

мне кажется проблема на стороне приложение. При чем очень сомневаюсь что хибернейт виноват
...
Рейтинг: 0 / 0
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
    #39389513
expimp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artasexpimp,

мне кажется проблема на стороне приложение. При чем очень сомневаюсь что хибернейт виноват

Так приложенщики показывают мне логи - и я им верю, естественно, - что параметры на вход в Java подаются правильные.
Ну, не могу же я подозревать сам Oracle.
)
...
Рейтинг: 0 / 0
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
    #39389518
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
expimpТак приложенщики показывают мне логи -
)
Логи чего? JDBC драйвера, надеюсь?
...
Рейтинг: 0 / 0
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
    #39389646
expimp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевexpimpТак приложенщики показывают мне логи -
)
Логи чего? JDBC драйвера, надеюсь?

Оказалось, мы не правильно друг-друга поняли.
Как я их понимал, что у них есть длинная простыня, где зафиксированы все параметры
вместе с их таймстемпами, которые передавались на сервер DB.
Не, ничего нет!

Правда, теперь, слава богу, они не грешат, мол это Oracle "чё-то".
Уточнил, что для этого запроса Хибернейт не используется.

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

Ищу советов.
...
Рейтинг: 0 / 0
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
    #39389668
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
expimpНаписал удобочитаемый запрос к v$sql_bind_capture и течении недели регулярно нажимаю Enter

V$SQL_BIND_CAPTURE
Bind data

One of the bind values used for the bind variable during a past execution of its associated SQL statement. Bind values are not always captured for this view . Bind values are displayed by this view only when the type of the bind variable is simple (this excludes LONG, LOB, and ADT datatypes) and when the bind variable is used in the WHERE or HAVING clauses of the SQL statement.
...
Рейтинг: 0 / 0
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
    #39389672
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
expimp,

сервер приложений в v$session виден
...
Рейтинг: 0 / 0
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
    #39389697
expimp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artasexpimp,

сервер приложений в v$session виден

Конечно.
Только запрос выполняется сотни тысяч раз.
Никакого шедулера у меня на ПРОДе нет - нет прав.
Только нажимать на Enter каждую секунду.
Но рука устанет.
Беда в том, что v$sql_bind_capture записывается раз в 15 минут.
Поэтому, у меня тем более не может быть четкого, доказательного соответствия,
что ботва идет с одного сервера или с разных.
Правда, в v$sql_bind_capture я всегда вижу только один набор. Тот, который неправильный.
Других нет.

Ну у разработчиков других идей нет - покажи нам, с какого сервера, и все тут!
)
...
Рейтинг: 0 / 0
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
    #39389704
expimp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловexpimpНаписал удобочитаемый запрос к v$sql_bind_capture и течении недели регулярно нажимаю Enter

V$SQL_BIND_CAPTUREBind data

One of the bind values used for the bind variable during a past execution of its associated SQL statement. Bind values are not always captured for this view . Bind values are displayed by this view only when the type of the bind variable is simple (this excludes LONG, LOB, and ADT datatypes) and when the bind variable is used in the WHERE or HAVING clauses of the SQL statement.



Спасибо!
Но наш запросик по всем параметрам подходит для отслеживания.
Тем более, что сначала мы видим, что все хорошо - данные меняются.
А потом все плохо - висим.
И так повторяется после перезапуска.

Перехват параметров просто подтверждает, что у нас беда, что дата залипла.
А что дата залипла, видно по линейно увеличивающемуся потреблению ЦПУ.
Все согласуется.
...
Рейтинг: 0 / 0
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
    #39389986
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
expimp,

Планов нет, но по описанию это классические out-of-range предикаты.
Системное исправление в разделе Preventing "out of range" condition Best Practices for Gathering Optimizer Statistics with Oracle Database 12c
Если текст постоянный, по-быстрому можно SQL Plan Baseline создать, используя приемлемый план из AWR/shared pool, если есть. Если нет, то выполнить с нужным планом и загрузить в baseline.
...
Рейтинг: 0 / 0
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
    #39390036
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
expimpИщу советов.
Ну как определилось - включить трассировку сессий. На предмет реальных параметров.
Так же, если есть возможность, то включить логгирование на уровне JDBC драйвера.
Можно тоже динамически - дернул за рубильник началась запись.
Правда будет проседание основного приложения.

По хорошему - нужен стенд на котором все воспроизводится. :)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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