|
|
|
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
|
|||
|---|---|---|---|
|
#18+
Простой запрос Код: plaintext 1. 2. 3. 4. 5. 6. 7. Интервал, рассматриваемый запросом, должен быть 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. Ситуация воспроизводима. т.е. Было обновление системы - перезапуск. Несколько дней работало нормально. Потом затык. Джависты смотрял логи своего приложения и клянутся, что параметры передаются обновленные, правильные. Пока пытался пронизать эту загадку вселенной, наткнулся на подобный, простенький запрос с count(*). Только к другой таблице. И тоже висит. Мое предложение разработчикам простое - пусть забирают значение из процедуры, хранимой на сервере. >>> Но сам вопрос остается - в чем может быть дело?!<<< ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2017, 13:29 |
|
||
|
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
|
|||
|---|---|---|---|
|
#18+
expimp, мне кажется проблема на стороне приложение. При чем очень сомневаюсь что хибернейт виноват ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2017, 14:03 |
|
||
|
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
|
|||
|---|---|---|---|
|
#18+
artasexpimp, мне кажется проблема на стороне приложение. При чем очень сомневаюсь что хибернейт виноват Так приложенщики показывают мне логи - и я им верю, естественно, - что параметры на вход в Java подаются правильные. Ну, не могу же я подозревать сам Oracle. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2017, 14:24 |
|
||
|
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
|
|||
|---|---|---|---|
|
#18+
expimpТак приложенщики показывают мне логи - ) Логи чего? JDBC драйвера, надеюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2017, 14:29 |
|
||
|
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевexpimpТак приложенщики показывают мне логи - ) Логи чего? JDBC драйвера, надеюсь? Оказалось, мы не правильно друг-друга поняли. Как я их понимал, что у них есть длинная простыня, где зафиксированы все параметры вместе с их таймстемпами, которые передавались на сервер DB. Не, ничего нет! Правда, теперь, слава богу, они не грешат, мол это Oracle "чё-то". Уточнил, что для этого запроса Хибернейт не используется. теперь просят, чтобы я уточнил, с какого сервера приложений идет эта ботва (у нас их 18). Подозревают, что проблемы только на одном. Но вряд ли. Ищу советов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2017, 16:35 |
|
||
|
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2017, 16:53 |
|
||
|
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
|
|||
|---|---|---|---|
|
#18+
expimp, сервер приложений в v$session виден ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2017, 16:57 |
|
||
|
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
|
|||
|---|---|---|---|
|
#18+
artasexpimp, сервер приложений в v$session виден Конечно. Только запрос выполняется сотни тысяч раз. Никакого шедулера у меня на ПРОДе нет - нет прав. Только нажимать на Enter каждую секунду. Но рука устанет. Беда в том, что v$sql_bind_capture записывается раз в 15 минут. Поэтому, у меня тем более не может быть четкого, доказательного соответствия, что ботва идет с одного сервера или с разных. Правда, в v$sql_bind_capture я всегда вижу только один набор. Тот, который неправильный. Других нет. Ну у разработчиков других идей нет - покажи нам, с какого сервера, и все тут! ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2017, 17:27 |
|
||
|
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
|
|||
|---|---|---|---|
|
#18+
Андрей Панфилов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. Спасибо! Но наш запросик по всем параметрам подходит для отслеживания. Тем более, что сначала мы видим, что все хорошо - данные меняются. А потом все плохо - висим. И так повторяется после перезапуска. Перехват параметров просто подтверждает, что у нас беда, что дата залипла. А что дата залипла, видно по линейно увеличивающемуся потреблению ЦПУ. Все согласуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2017, 17:32 |
|
||
|
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2017, 04:24 |
|
||
|
Запрос Java через Hybernate в какой-то момент перестает использовать передаваемыепараметры
|
|||
|---|---|---|---|
|
#18+
expimpИщу советов. Ну как определилось - включить трассировку сессий. На предмет реальных параметров. Так же, если есть возможность, то включить логгирование на уровне JDBC драйвера. Можно тоже динамически - дернул за рубильник началась запись. Правда будет проседание основного приложения. По хорошему - нужен стенд на котором все воспроизводится. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2017, 09:32 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39390036&tid=1886595]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
183ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 282ms |
| total: | 523ms |

| 0 / 0 |
