|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
ТС решил что в веб проектах (трехзвенке) здорово писать как при проектах КЛИЕНТ-СЕРВЕР (повтори запрос) Вставил в код среднего слоя код с хранимками. Теперь вставит интерцепторы именно для оракле. Хранимки нужно писать с ограничениями. Не дай бог кто вставит туда переменную. Нужен штат проверяльщиков кода и шаблоны приказов о наказании нерадивых. Мое имхо что интерцептор это триггер. Мне очень редко приходилось в PL ПОВТОРЯТЬ ОПЕРАЦИЮ. Хорошим тоном было сначала проверить созданы ли условия)). Итого, интерцептор служит для Отката при валидации... Логирования.. И т.д. Но для повтора имхо технически не красиво. Другой вопрос, что при нагрузке после райзе контекст вообще может уплыть и изменится. Мы движемся к асинхронности. Даже эксплорер переспрашивает тупым вопросом: "повторить уже отправленный запрос?". Транзакция в миллисекунду встанет с райзе на аппСервере в другом континенте. Надо протестить время и потери бизнеса). Сделать ТЕО. Нагрузочное тестирование. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 07:06 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous PetroNotC Sharp Я знаю бизнес логику). Давайте по ней вопросы. Давайте. Берем бизнес-процесс заведения нового клиента в банке. Он по факту достаточно сложен и может содержать сотни вызовов плюс несколько интеграционных взаимодействий. Но мы упростим до предела - всего одна БД, всего пяток необходимых действий по регистрации. В базе создан пакет содержаший метод registerNewClient(...), инкапсулирующий эти действия. Каким образом вызов указанного метода противоречит тезису про "короткие транзакции без состояния"? Пакет на PL пишет прогер с должностью Разработчик БД. Не java программист. Если это не студент то он напишет в заголовке хранимки переменную/константу. Всё. Приплыли. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 07:14 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
ТС версию бд хотя бы привели. Вроде взрослый а пруфа на обсуждение в ветке оракле я не вижу от вас. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 08:01 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Почему обычным балансировщиком не направить на другую базу? Для автоматов просто завершают сессию. 2. "А ведь он был кому-то нужен" (ц) Винни-Пух. P.S. Если вам трудно держать в голове контекст "длинных" сообщений - просто игнорируйте их. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 09:52 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, 1.конкретнее. Разве в ИС где проблема выгнать юзверей и они работают по ночам нет балансировщика? Пример есть? Мы обновляли по вечерам систему. А вы? 2. Нормальный автомат умеет реконнект. ЗЫ. Не пишите длинно если пару фраз выше не можете понять. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:03 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Мы обновляли по вечерам систему. А вы? И знаете - везде было по разному . Совсем круто, правда, не бывало, но даже с процедурой остановки бывали ньюансы. Разные. По этому вот так огульно: "балансирощик, перенаправление, другая база" - я бы поостерёгся. А вы? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:11 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Мы здесь для генерации идей. И советов. Как в "что где когда". Че вы так возбудились на решения: - мессага юзверю - Перелогинься! - балансировщик - обновить в окно ? Есть еще 5 решений чисто админских и не по java. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:31 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Я "возбудился" на странное предложение mayton. Возможно, я понимаю, откуда это у него, но, блин, в очередной раз - крайне не к месту. А лично вы достали как тот математик из анекдота: вроде всё правильно говорит, но каждый раз непонятно - а что с этим делать-то? P.S. Полезность мозговых штурмов сильно преувеличена - у них крайне ограниченная область применения. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:35 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Сложно вам жить. Вы не в своей тарелке. Вы железячник. А не софтовик. Почему я его понимаю а вы нет) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:37 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Хреновый из вас телепат. Или шар протрите или одно из двух. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:38 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Ну вот я писал на PL и обновлял систему федерального уровня. А вы? Хранимки писали? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:38 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Хреновый из вас телепат. Или шар протрите или одно из двух. Как бабка на скамейке. Брюзжишь что непонятно ей про балансировщик. С луны что ли. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:41 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Представим себе ВИ. Или юз кейс. - Маша уборщица посмотрела расписание уборки из XP - вернула в пул - админ обновил сигнатуру или.... - вечером гендир Иванов взял из пула коннект и при запросе получил ORA Я очень сомневаюсь, что триггер на аппСервере хорошее решение. Как то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:46 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
А я находил тупые косяки разработчиков в системе, которая много лет использовалась во множестве регионов РФ. Сопровождал и обновлял одну из таких региональных систем. Не в одно лицо, конечно, но и не "сбоку смотрел". Видел и дебильные реализации и халтурные исправления багов и более-менее успешные попытки свалить проблемы разработки на кривые руких технарей владельца системы. Разное, в общем, бывало. И, более того - в разных местах, а не только на одной конкретной системе. И знаете что? Не надо быть гением, чтобы даже по результату работы понимать: "Ваш код - дерьмо". Не говоря уж о ситуациях, когда этот код можно просто увидеть. P.S. С федеральными системами тоже сталкивался. Уже "со стороны", но тоже интересно. Особенно - на одной презентации уже готовой системы перед планируемым внедрением. Оказалось, что разработчики даже не почесались не то, что сделать - просто подумать о тривиальной фиче. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:50 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Если преувеличивать, то я считаю что решение интерцептор дерьмо.. Но вы же склоняете к осторожности). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 11:05 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Дискуссия зашла в тупик. У автора получается ситуация что одни не могут - а другие не хотят. Разумеется моё предложение о рассылке maintenance было шуткой. Oracle по протоколу кидает ORA-04068 когда пакет инвалидировался. Предполагается что программист знает что это и "принимает решение". Вопрос где и на каком уровне принять решение? Представте на секундочку что ваш браузер на ошибку HTTP-5** будет делать авто-повтор реквеста. Кому это надо? А кому надо чтобы циклический реквест PL-пакета на стороне PL-машины создал нагрузку. Иногда в сетевых протоколах заложен принцип минимального ущерба. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 11:15 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
mayton, +1 Кроме того, с 11ой версии оракле было много изменений по данной ошибке. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 11:27 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
mayton А кому надо чтобы циклический реквест PL-пакета на стороне PL-машины создал нагрузку. Если бы я просил совет по оракелю - то спросил бы его в профильной ветке, где есть специалисты именно по оракелю. Теперь про инсинуации с retry по ORA-04068- медленно, специально для быстрых разумом теоретиков кунг-фу Сценарий 1: простая перекомпиляция пакета. Код: 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.
Сценарий 2: перекомпиляция пакета привела к неустранимым проблемам. Код: 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.
Мораль: знание некоторых принципов не всегда избавляет от необходимости знать некоторые частности. Кто хочет поиграться лично - вот игрушка, способная провоцировать 4068 на 19.0: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 14:54 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, А мне кажется ты Elic испугался. Вопросы то плевые с точки зрения DBA ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 15:03 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, >Сценарий 1: простая перекомпиляция пакета. = в ветке java еще лучше тест с интерцепторами ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 15:13 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous -- Повторяем вызов: ... В текущей системе, с которой работают, большинство пакетов как пакеты, но есть кучка пакетов где после перекомпиляции повторное обращение ситуацию не исправляет. Только отлогиниться, залогиниться обратно. Что именно в коде (зависимости пакетов) дает такой эффект - не разбирался. Oracle EE 11.2.0.3.0 64 bit ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 15:50 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Вопрос в том обязан ли клиент вызвать пакет UTL_RECOMP и пересобрать это всё по первой ошибке? В ситуации когда повторный колл не исправляет ошибку (несколько интерфейсных частей пакетов были изменены на сервере). Я думаю что не обязан. Клиент (обычное веб-приложение к примеру) не настолько умен чтобы вызывать правильные команды компилляции. И в этом случае хорошее решение со стороны клиента это - просто подождать некое протокольное время и повторить интеракцию. Здесь хорошо подходит шаблон аварийный размыкатель (Cirquit Breaker) который на уровне сервиса заблокирует обращения других клиентов (они будут получать стандартную плашку HTTP-5** с сообщением что ведутся технические работы). Никаких умных действий с их стороны быть не должно. Кто создал проблему на сервере - тот и должен ее решать. Технические детали протокола аварийного выключателя (время размыкания и прочее) - обсуждается. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 16:03 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev В текущей системе, с которой работают, большинство пакетов как пакеты, но есть кучка пакетов где после перекомпиляции повторное обращение ситуацию не исправляет. Это совсем другая история, к 4068 не относящаяся от слова "совсем" Попадаете на ORA-06508 PL\SQL could not find program unit being called ? Если да, то тема эта, кмк, обсосана уже. Если нет MOS, то поищите хотя бы по оракельской ветке 1. Не походит автоматическая рекомпиляция по зависимостям - смотрите на полный стек ошибки. 2. Проблема с last_ddl_time 3. Именно в этой ситуации может помочь сброс состояния пакетов посредством reset_package. 4. Если живете на 11.2, то поднимитесь хотя бы до последнего патчсета (11.2.0.5, если склероз не врёт). 11.2.0.3 багованный был, AFAIR ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 16:09 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
mayton Вопрос в том обязан ли клиент вызвать пакет UTL_RECOMP и пересобрать это всё по первой ошибке? Да откуда вы всё это берете?! Какой рекомп от приложения, длянафига? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 16:12 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous mayton Вопрос в том обязан ли клиент вызвать пакет UTL_RECOMP и пересобрать это всё по первой ошибке? Да откуда вы всё это берете?! Какой рекомп от приложения, длянафига? Я возможно отстал от жизни. А что 11-тка уже автоматом восстанавливает зависимые интерфейсы пакетов? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 16:15 |
|
|
start [/forum/topic.php?fid=59&msg=40069896&tid=2120449]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
143ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 261ms |
0 / 0 |