Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3 4 5 6 7 8 9 10 11      [все]
 Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Когллеги, подскажите плиз, какие существуют варианты воткнуть обработку oracle exception ORA-04068 в приложении, использующем MyBatis?
Обработка ora-4068, понятно, заключается в повторе вызвавшей сбой операции.
Наши джависты вменяемого решения предложить отчего-то не в состоянии - предлагают чуть ли не все вызовы в проекте catch-ами обвешивать.
12 май 21, 13:29    [22320941]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
IMHO Не допускать таких ситуаций на проде.

Не хранить state в пакетах (глобальные переменные) или корректно проводить накат update'ов/upgrade'ов (не допускать invalid package и перекомпилировать в момент update'а/upgrade'а)

Обработка ora-4068, понятно, заключается в повторе вызвавшей сбой операции.


Совершенно не понятно.

Например последовательность вызовов:

CSC_CONTEXT_PKG.Initialize( p_object => some_id );
CSC_PROCESS_PKG.Calculate;

может вызвать ORA-6508, ORA-04068 на второй операции, а повторять скорее всего нужно все. Т.к. "state of packages" могли стать уже не корректные, а устанавливаются именно в первой операции.

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

Или реализовать свой helper класс / ф-цию / процедуру (например свой Statement/CallableStatement) и всюду использовать его вместо стандартного.

Ну или вообще сделать свой JDBC драйвер с нужным поведением.

Сделать можно все, вопрос насколько проблема сильно стоит (сколько денег на решение готовы потратить).

IMHO
12 май 21, 13:50    [22320954]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
Ну и вообще-то, если залезть в доку MyBatis тут же находится:

https://mybatis.org/mybatis-3/java-api.html

Дока
SqlSessionFactory
SqlSessionFactory has six methods that are used to create SqlSession instances. In general, the decisions you'll be making when selecting one of these methods are:

Transaction: Do you want to use a transaction scope for the session, or use auto-commit (usually means no transaction with most databases and/or JDBC drivers)?
Connection: Do you want MyBatis to acquire a Connection from the configured DataSource for you, or do you want to provide your own?
Execution: Do you want MyBatis to reuse PreparedStatements and/or batch updates (including inserts and deletes)?


Дока
Statement Execution Methods
These methods are used to execute SELECT, INSERT, UPDATE and DELETE statements that are defined in your SQL Mapping XML files. They are pretty self explanatory, each takes the ID of the statement and the Parameter Object, which can be a primitive (auto-boxed or wrapper), a JavaBean, a POJO or a Map.

<T> T selectOne(String statement, Object parameter)
<E> List<E> selectList(String statement, Object parameter)
<T> Cursor<T> selectCursor(String statement, Object parameter)
<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey)
int insert(String statement, Object parameter)
int update(String statement, Object parameter)
int delete(String statement, Object parameter)


Хотя не знаю, что проще/универсальнее переопределить. JDBC или MyBatis классы.
12 май 21, 13:56    [22320955]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
IMHO Не допускать таких ситуаций на проде.

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

Leonid Kudryavtsev

корректно проводить накат update'ов/upgrade'ов (не допускать invalid package и перекомпилировать в момент update'а/upgrade'а)

Отсутствие invalid package не отменяет warning ora-4068.

Leonid Kudryavtsev

Например последовательность вызовов:

Не актуально, необходимая инициализация производится по требованию.

Leonid Kudryavtsev

реализовать свой helper класс / ф-цию / процедуру (например свой Statement/CallableStatement) и всюду использовать его вместо стандартного.

Ну или вообще сделать свой JDBC драйвер с нужным поведением.

Свой драйвер уже рассмотрели, нашли неудобным в плане эксплуатации/поддержки.

Вопрос - куда можно включиться в этом самом батике.
Если бы приложение работало непосредственно с JDBC, то обернули бы exec-и и на том успоколились.
А при батике непонятно.

Сообщение было отредактировано: 12 май 21, 13:57
12 май 21, 14:05    [22320964]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous

Вопрос - куда можно включиться в этом самом батике.

Если я правильно понимаю доку, класс для SqlSessionFactory должен задаваться в конфигах. Делаете свою реализацию.

Дальше переопределяете/наследуете SqlSession, переопределяете 7 методов для выполнения SQL команд.

с MyBatis не работал. Сужу по доке и общей логике "паттерна Factory" )))

Сообщение было отредактировано: 12 май 21, 14:06
12 май 21, 14:14    [22320975]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous

Отсутствие invalid package не отменяет warning ora-4068.

Я вообще очень редко вижу ora-4068. Обычно ситуации invalid state of package у меня приводят к 6508.

Если при накате патчей в базе никого не было (после патча все переподключились) и не было invalid package, то ora-4068 IMHO взятся не откуда.

А результат работы и переповторов в процессе наката - все равно не предсказуемо.
12 май 21, 14:19    [22320980]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
andrey_anonymous

Отсутствие invalid package не отменяет warning ora-4068.

Я вообще очень редко вижу ora-4068.

Накат пакета без остановки приложения (отключения пула коннектов) приводит к 4068 по всем живым сессиям пула, в рамках которых ранее дергался пакет, при обращении к пакету или зависимым от него объектам.

За наводку спасибо, парни бодро тыкают мышками, стучат кнопками и размышляют о переопределении defaultSqlSession и executor.
12 май 21, 14:40    [22320988]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
Он же верно написал. Не надо допускать таких ситуаций.
У вас состояние в сессии. Вы сменили хранимку не отключив клиента.
Вы гарантируете что банковская транзакция не сломается?
Я бы лечил переконнектом. С откатом текущих.
12 май 21, 14:57    [22321002]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
Вы гарантируете что банковская транзакция не сломается?

Гарантирую.
Сейчас вообще в моде девопс и накат изменений без перерыва сервиса.
12 май 21, 14:58    [22321004]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Stanislav Bashkyrtsev
Member

Откуда: СПб
Сообщений: 137
Я верно понимаю ситуацию: если у нас есть пакет и мы его обновляем, то все соединения которые его когда-либо использовали, больше не могут его использовать?

В такой ситуации кажется что правильней делать версионирование этих пакетов. Т.е. создавать пакет с именем blah2 с обновленной логикой, затем в след релизе наш Java код переходит на новую версию. И после релиза можно удалять прежнюю версию blah1.
12 май 21, 15:04    [22321008]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
Stanislav Bashkyrtsev
Я верно понимаю ситуацию: если у нас есть пакет и мы его обновляем, то все соединения которые его когда-либо использовали, больше не могут его использовать?

Нет.

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

Логично, что после обновления части софта (базы), желательно софт перезапустить или как минимум переконектится. Но как я понимаю, у топик стартера проблема еще осложняется пуллом коннектов.

Мне кажется, что в системах 24x7 должен быть прописан/продуман регламент обновлений и, соответственно, действий после наката обновлений. Решать можно по разному. Подход топик стартера (тупо повторять запросы), костыльный, но вполне вероятно что в его ситуации и работающий.

В "общем" он не работает или, как минимум, может работать не корректно. Т.к. повтор SQL команды, не является корректным повтором бизнес операции (бизнес операция может содержать много SQL команд обращающихся ко многим пакетам).

IMHO

Сообщение было отредактировано: 12 май 21, 15:09
12 май 21, 15:15    [22321014]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Stanislav Bashkyrtsev
Я верно понимаю ситуацию: если у нас есть пакет и мы его обновляем, то все соединения которые его когда-либо использовали, больше не могут его использовать?

Не совсем.
Это оракловый exception класса "warning", типовая правильная реакция - простой retry операции за исключением весьма специфических случаев, когда состояние пакета явно инициализируется отдельным вызовом.
Предметом обсуждения является не сам exception (если нужны детальные пояснения по ORA-04068, то не проблема, хотя тут оффтопик - лучше идти в оракловую ветку).
Предметом обсуждения является "как правильно перехватить и обработать driver-specific exception в ситуации, когда предполагается некая общая реакция для всего приложения".
Про различные варианты наката обновлений на прод я и сам могу целую портянку расписать - опыт достаточно богатый.
Но - повторюсь - предметом обсуждения является java, MyBatis и точка между батисом и Oracle Jdbc Driver, куда можно культурно врезаться с моей хотелкой.

Сообщение было отредактировано: 12 май 21, 15:13
12 май 21, 15:18    [22321015]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
В "общем" он не работает или, как минимум, может работать не корректно.

"Может работать некорректно" - применительно к приложению, работающему через пул коннектов, это будет очень необычный серверный код.
Ну или приложение будет неработоспособно на пуле by design.
Больше скажу - как ораклист я наверняка порекомендую коллегам, разработавшим такую систему, альтернативные решения, более подходящие для работы с пулом.

Сообщение было отредактировано: 12 май 21, 15:18
12 май 21, 15:25    [22321017]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
booby
Member

Откуда:
Сообщений: 2534
andrey_anonymous
....
Но - повторюсь - предметом обсуждения является ... точка между батисом и Oracle Jdbc Driver, куда можно культурно врезаться с моей хотелкой.


Откровенно говоря, у меня явный когнитивный диссонанс.
Автором кристально ясно сформулированна проблема, и им же дан ответ: вариант реализации
уже рассмотрели, нашли неудобным в плане эксплуатации/поддержки


Даже интересно, что же будет дальше...
12 май 21, 15:27    [22321019]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous
...класса "warning"...

Можно ссылку на доку с разделением exception на error и warning? )))
Мне кажется, это какой-то вновь придуманный термин. Такое изобретение видел только в Oracle CC&B и жутко на него плевался (т.к. IMHO это бред, прикладные warning'и обрабатывать через exception).

В данном случае, это вполне нормальная ошибка. Состояние пакетов поменялось, результат работы (в общем случае) непредсказуем.

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

Наверное можно делать PL/SQL ф-цию Init, которая дернет все пакеты с состояними (переменными) и обнулят данные состояния (переменные), что бы данные между соединениями не утекали (что плохо и с точки зрения секьюрети) в соседние сессии.

В общем, мне все же кажется, что проблема не только в коде, но и логическая / организационная. В общем, прежде чем кодировать, "подумать надо" ( C )

IMHO

p.s. на одной из пред. работ, программисту прилетел официальный выговор от директора, из-за того, что он написал консультанту/архитектору, что перед тем как делать задачу, хорошо бы "подумать". Выговор был, что архитектор знает свою должностную инструкцию и что ему делать. На что пришли к выводу, что в должностной инструкции на позицию архитектора, пункт "думать" забыли прописать или явно написали "на работе думать запрещается" )))
12 май 21, 15:30    [22321021]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
booby
Даже интересно, что же будет дальше...

Текущий статус:
andrey_anonymous
парни бодро тыкают мышками, стучат кнопками и размышляют о переопределении defaultSqlSession и executor.


Однако Леонид четко обозначил, что с батисом не работал.
Возможно, в батисе есть подходящее технологическое отверстие и кто-либо из коллег о нем знает/подскажет.
12 май 21, 15:32    [22321025]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
SpringMan
Member

Откуда:
Сообщений: 231
Leonid Kudryavtsev
у топик стартера проблема еще осложняется пуллом коннектов

Вообще если вызовы не очень частые, то можно полукостыльное решение: сдувать быстро пул до нулевого размера. Это в общем виде конечно не очень, но при редких вызовах скорее всего быстро решит проблему.
В общем виде это только обвешиваться catch-ами. Если не хочется писать их везде, то можно написать свои aspect и навешать на дао-методы. Пишут, что в mybatis есть свои interceptor, но тут надо смотреть применимы ли они в этом случае - смотреть надо

Сообщение было отредактировано: 12 май 21, 15:27
12 май 21, 15:34    [22321026]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous
Leonid Kudryavtsev
В "общем" он не работает или, как минимум, может работать не корректно.

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


Совершенно нормальный серверный код.

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

Правильный повтор - откатить и повторить всю бизнес операцию. Повтор ОДНОЙ SQL команды, в общем случае, является не корректным. В большинстве систем, которые я видел и где использовалось состояние пакектов, бизнес операция очень редко бывает только одной SQL командной. Ради того, что бы передавать данные между разными SQL командами пакетные переменные (состояние) и используют. IMHO & AFAIK

Если у Вас бизнес операция == одна команда (процедура, анонимный блок). То повтор наверное будет корректным решением.

IMHO
12 май 21, 15:36    [22321028]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
booby
Member

Откуда:
Сообщений: 2534
Leonid Kudryavtsev,

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

Самому программисту думать не положено. Пока он думает, он не пишет код, то есть попусту тратит время.
Программист должен быть наказуем за любую попытку самостоятельно думать.
12 май 21, 15:36    [22321029]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
booby
Leonid Kudryavtsev,

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

Консультанты не являлись вышестоящими руководителями. Т.ч. пошли нафиг.

Мало того, общепризнанный (начальством) умственный уровень "среднего" консультанта, общепризнанно был меньше, того же среднего уровня программистов. Т.к. огромная часть консультантов неделю назад институт закончила.

Но если у Вас на задачу в Jira "убиться ап стенку", "выпрыгнуть из окна", все программисты дружно начинают ее выполнять - можно только поздравить, отдел HR работает качественно ))))
12 май 21, 15:41    [22321031]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Stanislav Bashkyrtsev
Member

Откуда: СПб
Сообщений: 137
andrey_anonymous, ок, понятно. Т.е. в принципе как сделать правильно известно, требуется именно хак. Тогда поддержу SpringMan'a: вместо решения на уровне MyBatis повтор операции можно легко сделать с помощью AOP. Ну а если таких мест мало, то можно с помощью RetryTemplate вставить повтор операции.

Сообщение было отредактировано: 12 май 21, 15:37
12 май 21, 15:44    [22321034]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
Leonid Kudryavtsev

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


Например в Oracle DBMS_SESSION есть DBMS_SESSION.RESET_PACKAGE

https://oracle-base.com/articles/misc/dbms_session#packages

Sessions have the ability to alter package state by amending the values of package variables. If a session is being used as part of a connection pool and the state of its packages are not reinitialized, this can lead to unexpected behavior. To solve this, the RESET_PACKAGE procedure, available since Oracle 7, can be called to reinitialize all packages.


Сообщение было отредактировано: 12 май 21, 15:37
12 май 21, 15:45    [22321035]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
IMHO это бред, прикладные warning'и обрабатывать через exception

Оракель слишком древний мамонт, чтобы сделать как-то иначе.


Leonid Kudryavtsev
В данном случае, это вполне нормальная ошибка. Состояние пакетов поменялось, результат работы (в общем случае) непредсказуем.
Это вообще не ошибка. Это exception.
Я -зачеркнуто- прихожу в изумление, когда любой exception называют ошибкой.
С точки зрения вендора случай действительно "общий", и логика генерации исключительной ситуации в данном случае понятна.
Но приложение - это всегда частность, и данную исключительную ситуацию надо просто корректно отработать.
В данном конкретном случае никакой неопределенности нет и хочется сделать это, не раскидывая по коду ненужные catch.

Leonid Kudryavtsev

Если проблема из-за пула коннектов, то наверное проблема в некоректной инициализации коннекта после получения из пула. Почти все пулы, могут настраивать SQL команду, которую нужно дернуть при получении/проверки коннекта на валидность.
...
Наверное можно делать PL/SQL ф-цию Init

эээ... Правильно ли я Вас понял:
- когда приложение желает выполнить любой statement (условный "select systimestamp from dual"), оно предварительно должно дернуть специальный метод init, который методами динамического sql (иначе сам вылетит по зависимостям) будет дергать все пакеты, чтобы приложению не пришлось обрабатывать хорошо известный exception?
Базист во мне возмущён, традиционно ругается на "этих безумных джавистов" :)
12 май 21, 15:48    [22321037]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Stanislav Bashkyrtsev
andrey_anonymous, ок, понятно. Т.е. в принципе как сделать правильно известно, требуется именно хак. Тогда поддержу SpringMan'a: вместо решения на уровне MyBatis повтор операции можно легко сделать с помощью AOP. Ну а если таких мест мало, то можно с помощью RetryTemplate вставить повтор операции.

Коллеги, буду признателен за ссылки, где можно ознакомиться с указанными заклинаниями.
12 май 21, 15:51    [22321038]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous

эээ... Правильно ли я Вас понял:
- когда приложение желает выполнить любой statement....


Нет. Когда приложение желает получить чужую DB-сессию из пула, оно должно обнулить состояние - что логично.

Например DBMS_SESSION.RESET_PACKAGE

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

Сам с такой проблемой не сталкивался. Т.ч. DBMS_SESSION.RESET_PACKAGE не использовал.
12 май 21, 15:54    [22321041]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
Ради того, что бы передавать данные между разными SQL командами пакетные переменные (состояние) и используют. IMHO & AFAIK

Похоже, Вам очень не повезло с системами.
Передавать состояние транзакции от вызова к вызову внетранзакционными механизмами (а состояние пакета НЕ транзакционно) - крайне плохой дизайн. Не говорю уже, что в случае пула следующий вызов может прилететь вообще в другую сессию.
Состояния пакетов используют совершенно иначе.
12 май 21, 15:55    [22321042]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Stanislav Bashkyrtsev
Member

Откуда: СПб
Сообщений: 137
andrey_anonymous
Коллеги, буду признателен за ссылки, где можно ознакомиться с указанными заклинаниями.

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

А с RetryTemplate мы в конкретном месте кода можем написать "повтори это N раз пока не получится". Вот даже в новом Spring'e такие штуки аннотациями можно настраивать.
andrey_anonymous
Передавать состояние транзакции от вызова к вызову внетранзакционными механизмами (а состояние пакета НЕ транзакционно) - крайне плохой дизайн. Не говорю уже, что в случае пула следующий вызов может прилететь вообще в другую сессию.
Обычно такого не может произойти потому как мы используем одно БД соединение на обработку всего HTTP запроса.

Сообщение было отредактировано: 12 май 21, 15:50
12 май 21, 15:56    [22321043]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
Когда приложение желает получить чужую DB-сессию из пула, оно должно обнулить состояние - что логично.

Вы сами выше писали про пункты должностной инструкции.
Попробуйте мысленно представить воплощение своего предложение на более-менее нагруженной системе и оценить время реакции DBA на новый выверт разработчика.
12 май 21, 15:58    [22321044]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Stanislav Bashkyrtsev
По сути

Премного благодарен.
12 май 21, 15:59    [22321045]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
SpringMan
Member

Откуда:
Сообщений: 231
andrey_anonymous,

1) Встроенный механизм интерцепторов в mybatis: https://mybatis.org/mybatis-3/configuration.html#plugins - тут надо проверять все ли как нам надо заработает, но это очень похоже на правду
2) Внешний aspectj (можно вешать на методы по аннотации, по имени пакета/класса/метода): https://dzone.com/articles/implementing-aop-with-spring-boot-and-aspectj - тут со спрингом, но можно и без него прикрутить

Сообщение было отредактировано: 12 май 21, 15:55
12 май 21, 16:00    [22321047]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
Вам уже сказали.
Длинная транзакция. Первый запрос ставит состояние в хранимке.
Второй запрос переводит деньги.
Вклиниваться нельзя. И повторять команду 1 или 2 после райзе тоже нельзя.
Вы упрямо твердите что можно.
ОК. Возможно юз кейс выше у вас никогда не бывает приказом по части)))

Сообщение было отредактировано: 12 май 21, 15:54
12 май 21, 16:02    [22321048]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous

Похоже, Вам очень не повезло с системами.
Передавать состояние транзакции от вызова к вызову внетранзакционными механизмами (а состояние пакета НЕ транзакционно) - крайне плохой дизайн.

При чем тут состояние транзакций, пул соединений?

Есть последовательность кода / API:

проициализоровать
выполнить действие 1
выполнить действие 2
...
выполнить действие 100500
commit

хорошо, если это можно обернуть в одну процедуру/анонимный блок, но если бизнес операция сложная, то сделать одной SQL-командной может и не получится (или будет очень громоздко). Разумеется откат/повтор нужен всего блока. Начиная с инициализации

andrey_anonymous

Состояния пакетов используют совершенно иначе.

?

andrey_anonymous

Не говорю уже, что в случае пула следующий вызов может прилететь вообще в другую сессию.

Так тут проблема не в системе, а неправильного использование пула.

Mybatis vs Ora-04068
12 май 21, 16:02    [22321049]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous
Leonid Kudryavtsev
Когда приложение желает получить чужую DB-сессию из пула, оно должно обнулить состояние - что логично.

Вы сами выше писали про пункты должностной инструкции.
Попробуйте мысленно представить воплощение своего предложение на более-менее нагруженной системе и оценить время реакции DBA на новый выверт разработчика.


DBMS_SESSION.RESET_PACKAGE

Какие замечания у DBA ?
12 май 21, 16:04    [22321051]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
andrey_anonymous
Когллеги, подскажите плиз, какие существуют варианты воткнуть обработку oracle exception ORA-04068 в приложении, использующем MyBatis?
Обработка ora-4068, понятно, заключается в повторе вызвавшей сбой операции.
Наши джависты вменяемого решения предложить отчего-то не в состоянии - предлагают чуть ли не все вызовы в проекте catch-ами обвешивать.

Скорее всего джависты правы. Что такое ORA-0468 ?

ORA-04068: existing state of packages string has been discarded

Cause: One of errors 4060 - 4067 when attempt to execute a stored procedure.

Action: Try again after proper re-initialization of any application's state.


В экшене написано "Try again".

Я еще могу предложить синхронно останавливать комплекс приложения вместе с модернизацией PLSQL пакетов.
В этом случае Java-приложение всегда будет видеть одинаковое состояние пакетов без перекомпилляций. Но очевидно
что кто-то из ваших девопсов оказался хитрее и проигнорировал такую возможность. Сам себя перехитрил.

Что можно придумать коробочное на строне приложения чтоб была не нужна перезагрузка?
Я не знаю имеет ли Батис шаблон retrier но вот один вариант такого шаблона https://github.com/rholder/guava-retrying

Вы можете использовать отдельно на уровне выше батиса.
12 май 21, 16:06    [22321053]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
andrey_anonymous,
Вам уже сказали.
Длинная транзакция. Первый запрос ставит состояние в хранимке.
Второй запрос переводит деньги.

На ближайшем code review "гений", сотворивший эту пакость, получит по шапке.
Ему будет на пальцах объяснено что такое statement, что есть транзакции, что такое пул соединений и как правильно следует решать такую задачу.
Причем правильных решений, в зависимости от деталей процесса, будет предложено несколько - и ни одно из них не будет предполагать передачу информации между вызовами посредством переменных пакета.
Коллеги, давайте исходить из того, что в своей области профессиональных знаний я тоже немножко понахватался, за десятки-то лет :)
12 май 21, 16:22    [22321061]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
DBMS_SESSION.RESET_PACKAGE
Какие замечания у DBA ?

Наличие DBMS_SESSION.RESET_PACKAGE в TOP SQL по AWR-отчету.
12 май 21, 16:22    [22321062]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous

Ему будет на пальцах объяснено что такое statement, что есть транзакции, что такое пул соединений и как правильно следует решать такую задачу.

Можно тогда нам кратко объяснить, "что такое statement, что есть транзакции"

Я всегда предполагал, что транзакция может состоять из множества statement. Поэтому они и называются по разному )))
12 май 21, 16:28    [22321067]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Leonid Kudryavtsev,
Он не знает разницы между физической транзакцией и бизнес транз.
12 май 21, 16:32    [22321070]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
andrey_anonymous

Состояния пакетов используют совершенно иначе.

?

Оффтопик тут.
Переменные пакета обладают теми же свойствами, что и глобальные переменные. Надо дальше объяснять почему их избегают в логике приложения и как именно это делается?
Один из типовых методов использования - самодельное узко специальное кэширование. Типовая реализация - кэш наполняется по факту использования, от сброса кэша логика приложения не страдает.
Изредка можно увидеть использование пакетной переменной для управления уровнем логирования, хотя на сегодняшний день это удобнее делать методами условной компиляции или теми же контекстами. Этот вариант тоже не способен причинить приложению попаболь при сбросе состояния.
Если же пакету по неким неведомым причинам очень-очень требуется инициализация (на практике не встречал ни разу), то инициализационный код помещают в секцию инициализации пакета.
12 май 21, 16:34    [22321073]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
Переменная пакета имеет уровень пакета а не.. Глобальная
12 май 21, 16:39    [22321074]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
Доказывать тут что исспользовать переменные пакета не профессионально это глупость.
Сами пакеты нельзя в веб проектах))))
12 май 21, 16:42    [22321076]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
Я всегда предполагал, что транзакция может состоять из множества statement. Поэтому они и называются по разному )))

Вы абсолютно правы.
Но если Вам требуется в рамках одной транзакции выполнить несколько statements, то у адекватного программиста передача параметров произойдет на уровне приложения в явном виде.
Exception в одном из statement, если, конечно, подлежит обработке, не потребует отката 100500 предыдущих действий указанной транзакции.
Если же бизнес-транзакция достаточно сложна и предполагает в своем составе несколько отдельных транзакций БД, то для организации взаимодействия используются совсем иные механизмы - обычно подходящий messaging. Оракель на этот случай предоставляет вполне транзакционный AQ.
12 май 21, 16:44    [22321077]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Веб проект это пул. А пул это анонимный клиент. А он это короткие транзакции без состояния.
Это по классике в вузах.
12 май 21, 16:44    [22321078]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
andrey_anonymous,
Переменная пакета имеет уровень пакета а не.. Глобальная

Вы не в теме.
12 май 21, 16:44    [22321079]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
Сами пакеты нельзя в веб проектах))))

Отчего же?
12 май 21, 16:46    [22321080]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
>Exception в одном из statement, если, конечно, подлежит обработке, не потребует отката 100500 предыдущих действий указанной транзакции
=
У вас ОРМ.
Значит не вы отправляете инструкции. И перехватить в нижнем слое проблематично.
12 май 21, 16:47    [22321082]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous
...Надо дальше объяснять почему их избегают в логике приложения и как именно это делается?...

само наличие данного топика, говорит о том, что избежать-то и не получилось )))

andrey_anonymous

Один из типовых методов использования - самодельное узко специальное кэширование. Типовая реализация - кэш наполняется по факту использования, от сброса кэша логика приложения не страдает.

Типовая?.... ????

Ну и кэш который передается между чужими коннектами (через пул) - это жесть. IMHO

Осмысленность кэша на уровне сессии передающейся между чужими коннектами - для меня загадка.
Или должна быть на уровне апп сервера (приложения), один на все сессии (т.е. уровнем выше)
Или должен быть на уровне одной операции/транзакции/соединения - т.е. не передаваться и очищаться между коннектами.

p.s.
предлагаю каждому остаться при своем мнение
p.p.s.
вариантов решений накидали, думаю автор не новичок и не студент, т.ч. сам разбирется, что в его случае проще и лучше

Как я понимаю, два принципиальных варианта никто не оспаривает:
1. Организационный. После наката патча/обновления на базу переинициализровать клиентов.
1.1. Жесткий вариант - перезапускать
1.2. Более мягкий вариант (требует программирование, нового API) - "сдувать быстро пул до нулевого размера"
22321026
2. Программный
2.1. Корректно (пере) инициализировать соединение в момент получения из пула
2.2. Реализовывать повтор
etc...
12 май 21, 16:50    [22321084]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous
PetroNotC Sharp
Сами пакеты нельзя в веб проектах))))

Отчего же?
22321078
12 май 21, 16:50    [22321085]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
andrey_anonymous
пропущено...
Отчего же?
22321078

Тема не раскрыта.
Даже не оспаривая этот великолепный тезис о сферическом коне, спрошу: как пакет препятствует 22321078?
12 май 21, 17:00    [22321093]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
SpringMan
Member

Откуда:
Сообщений: 231
Leonid Kudryavtsev

1.2. Более мягкий вариант (требует программирование, нового API) - "сдувать быстро пул до нулевого размера"
22321026

Ну вот я имел ввиду именно на уровне конфигурации пула. В пулах в том или ином виде есть настройки: "минимальное количество коннектов" и "сколько времени держать коннект в пуле в случае бездействия". Вот обе настройки в 0. Это конечно не самое хорошее решение, но в определенных жизненных обстоятельствах может снять немного боли. Ну и, возможно, добавить немного боли в будущем :)
12 май 21, 17:03    [22321094]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
Если у тебя в пакете кроме три раза select нет ничего, то конечно используй))).
Если использовать Профессионально то БЛ смещается в субд. В пакеты.
Два тезиса осмыслил?
12 май 21, 17:04    [22321097]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
SpringMan,
Конечно это костыль реконнекта.
Я юзверю выводил сообщение что на сервере технические работы.
Не люблю автореконнект без 100 проц гарантии.
12 май 21, 17:07    [22321098]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
andrey_anonymous
...Надо дальше объяснять почему их избегают в логике приложения и как именно это делается?...

само наличие данного топика, говорит о том, что избежать-то и не получилось )))

...и не требовалось.
Используются вполне безопасно и к месту.

Leonid Kudryavtsev

Ну и кэш который передается между чужими коннектами (через пул) - это жесть. IMHO

Фантазия - это здорово.
Но Вы заблуждаетесь.

Leonid Kudryavtsev

Осмысленность кэша на уровне сессии передающейся между чужими коннектами - для меня загадка.

Узкоспециальное применение на уровне сессии.
К примеру, я такие иногда использую для обогащения потока данных - повышает производительность за больших объемах и снижает стоимость поддержки системы за счет снижения сложности sql.

Leonid Kudryavtsev

2. Программный
2.1. Корректно (пере) инициализировать соединение в момент получения из пула
2.2. Реализовывать повтор
etc...

Если посмотрите внимательнее, то коллеги предложили два вполне реальных варианта, надеюсь, один из них на текущем проекте нам подойдет.
12 май 21, 17:08    [22321099]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
andrey_anonymous,
Если у тебя в пакете кроме три раза select нет ничего, то конечно используй))).
Если использовать Профессионально то БЛ смещается в субд. В пакеты.
Два тезиса осмыслил?

Еще раз, медленно, задаю вопрос:
- каким образом применение пакетированной логики мешает проводить короткие транзакции?
Попробуйте осмыслить перед тем, как жать на кнопки.
12 май 21, 17:12    [22321100]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
booby
Member

Откуда:
Сообщений: 2534
PetroNotC Sharp
Leonid Kudryavtsev,
Он не знает разницы между физической транзакцией и бизнес транз.

Петро, просто поверь, что Андрей точно много больше тебя знает, понимает и видел в этом вопросе.
По крайней мере, допусти по вероятности.

И рассуждает он, кстати, как раз о том, о чём программисту задумываться не положено.
Хотя в техническом плане, некоторые из его категорично высказанных тезисов, имхо, спорны.
12 май 21, 17:15    [22321102]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
SpringMan
Leonid Kudryavtsev

1.2. Более мягкий вариант (требует программирование, нового API) - "сдувать быстро пул до нулевого размера"
22321026

Ну вот я имел ввиду именно на уровне конфигурации пула. В пулах в том или ином виде есть настройки: "минимальное количество коннектов" и "сколько времени держать коннект в пуле в случае бездействия". Вот обе настройки в 0. Это конечно не самое хорошее решение, но в определенных жизненных обстоятельствах может снять немного боли. Ну и, возможно, добавить немного боли в будущем :)

Ну это вообще пул выключит

Тут то проблема, как я понимаю, что пул после наката патча не очищается. Не сложно сделать на сервере служебное Rest API / URL и дергать его после наката патча. А в нем уже ужимать пуль (AFAIK многие пулы такое предоставляют).

Накатили патч. Дернули URL на серверах. Пулы переиницилизировались, все работает.

Но на мой взгляд, более правильно, было бы:

1. Дернули URL на серверах, преостановили работу пользователей
2. Накатили патч на СУБД
2. Дурнули URL на серверах, очистили пул, продолжили работу пользователей

Я понимаю, что:
Сейчас вообще в моде девопс и накат изменений без перерыва сервиса.

но как при этом гарантировать корректную работу при серьезных изменениях - не очень представляю. Половина пакетов накатилась, половина нет. А мы работает, команды переповторяем....
12 май 21, 17:17    [22321104]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
booby
PetroNotC Sharp
Leonid Kudryavtsev,
Он не знает разницы между физической транзакцией и бизнес транз.

Петро, просто поверь, что Андрей точно много больше тебя знает, понимает и видел в этом вопросе.
По крайней мере, допусти по вероятности.

И рассуждает он, кстати, как раз о том, о чём программисту задумываться не положено.
Хотя в техническом плане, некоторые из его категорично высказанных тезисов, имхо, спорны.
и как это соотнести с тем что переменные вредны в пакетах? Его слова?
12 май 21, 17:19    [22321106]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous
PetroNotC Sharp
andrey_anonymous,
Если у тебя в пакете кроме три раза select нет ничего, то конечно используй))).
Если использовать Профессионально то БЛ смещается в субд. В пакеты.
Два тезиса осмыслил?

Еще раз, медленно, задаю вопрос:
- каким образом применение пакетированной логики мешает проводить короткие транзакции?
Попробуйте осмыслить перед тем, как жать на кнопки.
"пакетированная логика" это в вузе термин такой?
Я знаю бизнес логику). Давайте по ней вопросы.
12 май 21, 17:21    [22321108]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
PetroNotC Sharp
booby

...
Хотя в техническом плане, некоторые из его категорично высказанных тезисов, имхо, спорны.
и как это соотнести с тем что переменные вредны в пакетах? Его слова?

Его слова, дословно, как раз у меня критики и не вызывают.

Кто же спорит, что глобальные переменные, goto и 100500 других вещей - это не есть хороший стиль. Но некоторые его высказывания воспринимаются слишком "категорично".

Я с самого начала подчеркивал, что в его случае - наверное все хорошо. Но в целом, без знаний и гарантий об устройстве конкретной системы - это может не работать или, что хуже, может делать вид, что работает, а на деле работать не корректно.
12 май 21, 17:24    [22321109]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
но как при этом гарантировать корректную работу при серьезных изменениях - не очень представляю. Половина пакетов накатилась, половина нет. А мы работает, команды переповторяем....

Ну как-как...
Патчи делятся на те, которые подлежат накату online и те, которые требуют остановки сервиса.
Под вторые согласуется технологическое окно (перерыв сервиса), первые применяются в часы наименьшей нагрузки.
Патчи отдельно тестируются на накат.
Ну и безусловно, при работе на серьезной системе накат изменений без согласованного документа вида "план внедрения" не выполняется.
Нормальный план внедрения предусматривает заранее согласованные действия в аварийной ситуации - например, ту же остановку сервиса с последующим откатом патча или - бывают и такие сценарии - продолжение работы в режиме ограниченной функциональности.

Сообщение было отредактировано: 12 май 21, 17:21
12 май 21, 17:29    [22321110]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
booby
Member

Откуда:
Сообщений: 2534
PetroNotC Sharp
...и как это соотнести с тем что переменные вредны в пакетах? Его слова?

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

Контекстные переменные - тоже сорт глобальных переменных, между прочим.
Существо того, о чем он говорил, сводится вот чему, с моей точки зрения:

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

Вот я бы так расшифровывал то, что он говорил, независимо от того, есть тут предмет для спора или нет.
12 май 21, 17:31    [22321111]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
booby,
Вот и пошло поехало
- у него градации пакетов оказывается
- переменными не увлекаться
-
То есть куча условностей о которых молчал.
Стакан полуналитый или полупустой?
Это профессионально?
Нафиг пакеты при трехзвенке?
12 май 21, 17:35    [22321112]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
booby
Member

Откуда:
Сообщений: 2534
andrey_anonymous,

но, вообще EBR в Oracle взлелеивали именно для обсуждаемого рода задач.
Хочу полюбопытствовать, если не секрет, почему именно в вашем случае эти лыжи не едут?

(у "нас" тоже не едут, но это не моего ума вопрос)
12 май 21, 17:35    [22321114]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
booby,
Решение топика то где? Пул обнулить?))
12 май 21, 17:37    [22321116]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
PetroNotC Sharp
booby,
Решение топика то где? Пул обнулить?))

Ну будем надеятся, что когда решат, то отпишется, что и как )))
12 май 21, 17:38    [22321119]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
Я знаю бизнес логику). Давайте по ней вопросы.

Давайте.
Берем бизнес-процесс заведения нового клиента в банке.
Он по факту достаточно сложен и может содержать сотни вызовов плюс несколько интеграционных взаимодействий.
Но мы упростим до предела - всего одна БД, всего пяток необходимых действий по регистрации.
В базе создан пакет содержаший метод registerNewClient(...), инкапсулирующий эти действия.
Каким образом вызов указанного метода противоречит тезису про "короткие транзакции без состояния"?
12 май 21, 17:40    [22321122]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Учитывая что имеем дело с ораклом мы еще можем обсудить другие ситуации. Не только PL/пакет
был пересобран. Но и инстанс кластера мог упасть. Умный драйвер нас перебалансировал на другие
инстансы. Но мы что-то потеряли. Потеряли context. Сессионные настройки.

Так что задача не так проста как кажется.
12 май 21, 17:42    [22321123]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
booby
Member

Откуда:
Сообщений: 2534
PetroNotC Sharp,

В трехзвенке и база нафик не нужна.
Тут и мнения второго быть не может.
Иначе ты навсегда будешь чьим-нибудь рабом, например майбатиса.

База смысла не имеет, если в ней нет хранимого кода.
Но большинство современных "системостроителей" на голубом глазу технической политикой запрещают его наличие.
И у нас на форуме есть ярые размахиватели этим флагом.
12 май 21, 17:42    [22321124]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
booby
(у "нас" тоже не едут, но это не моего ума вопрос)

Потому что я плавно становлюсь динозавром, наверное.
И не доверяю я индусам в таких вопросах.
Да и текущий проект сильно проще в этом плане нежели чем предыдущий, где, впрочем, тоже как-то обошлись.
12 май 21, 17:45    [22321128]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Stanislav Bashkyrtsev
Member

Откуда: СПб
Сообщений: 137
booby
База смысла не имеет, если в ней нет хранимого кода.
Надеюсь это просто софистика, и на самом деле в этом мире нет людей которые так думают :D
12 май 21, 17:49    [22321130]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
mayton
Умный драйвер нас перебалансировал на другие
инстансы.

Поручик, ну как можно в приличном обществе так выражаться?!!!
Какой кластер, какой TAF, Вы о чем?!
Может, предложите обсудить в этом контексте cache fusion, result cache с его багами и условностями?
Вы еще про FAN вспомните или, не приведи Господь, про GoldenGate на каскадном стендбае...
Оффтопик это, злой оффтопик.
Тут даже сугубо ламповая тема про корректное использование переменных пакета на ровном месте целый холивар подняла
12 май 21, 17:56    [22321134]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Stanislav Bashkyrtsev
booby
База смысла не имеет, если в ней нет хранимого кода.
Надеюсь это просто софистика, и на самом деле в этом мире нет людей которые так думают :D

Рискну предположить, что коллега booby имел ввиду "вам не нужна серьезная промышленная БД там, где достаточно мешка с данными".
Оракель выставляет прайс на свою rdbms за очень мощный функционал.
Нет никакого смысла платить миллионы за тот же Oracle EE, если все что требуется от базы - это CRUD.
12 май 21, 18:09    [22321144]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Stanislav Bashkyrtsev
booby
База смысла не имеет, если в ней нет хранимого кода.
Надеюсь это просто софистика, и на самом деле в этом мире нет людей которые так думают :D
))))
12 май 21, 18:21    [22321150]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3852
andrey_anonymous
Когллеги, подскажите плиз, какие существуют варианты воткнуть обработку oracle exception ORA-04068 в приложении, использующем MyBatis?
Обработка ora-4068, понятно, заключается в повторе вызвавшей сбой операции.
Наши джависты вменяемого решения предложить отчего-то не в состоянии - предлагают чуть ли не все вызовы в проекте catch-ами обвешивать.


История про то что на все вызовы нужно лепить catch звучит довольно странно, при работе с MyBatis обычно одному методу в жаве соответствует один вызов jdbc, т.е. в первом приближении размер бедствия довольно-таки замкнутый и накидать костылей в виде catch не должно составлять каких-либо проблем, это раз. Во-вторых, ничего не мешает воткнуть декоратор для дата-сорса, и перехватывать исключения там, здесь трудоемкость зависит от того как реализовано приложение, и может выходить от получаса до ~дня. Однако по моему мнению, если бы ко мне пришли с такой "идеей", то я бы предложил написать декораторы в PL/SQL - ошибка летит оттуда, ну вот пусть оно через execute immediate и делает вызовы с перехватом.
12 май 21, 18:56    [22321166]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Андрей Панфилов,
Хммм... Не понял как можно перехватить вызов хранимки с райзе в самой субд.
Разве это возможно?
12 май 21, 19:25    [22321172]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Резюмируя тему:
- спасибо всем коллегам за беседу.
- отдельное спасибо коллегам Stanislav Bashkyrtsev и SpringMan за ответы по существу.
В настоящее время мне представляется, что interceptor вписывается в условия задачи наилучшим образом.

Андрей Панфилов
написать декораторы в PL/SQL - ошибка летит оттуда, ну вот пусть оно через execute immediate и делает вызовы с перехватом.

базисты и джависты никогда не поймут друг друга :)

PetroNotC Sharp
Разве это возможно?

Возможно. Цена вопроса - лишняя прослойка из динамического sql.

Сообщение было отредактировано: 12 май 21, 19:20
12 май 21, 19:26    [22321173]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Андрей Панфилов,
>История про то что на все вызовы нужно лепить catch звучит довольно странно
= до спринга всегда так и писали)
Просто можно вверху в стеке в контроллере поставить try.
А внизу 1500 методов без try
12 май 21, 19:29    [22321174]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
>Возможно. Цена вопроса - лишняя прослойка из динамического sql.
= это изврат. Поэтому считаем невозможно)
12 май 21, 19:30    [22321175]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
andrey_anonymous
mayton
Умный драйвер нас перебалансировал на другие
инстансы.

Поручик, ну как можно в приличном обществе так выражаться?!!!
Какой кластер, какой TAF, Вы о чем?!
Может, предложите обсудить в этом контексте cache fusion, result cache с его багами и условностями?
Вы еще про FAN вспомните или, не приведи Господь, про GoldenGate на каскадном стендбае...
Оффтопик это, злой оффтопик.
Тут даже сугубо ламповая тема про корректное использование переменных пакета на ровном месте целый холивар подняла

Почему такая реакция?

Я просто расширил спектр возможных ошибок. И спросил как быть.
12 май 21, 19:39    [22321177]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3852
PetroNotC Sharp
Андрей Панфилов,
>История про то что на все вызовы нужно лепить catch звучит довольно странно
= до спринга всегда так и писали)


Чего так "и писали"? паттерн декоратор существует из покон веков, jdk-прокси, которые по сути и есть декораторы появились в 1.3 (май 2000, если что)
12 май 21, 19:44    [22321180]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
>В настоящее время мне представляется, что interceptor вписывается в условия задачи наилучшим образом.
== обязательно отпишитесь после реального запуска.
12 май 21, 19:46    [22321182]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Андрей Панфилов,
Паттерн я знаю.
Как его тут применить не понял.
Особенно не трогая клиентский код а в субд.
12 май 21, 19:48    [22321184]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3852
PetroNotC Sharp,

ну приложение получает DS обычно через какую-то фабрику, вот нужно сделать декоратор к DS, который на getConnection() будет отдавать другой декоратор, который в свою очередь будет на prepareStatement отдавать еще один декоратор, который будет перехватывать executeQuery() - выглядит вроде как мудрено, но в интернетах готовых реализаций декораторов наверное под сотню.
12 май 21, 19:54    [22321185]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
mayton
Я просто расширил спектр возможных ошибок. И спросил как быть.

Вы затронули весьма специфическую тему, банально незнакомую многим из присутствующих.
Еще меньшее количество могут похвастаться практическим опытом осмысленной работы с обозначенными технологиями.
Причем наиболее простое решение проблемы TAF - по возможности объединить логику транзакции в один statement, положившись на механизмы statement level rollback и автоматически решив вопросы с необходимой предварительной инициализацией if any - многим представляется то громоздким, то идеологически неверным, особенно если речь заходит о серверном коде.
Потому и реакция - не следует множить сущности без необходимости.
Прошу прощения если паче чаяния задел.

Сообщение было отредактировано: 12 май 21, 19:53
12 май 21, 20:01    [22321186]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Андрей Панфилов,
Возможно я тебя не так понял.
Мы же код ТС не видели.
Например у него вызов хранимки так
Mapper mapper = sqlSession.getMapper(Mapper.class);
List<StoredProcOutput> results = mapper.callStoredProcedure(inParam);

Вот примеительно к этому вызову я не понял твой рецепт.
12 май 21, 20:16    [22321192]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3852
andrey_anonymous

Андрей Панфилов
написать декораторы в PL/SQL - ошибка летит оттуда, ну вот пусть оно через execute immediate и делает вызовы с перехватом.

базисты и джависты никогда не поймут друг друга :)


у меня у самого где-то сертификат OCP валяется по 11g, так что относительно поймут/не поймут - тут спорно, смотрите какая штука получается на самом деле: вот есть ваша ORA-04068, по ней рекомендация "выполнить" еще раз, эта рекомендация настолько тупая, насколько это возможно: раз компенсация ошибки заключается в том нужно просто повторить вызов, то возникают вполне естественные вопросы:
- если СУБД стоит кучу денег, то чего она сама эту компенсацию не выполняет-то?
- а почему драйвер JDBC ее не выполняет?
- если писать хранимые процедуры считается круто, то почему эти процедуры сами не справляются с компенсацией?

при этом в протокол взаимодействия с СУБД (в разработке которого принимала участие и Oracle) никакой информации о том какая ошибка является фатальной, а какая нет, и какие компенсации предусмотрены, не заложено, что наводит на мысли, что с рекомендацией "просто повторить вызов" на самом деле не все так просто и нужно думать что делать в каждом конкретном случае.
12 май 21, 20:18    [22321193]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3852
PetroNotC Sharp
Андрей Панфилов,
Возможно я тебя не так понял.
Мы же код ТС не видели.
Например у него вызов хранимки так
Mapper mapper = sqlSession.getMapper(Mapper.class);
List<StoredProcOutput> results = mapper.callStoredProcedure(inParam);

Вот примеительно к этому вызову я не понял твой рецепт.


ну в sqlSession же датасорс откуда-то попадает...
12 май 21, 20:19    [22321194]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Андрей Панфилов,
Особенно прикольно когда он повторять долбить вызов будет в триггере от ОРМ
12 май 21, 20:21    [22321195]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Андрей Панфилов
PetroNotC Sharp
Андрей Панфилов,
Возможно я тебя не так понял.
Мы же код ТС не видели.
Например у него вызов хранимки так
Mapper mapper = sqlSession.getMapper(Mapper.class);
List<StoredProcOutput> results = mapper.callStoredProcedure(inParam);


Вот примеительно к этому вызову я не понял твой рецепт.


ну в sqlSession же датасорс откуда-то попадает...
понял теперь. Мудрено))).
Я бы с админом лучше договорился.
)))
Или реконнект приложения с открытием "как было".
12 май 21, 20:25    [22321198]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Пишут всем юзерам рассылку. Дескыть сёдня после 20.00 будет плановое техобслуживание.
И ребутают что надо.
12 май 21, 20:38    [22321200]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Андрей Панфилов
у меня у самого где-то сертификат OCP валяется по 11g, так что относительно поймут/не поймут - тут спорно, смотрите какая штука получается на самом деле: вот есть ваша ORA-04068 ...
...нужно думать что делать в каждом конкретном случае.

Коллега, а философского образования у Вас случайно нет в коллекции?
А то уж очень сферично как по мне. Без привязки к конкретному контексту.
Да и на бОльшую часть вопросов ответы в топике присутствуют, что лишает их элемента новизны.
+
Сидят два мужика, выпивают. Один другого спрашивает:
— Слушай, а что такое логика?
— Ну как тебе объяснить… Видишь — вон два мужика идут, один грязный, другой чистый. Какой из них в баню идет?
— Грязный…
— Правильно. Он грязный, поэтому идет мыться. Вот это называется логикой.
— А что такое диалектика?
— Ну… Видишь, два мужика идут. Один грязный, а другой чистый. Кто из них в баню идет?
— Грязный…
— А вот и неправильно! Чистый. Грязный — он потому и грязный, что в баню никогда не ходит. Вот это называется диалектикой…
— Ну а что же тогда философия?
— Видишь… Два мужика идут, грязный и чистый. Какой из них в баню идет?
— А хрен его знает…
— Вот! Это как раз и есть философия
12 май 21, 20:48    [22321202]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3852
andrey_anonymous

Да и на бОльшую часть вопросов ответы в топике присутствуют, что лишает их элемента новизны.
Чет не увидел никаких ответов, увидел только странное желание писать довольно сомнительный код, а проблемы в коде перекидывать на приложение. Разработанные процедуры в БД - это ровно такое же API как select или update, т.е. разработчик приложения смотрит на них как на некий черный ящик, а выдавать из этого ящика ошибки в духе "попробуйте еще раз" где-то в середине транзакции - это откровенно дурной тон. Вон у Кайта рекомендуют использовать dynamic sql: https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:26075943863705, но вы-то скорее всего со своей колокольни думаете, что dynamic sql - это плохо, но почему вы решили, что перехват ошибки и повтор вызова в приложении - это хорошо?
12 май 21, 21:17    [22321211]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Андрей Панфилов
Чет не увидел никаких ответов

Ну давайте разберем детально.
Андрей Панфилов
вот есть ваша ORA-04068,

Не моя, но ладно. Есть 4068. Это конкретика.
Андрей Панфилов

"выполнить" еще раз, эта рекомендация настолько тупая, насколько это возможно:

Это Ваше оценочное суждение.
Причем, по всей видимости, без привязки к факту, поскольку:
oerr ora -4068
ORA-04068: existing state of packages string has been discarded
...
Action: Try again after proper re-initialization of any application's state.

re-initialization не требуется, но тупо же просто выполнить рекомендацию, верно?
Надо обязательно... что?
Сидеть и думать.
Ага.
Это было остро... остро?
На самом деле нет.

Далее сферические рассуждения:
Андрей Панфилов

раз компенсация ошибки заключается в том нужно просто повторить вызов, то возникают вполне естественные вопросы:
- если СУБД стоит кучу денег, то чего она сама эту компенсацию не выполняет-то?
- а почему драйвер JDBC ее не выполняет?
- если писать хранимые процедуры считается круто, то почему эти процедуры сами не справляются с компенсацией?

на которые даже был даден ответ:
andrey_anonymous
Leonid Kudryavtsev
В данном случае, это вполне нормальная ошибка. Состояние пакетов поменялось, результат работы (в общем случае) непредсказуем.
...
С точки зрения вендора случай действительно "общий", и логика генерации исключительной ситуации в данном случае понятна.
Но приложение - это всегда частность, и данную исключительную ситуацию надо просто корректно отработать.
В данном конкретном случае никакой неопределенности нет и хочется сделать это, не раскидывая по коду ненужные catch.

Потом была отвлечённая философия, никак с темой топика не связанная...
Андрей Панфилов

при этом в протокол взаимодействия с СУБД (в разработке которого принимала участие и Oracle) никакой информации о том какая ошибка является фатальной, а какая нет, и какие компенсации предусмотрены, не заложено, что наводит на мысли, что с рекомендацией "просто повторить вызов"

и завершившаяся конгениальной рекомендацией
Андрей Панфилов
на самом деле не все так просто и нужно думать что делать в каждом конкретном случае.

на которую я, будучи, несомненно, преисполнен благодарности, все-таки отмечу: я уже подумал прежде, чем задать вопрос.
Андрей Панфилов

, увидел только странное желание писать довольно сомнительный код, а проблемы в коде перекидывать на приложение. Разработанные процедуры в БД - это ровно такое же API как select или update, т.е. разработчик приложения смотрит на них как на некий черный ящик, а выдавать из этого ящика ошибки в духе "попробуйте еще раз" где-то в середине транзакции - это откровенно дурной тон.

Ваше мнение очень ценно для меня.
Жаль, что оно, опять-таки, совершенно не в контексте топика и потому не очень интересно, даже несмотря на не относящиеся к делу ссылки:
Андрей Панфилов

Вон у Кайта рекомендуют использовать dynamic sql

Далее последовал сеанс чтения мыслей
Андрей Панфилов

но вы-то скорее всего со своей колокольни думаете, что dynamic sql - это плохо,

с разоблачением
Андрей Панфилов
но почему вы решили, что перехват ошибки и повтор вызова в приложении - это хорошо?

И вот теперь скажите мне, Андрей Панфилов, если бы я в ответ на Ваше "странное желание писать сомнительный код" отвечал Вам так же, как Вы мне - удостоился бы я
12082346
или нет, как полагаете?
Спасибо за внимание.

Сообщение было отредактировано: 12 май 21, 21:45
12 май 21, 21:49    [22321226]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
>не раскидывая по коду ненужные catch.
= вот как может прогер писать что по коду раскиданы ненужные catch?
)))
12 май 21, 22:14    [22321235]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Развратила декларативность программистов.
12 май 21, 22:16    [22321237]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
booby
Member

Откуда:
Сообщений: 2534
Андрей Панфилов
... Вон у Кайта ...: https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:26075943863705 ...

Интересная ссылка.

Кайт пробует сначала подавить в стиле "понимаете ли вы вообще, что такое скомпилированное приложение?",
но Кустовский не гнётся, и в весьма твёрдой манере формулирует технический запрос на то, что потом, по реализации,
стали называть Edition Based Redefinition.

Сдаётся мне, что товарищ Кустовский из разработчиков OEBS, или иного приклада от самого Oracle.
(Что-то не сильно слышно о широком применении этого творения за пределами собственно экосистемы Oracle)
12 май 21, 23:42    [22321272]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
booby
Member

Откуда:
Сообщений: 2534
booby,

Кустовский - Кутровский, сорри.
13 май 21, 00:13    [22321279]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11020
mayton
Пишут всем юзерам рассылку. Дескыть сёдня после 20.00 будет плановое техобслуживание.
И ребутают что надо.
Я вас умоляю. В который уже раз.
Допустим, что вы такую рассылку сделали ...
Как её прочитает какой-нибудь "интеграционный робот"? Люди? А вы знаете кто это? А людям из совершенной другой организационной структуры (другой организации) есть вообще дело до вашей рассылки? А есть у них информация, чтобы решить - когда им можно?
А вы точно уверены, что никто из "важного начальства" не ожидает выполнения в 20:01 "важной сделки на лярд баксов"?

P.S.
Нет, технологическое окно, конечно, отыскивают. Просто делается это несколько сложнее, чем "намылить оповещение".
Где-то на этих форумах была история про обновление ПО крупного оптового склада - несколько часов один раз в конкретный день года. Можно ли в другое время? Да без базару. Оплачиваете простой склада, убытки контрагентов и - любой каприз за ваши деньги.
13 май 21, 05:58    [22321303]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Basil A. Sidorov,
Почему обычным балансировщиком не направить на другую базу?
Для автоматов просто завершают сессию.
13 май 21, 06:32    [22321306]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Basil A. Sidorov,
Завершение сессии это рядовая операция при веб.
Все ее умеют.
ТС не умеет и не хочет)
13 май 21, 06:34    [22321307]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
ТС решил что в веб проектах (трехзвенке) здорово писать как при проектах КЛИЕНТ-СЕРВЕР (повтори запрос)
Вставил в код среднего слоя код с хранимками.
Теперь вставит интерцепторы именно для оракле.
Хранимки нужно писать с ограничениями. Не дай бог кто вставит туда переменную.
Нужен штат проверяльщиков кода и шаблоны приказов о наказании нерадивых.
Мое имхо что интерцептор это триггер.
Мне очень редко приходилось в PL ПОВТОРЯТЬ ОПЕРАЦИЮ.
Хорошим тоном было сначала проверить созданы ли условия)).
Итого, интерцептор служит для Отката при валидации... Логирования.. И т.д.
Но для повтора имхо технически не красиво.
Другой вопрос, что при нагрузке после райзе контекст вообще может уплыть и изменится.
Мы движемся к асинхронности.
Даже эксплорер переспрашивает тупым вопросом: "повторить уже отправленный запрос?".
Транзакция в миллисекунду встанет с райзе на аппСервере в другом континенте.
Надо протестить время и потери бизнеса).
Сделать ТЕО. Нагрузочное тестирование.
13 май 21, 07:06    [22321316]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous
PetroNotC Sharp
Я знаю бизнес логику). Давайте по ней вопросы.

Давайте.
Берем бизнес-процесс заведения нового клиента в банке.
Он по факту достаточно сложен и может содержать сотни вызовов плюс несколько интеграционных взаимодействий.
Но мы упростим до предела - всего одна БД, всего пяток необходимых действий по регистрации.
В базе создан пакет содержаший метод registerNewClient(...), инкапсулирующий эти действия.
Каким образом вызов указанного метода противоречит тезису про "короткие транзакции без состояния"?

Пакет на PL пишет прогер с должностью Разработчик БД. Не java программист.
Если это не студент то он напишет в заголовке хранимки переменную/константу.
Всё. Приплыли.
13 май 21, 07:14    [22321317]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
ТС версию бд хотя бы привели.
Вроде взрослый а пруфа на обсуждение в ветке оракле я не вижу от вас.
13 май 21, 08:01    [22321325]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11020
PetroNotC Sharp
Почему обычным балансировщиком не направить на другую базу?
Для автоматов просто завершают сессию.
1. Выделив ещё пару-тройку терабайт в дорогущем хранилище?
2. "А ведь он был кому-то нужен" (ц) Винни-Пух.

P.S.
Если вам трудно держать в голове контекст "длинных" сообщений - просто игнорируйте их.
13 май 21, 09:52    [22321367]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Basil A. Sidorov,
1.конкретнее. Разве в ИС где проблема выгнать юзверей и они работают по ночам нет балансировщика? Пример есть?
Мы обновляли по вечерам систему. А вы?
2. Нормальный автомат умеет реконнект.
ЗЫ.
Не пишите длинно если пару фраз выше не можете понять.
13 май 21, 10:03    [22321383]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11020
PetroNotC Sharp
Мы обновляли по вечерам систему. А вы?
А я работал не с системой, а с системами.
И знаете - везде было по разному.
Совсем круто, правда, не бывало, но даже с процедурой остановки бывали ньюансы. Разные.
По этому вот так огульно: "балансирощик, перенаправление, другая база" - я бы поостерёгся. А вы?
13 май 21, 10:11    [22321388]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Basil A. Sidorov,
Мы здесь для генерации идей. И советов.
Как в "что где когда".
Че вы так возбудились на решения:
- мессага юзверю - Перелогинься!
- балансировщик
- обновить в окно
?
Есть еще 5 решений чисто админских и не по java.
13 май 21, 10:31    [22321397]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11020
Я "возбудился" на странное предложение mayton. Возможно, я понимаю, откуда это у него, но, блин, в очередной раз - крайне не к месту.
А лично вы достали как тот математик из анекдота: вроде всё правильно говорит, но каждый раз непонятно - а что с этим делать-то?

P.S.
Полезность мозговых штурмов сильно преувеличена - у них крайне ограниченная область применения.

Сообщение было отредактировано: 13 май 21, 10:27
13 май 21, 10:35    [22321402]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Basil A. Sidorov,
Сложно вам жить.
Вы не в своей тарелке. Вы железячник. А не софтовик.
Почему я его понимаю а вы нет)
13 май 21, 10:37    [22321404]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11020
Хреновый из вас телепат. Или шар протрите или одно из двух.
13 май 21, 10:38    [22321406]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Basil A. Sidorov,
Ну вот я писал на PL и обновлял систему федерального уровня.
А вы? Хранимки писали?
13 май 21, 10:38    [22321407]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Basil A. Sidorov
Хреновый из вас телепат. Или шар протрите или одно из двух.
короче. Сиди там и не выеживайся.
Как бабка на скамейке. Брюзжишь что непонятно ей про балансировщик. С луны что ли.
13 май 21, 10:41    [22321409]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Представим себе ВИ. Или юз кейс.
- Маша уборщица посмотрела расписание уборки из XP
- вернула в пул
- админ обновил сигнатуру или....
- вечером гендир Иванов взял из пула коннект и при запросе получил ORA
Я очень сомневаюсь, что триггер на аппСервере хорошее решение.
Как то так.
13 май 21, 10:46    [22321413]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11020
А я находил тупые косяки разработчиков в системе, которая много лет использовалась во множестве регионов РФ.
Сопровождал и обновлял одну из таких региональных систем. Не в одно лицо, конечно, но и не "сбоку смотрел". Видел и дебильные реализации и халтурные исправления багов и более-менее успешные попытки свалить проблемы разработки на кривые руких технарей владельца системы.
Разное, в общем, бывало. И, более того - в разных местах, а не только на одной конкретной системе. И знаете что? Не надо быть гением, чтобы даже по результату работы понимать: "Ваш код - дерьмо". Не говоря уж о ситуациях, когда этот код можно просто увидеть.

P.S.
С федеральными системами тоже сталкивался. Уже "со стороны", но тоже интересно. Особенно - на одной презентации уже готовой системы перед планируемым внедрением. Оказалось, что разработчики даже не почесались не то, что сделать - просто подумать о тривиальной фиче.
13 май 21, 10:50    [22321417]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Basil A. Sidorov,
Если преувеличивать, то я считаю что решение интерцептор дерьмо..
Но вы же склоняете к осторожности).
13 май 21, 11:05    [22321426]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Дискуссия зашла в тупик. У автора получается ситуация что одни не могут - а другие не хотят.

Разумеется моё предложение о рассылке maintenance было шуткой.

Oracle по протоколу кидает ORA-04068 когда пакет инвалидировался. Предполагается что программист
знает что это и "принимает решение". Вопрос где и на каком уровне принять решение? Представте
на секундочку что ваш браузер на ошибку HTTP-5** будет делать авто-повтор реквеста. Кому это надо?
А кому надо чтобы циклический реквест PL-пакета на стороне PL-машины создал нагрузку.

Иногда в сетевых протоколах заложен принцип минимального ущерба.
13 май 21, 11:15    [22321437]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
mayton,
+1
Кроме того, с 11ой версии оракле было много изменений по данной ошибке.
13 май 21, 11:27    [22321447]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
mayton
А кому надо чтобы циклический реквест PL-пакета на стороне PL-машины создал нагрузку.

Если бы я просил совет по оракелю - то спросил бы его в профильной ветке, где есть специалисты именно по оракелю.
Теперь про инсинуации с retry по ORA-04068- медленно, специально для быстрых разумом теоретиков кунг-фу

Сценарий 1: простая перекомпиляция пакета.
-- Вызов, инстанциирующий пакет в сессии.
SQL> select * from dropme_p.f(3);

      SEQ#
----------
         1
         2
         3

-- Тут случилась перекомпиляция, следующий вызов дает

SQL> select * from dropme_p.f(3);

select * from dropme_p.f(3)

ORA-04068: existing state of packages has been discarded
ORA-04061: existing state of package "TEST.DROPME_P" has been invalidated
ORA-04065: not executed, altered or dropped package "TEST.DROPME_P"

-- Повторяем вызов:
SQL> select * from dropme_p.f(3);

      SEQ#
----------
         1
         2
         3



Сценарий 2: перекомпиляция пакета привела к неустранимым проблемам.
-- Вызов, инстанциирующий пакет в сессии.
SQL> select * from dropme_p.f(3);

      SEQ#
----------
         1
         2
         3

-- Тут случилась перекомпиляция, следующий вызов дает

SQL> select * from dropme_p.f(3);
select * from dropme_p.f(3)

ORA-04068: existing state of packages has been discarded
ORA-04061: existing state of package body "TEST.DROPME_P" has been invalidated
ORA-04065: not executed, altered or dropped package body "TEST.DROPME_P"

-- Повторяем вызов:
SQL> select * from dropme_p.f(3);
select * from dropme_p.f(3)

ORA-04063: package body "TEST.DROPME_P" has errors
-- надеюсь, разница между 4068 и 4063 очевидна и понятна
SQL> 


Мораль: знание некоторых принципов не всегда избавляет от необходимости знать некоторые частности.

Кто хочет поиграться лично - вот игрушка, способная провоцировать 4068 на 19.0:
+
create or replace package dropme_p
is
  cursor c(p int) is select rownum seq# from dual connect by level <= p;
  type t_c is table of c%rowtype;
  function f(p int) return t_c pipelined;
end;
/

create or replace package body dropme_p
is
  function f(p int) return t_c pipelined is
  begin
    for i in c(p) loop
      pipe row (i);
    end loop;
  end;
end;
/

-- использовать в отдельной сессии
select * from dropme_p.f(1);

-- провокация1
alter package dropme_p compile body;

-- провокация 2
create or replace package body dropme_p
is
  function f(p int default 3) return t_c pipelined is -- привнесена ошибка, декларация в спеке не соответствует декларации в теле
  begin
    for i in c(p) loop
      pipe row (i);
    end loop;
  end;
end;
/
13 май 21, 14:54    [22321623]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
А мне кажется ты Elic испугался.
Вопросы то плевые с точки зрения DBA
13 май 21, 15:03    [22321631]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
>Сценарий 1: простая перекомпиляция пакета.
= в ветке java еще лучше тест с интерцепторами
13 май 21, 15:13    [22321642]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous

-- Повторяем вызов:
...

В текущей системе, с которой работают, большинство пакетов как пакеты, но есть кучка пакетов где после перекомпиляции повторное обращение ситуацию не исправляет. Только отлогиниться, залогиниться обратно.

Что именно в коде (зависимости пакетов) дает такой эффект - не разбирался.

Oracle EE 11.2.0.3.0 64 bit
13 май 21, 15:50    [22321665]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Вопрос в том обязан ли клиент вызвать пакет UTL_RECOMP и пересобрать это всё по первой ошибке?
В ситуации когда повторный колл не исправляет ошибку (несколько интерфейсных частей пакетов
были изменены на сервере).

Я думаю что не обязан. Клиент (обычное веб-приложение к примеру) не настолько умен чтобы вызывать
правильные команды компилляции.

И в этом случае хорошее решение со стороны клиента это - просто подождать
некое протокольное время и повторить интеракцию. Здесь хорошо подходит шаблон
аварийный размыкатель (Cirquit Breaker) который на уровне сервиса заблокирует
обращения других клиентов (они будут получать стандартную плашку HTTP-5** с сообщением
что ведутся технические работы).

Никаких умных действий с их стороны быть не должно. Кто создал проблему на сервере - тот и должен
ее решать. Технические детали протокола аварийного выключателя (время размыкания и прочее)
- обсуждается.
13 май 21, 16:03    [22321677]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
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 май 21, 16:09    [22321685]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
mayton
Вопрос в том обязан ли клиент вызвать пакет UTL_RECOMP и пересобрать это всё по первой ошибке?

Да откуда вы всё это берете?!
Какой рекомп от приложения, длянафига?
13 май 21, 16:12    [22321689]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
andrey_anonymous
mayton
Вопрос в том обязан ли клиент вызвать пакет UTL_RECOMP и пересобрать это всё по первой ошибке?

Да откуда вы всё это берете?!
Какой рекомп от приложения, длянафига?

Я возможно отстал от жизни. А что 11-тка уже автоматом восстанавливает зависимые интерфейсы пакетов?
13 май 21, 16:15    [22321693]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
mayton
А что 11-тка уже автоматом восстанавливает зависимые интерфейсы пакетов?

В 11.2 так:
https://docs.oracle.com/cd/E18283_01/server.112/e17120/general007.htm
About Object Dependencies and Object Invalidation
Oracle Database provides an automatic mechanism to ensure that a dependent object is always up to date with respect to its referenced objects. When a dependent object is created, the database tracks dependencies between the dependent object and its referenced objects. When a referenced object is changed in a way that might affect a dependent object, the dependent object is marked invalid. An invalid dependent object must be recompiled against the new definition of a referenced object before the dependent object can be used. Recompilation occurs automatically when the invalid dependent object is referenced.


но еще раз спрошу:
- какое это имеет отношение к теме топика и обсуждаемым решениям?
- какое это имеет отношение к ветке java?
13 май 21, 16:28    [22321701]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
mayton,
Ты смешал два вопроса.
1. При смене хранимки админ должен перекомпилить сам невалидные пакеты что затронулись.
2. Но это не поможет и не исключит если кто торчал в сессии.
По п. 1 я писал цикл на PL и компилил невалидные.
По п. 2 писал выше. Вечером обновлял
13 май 21, 16:29    [22321703]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
andrey_anonymous
mayton
А что 11-тка уже автоматом восстанавливает зависимые интерфейсы пакетов?

В 11.2 так:
https://docs.oracle.com/cd/E18283_01/server.112/e17120/general007.htm
About Object Dependencies and Object Invalidation
Oracle Database provides an automatic mechanism to ensure that a dependent object is always up to date with respect to its referenced objects. When a dependent object is created, the database tracks dependencies between the dependent object and its referenced objects. When a referenced object is changed in a way that might affect a dependent object, the dependent object is marked invalid. An invalid dependent object must be recompiled against the new definition of a referenced object before the dependent object can be used. Recompilation occurs automatically when the invalid dependent object is referenced.


но еще раз спрошу:
- какое это имеет отношение к теме топика и обсуждаемым решениям?
- какое это имеет отношение к ветке java?


Ну сорян. Тогда по зависимостям интерфейса я снимаю вопрос. Но ты всё таки пришел в форум
Java из форума Oracle. Значит тебе нужен совет Java-разработчиков о том как подобный класс ошибок
решается на их стороне.
13 май 21, 16:53    [22321724]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
mayton
Значит тебе нужен совет Java-разработчиков о том как подобный класс ошибок
решается на их стороне.

Именно.
Но, как выяснилось, Java-разработчики (впрочем, как и оракловые) за редким исключением предпочитают обсуждать интеллектуальные способности и квалификацию ТС :)
Особо доставляет читать рассуждения о правилах игры на чужом поле :)
Впрочем, два ответа о трех вариантах на исходный вопрос я таки получил, коллеги прорабатывают.
13 май 21, 16:59    [22321729]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
>Но, как выяснилось,
= вот все знают, а ты нет). Внезапно))))
"ТС на любой ветке форума работает больше отвечающих и не артачится.. обычно" (с)
13 май 21, 17:10    [22321735]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
mayton
по зависимостям интерфейса я снимаю вопрос.

Могу подкинуть развитие примера на поиграться самостоятельно в интересующей версии oracle.
+
create or replace package dropme_p_dep
is
  type t_c is table of dropme_p.c%rowtype;
  function f(p int) return t_c pipelined;
end;
/

create or replace package body dropme_p_dep
is
  function f(p int) return t_c pipelined is
  begin
    for i in (select * from dropme_p.f(p)) loop
      pipe row (i);
    end loop;
  end;
end;
/

--Тестовый вызов, соответственно, меняется на 
select * from dropme_p_dep.f(3);

--Провокации прежние - alter compile, alter compile body, пересоздание некорректной спеки/некорректной тушки

--Проверять текущий статус объектов разработки (не состояния пакетов, а именно статус) можно посредством 
select object_name, object_type, status from user_objects where object_name like 'DROPME_P%';
-- это в комбинации со стеком ошибок позволяет "видеть", как работает/не работает автоматическая компиляция зависимых объектов

Задача прежняя - показать, как зациклится обработчик ORA-04068 :)
...как его зациклить искусственно я тоже могу показать, но это не из реального мира сценарий.
13 май 21, 17:11    [22321737]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
andrey_anonymous,
>Но, как выяснилось,
= вот все знают, а ты нет). Внезапно))))

Мир Ваших иллюзий столь трогателен, что я чту в немом восхищении.
Пожалуйста, не останавливайтесь - я даже начал собирать коллекцию Ваших перлов... и выперлов.
13 май 21, 17:21    [22321748]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
Жду коллекцию)
13 май 21, 17:28    [22321756]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Финализируя тему: механизм штатных интерцепторов в итоге устроил.
Проблема подавления ora-4068 в батике без модификации кода нашего проекта решена.
Еще раз спасибо коллегам SpringMan и Stanislav Bashkyrtsev за полезные ответы, позволившие сильно облегчить жизнь на проекте.
Коллеге PetroNotC Sharp - отдельная благодарность за доставленные лулзы.
13 май 21, 17:30    [22321759]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
Без кода интерцептора незачет.
Так индусы тему закрывают.
Заходи еще))))
13 май 21, 17:40    [22321765]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Код?
Зачем код, ежели оно изначально не то, не там, не так, не тем и не по тому месту?
А впрочем... Наши джависты нарисовали так:
+
@Slf4j
@Intercepts({
        @Signature(type = Executor.class, method = "queryCursor",
                args = { MappedStatement.class, Object.class, RowBounds.class}),
        @Signature(type= Executor.class, method = "query",
                args = { MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})
})
public class RetryInterceptor implements Interceptor {
    @Override
    public Object intercept(Invocation invocation) throws Throwable {
        Object returnObject;
        try {
            returnObject = invocation.proceed();
        } catch (Exception e) {
            if (e.getCause() instanceof SQLException) {
                if (e.getCause().getMessage().contains("ORA-04068")) {
                    log.debug("Exception ORA-04068, повтор");
                    return invocation.proceed();
                }
            }
            throw e;
        }
        return returnObject;
    }
    @Override
    public Object plugin(Object o) {
        return Plugin.wrap(o, this);
    }
    @Override
    public void setProperties(Properties properties) {
    }
}
13 май 21, 18:00    [22321776]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
Другое дело.
Вопрос к тебе как спецу в бд.
Есть ненулевая вероятность обратно получить дважды данный текст ошибки. Входим в цикл и сервер ляжет.
13 май 21, 18:54    [22321795]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp

Есть ненулевая вероятность обратно получить дважды данный текст ошибки. Входим в цикл и сервер ляжет.

"Твори, выдумывай, пробуй" (с)
22321623
13 май 21, 19:00    [22321799]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
Угу. Ты твори а я в продакшен повтор засунул))))
Люблю юмор.
Ладно, там вопросительный знак у меня потерялся.
Удачи)
13 май 21, 19:03    [22321801]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
andrey_anonymous,
Угу. Ты твори а я в продакшен повтор засунул))))

Там, где Вы размышляете в терминах "ненулевых вероятностей", я точно знаю что делаю.
Да и java-код Вы, по всей видимости, тоже прочитать не смогли.
Ну или не поняли.
Что, впрочем, не очень удивляет.

Сообщение было отредактировано: 13 май 21, 19:03
13 май 21, 19:06    [22321804]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
Я тоже понял, что вместо ответа на вопрос, вы напустили туману.
Вот и познакомились)
13 май 21, 19:17    [22321809]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
andrey_anonymous,
Я тоже понял, что вместо ответа на вопрос, вы напустили туману.

Еще один перл в коллекцию.
Вам привели как натурные эксперименты, наглядно демонстрирующие особенности обсуждаемого exception, так и конкретную реализацию интерцептора, которая не впадет в бесконечную рекурсию в случае "ненулевой вероятности".
Это, конечно, туман и ни в коем случае не ответ.
13 май 21, 19:20    [22321810]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
Нет милый мой. Я спрашивал именно про твой личный опыт.
Либо пруф.
Отвлеченный кусок кода не является натурным экспериментом. Юморист.
13 май 21, 19:35    [22321814]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
Отвлеченный кусок кода не является натурным экспериментом. Юморист.

Я уже понял, что Вы не понимаете пусть примитивного, но очень конкретного java-кода, который можно просто добавить в проект и получить ожидаемый эффект.
Осознал, что практические демо с приложенными ради независимой проверки тестовыми примерами - не пруф.
Пруф - это, видимо, "ненулевая вероятность" и общее околосферическое словоблудие.
Если у Вас нет конкретных соображений, как именно "зациклить" приведенный код - то продолжение разговора мне не интересно.
13 май 21, 19:41    [22321816]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
Хммм...
Вот смотрите.
Есть две парадигмы решения ошибки по сабжу
- обнулить сессию либо на клиенте, либо админские меры DBA при деплое
- погасить ошибку (повтор вызова/триггер/пустышка хранимка)
Вам как DBA почему то нравится озадачить java прогеров по второму варианту.
Меня как прикладного программиста привлекает первый вариант.
Вы на уровне архитектуры разве задумывались над этим?
13 май 21, 19:52    [22321820]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
Вам как DBA почему то нравится озадачить java прогеров по второму варианту.
Меня как прикладного программиста привлекает первый вариант.
Вы на уровне архитектуры разве задумывались над этим?

Вот смотрите.
Конкретных возражений против решения у Вас нет.
Потому что оно:
- работает
- не циклится (согласно общей логике и нашим тестам)
- эффективно решает конкретную проблему проекта, связанную с накатом обновлений без перерыва сервиса
- не создает лишней нагрузки ни на программистов, ни на администраторов, ни на техподдержку
- не требует развертывания второго сервера за еще один мегадоллар (тут еще рисуется ряд нетривиальных работ по обеспечению целостности при переключении, но кто считает...)
- стоило разово 2.5 часа времени разработчика + доставило мне несколько минут искреннего смеха в процессе чтения Ваших комментариев

Сообщение было отредактировано: 13 май 21, 20:16
13 май 21, 20:16    [22321824]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
У как много написали. Не торопитесь, отвечу.
https://www.sql.ru/forum/900575-a/avtomaticheskaya-perekompilyaciya-pri-obrashhenii-k-paketu-tknite-nosom-v-doku?hl=04068
автор
У нас всё в итоге решилось прокидыванием эксепшена ORA-04068 наружу "до клиента".

До этого как оказалось, он в некоторых местах гасился в обработчиках WHEN OTHERS, что приводило к такой вот хрени как перманентный ORA-06508. Теперь всё работает как часы.

А еще в большей части пакетов вообще удалось отказаться от глобальных переменных.
В итоге теперь накатывание такого тела пакета вообще не приводит ни к каким последствиям типа ORA-04068.

Вот вы также гасите как чел выше
13 май 21, 20:24    [22321827]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
>Потому что оно:
== вы сравниваете колбасу с колбасой?
В архитектуре сравнивают минимум два подхода.
Вас бы тендерами управлять))
13 май 21, 20:28    [22321829]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
Вот вы также гасите как чел выше

Да.
Выкидываем на клиента и там гасим.
Потому что это правильно и не создает ненужных проблем.
Согласно приведенной Вами же цитате этот же поход позволил ТС решить свои проблемы с "перманентной 06508".
6508, Карл, а не 4068. Тему 6508 в этом топике поднимал Leonid Kudryavtsev и она на самом деле лежит в стороне от 4068, не являясь, таким образом, предметом обсуждения.
13 май 21, 20:33    [22321832]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
В архитектуре сравнивают минимум два подхода.

Так я и сравнил.
- с технической точки зрения
- с точки зрения эксплуатационных расходов
- с точки зрения затрат на разработку/внедрение/сопровождение
- с точки зрения удовлетворения требованиям непрерывности сервиса
- с точки зрения расходов на необходимую инфраструктуру (это когда Вы предлагали вторую БД поставить)

В вот что именно сравнивали Вы - осталось загадочной загадкой.
13 май 21, 20:38    [22321834]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous
PetroNotC Sharp
Вот вы также гасите как чел выше

Да.
Выкидываем на клиента и там гасим.
Потому что это правильно и не создает ненужных проблем.
Согласно приведенной Вами же цитате этот же поход позволил ТС решить свои проблемы с "перманентной 06508".
6508, Карл, а не 4068. Тему 6508 в этом топике поднимал Leonid Kudryavtsev и она на самом деле лежит в стороне от 4068, не являясь, таким образом, предметом обсуждения.
блин. Он обработал исключение пробросив его наверх.
Он отказался его гасить на своем уровне.
С чего ты решил что в java порядки другие?
Тут тоже
try {
} catch (Exception e) {
Null
Это плохой тон.
13 май 21, 21:55    [22321860]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous
PetroNotC Sharp
В архитектуре сравнивают минимум два подхода.

Так я и сравнил.
- с технической точки зрения
- с точки зрения эксплуатационных расходов
- с точки зрения затрат на разработку/внедрение/сопровождение
- с точки зрения удовлетворения требованиям непрерывности сервиса
- с точки зрения расходов на необходимую инфраструктуру (это когда Вы предлагали вторую БД поставить)

В вот что именно сравнивали Вы - осталось загадочной загадкой.
вам в школу надо
Дано: условие задачи....
Вариант решенияА
Вариант решенияБ
Надо рассмотреть два варианта с этих всех точек зрения))))
13 май 21, 22:18    [22321866]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3852
andrey_anonymous
И вот теперь скажите мне, Андрей Панфилов, если бы я в ответ на Ваше "странное желание писать сомнительный код" отвечал Вам так же, как Вы мне - удостоился бы я
12082346
или нет, как полагаете?
Спасибо за внимание.


Андрей, вы в том топике дали профессиональный ответ, я вас отблагодарил, а здесь вы по какой-то причине всеми силами пытаетесь увернуться от точно такого же профессионального ответа. Конкретно в этом форуме у участников кругозор несколько шире, ввиду того что постоянно приходится работать с разными системами, поэтому юродствуете вы совершенно зря. Вот давайте разберем ситуацию с ошибкой более подробно: вы разрабатываете (или поддерживаете, не суть важно) некую систему, где было принято решение бизнес-логику зашить в хранимые процедуры (насколько это решение правильное и какие были мотивы мы не обсуждаем), т.е. вы (БД) клиенту (жава-приложению) помимо (или вместо) стандартных CRUD-операций предоставляете еще другой API в виде неких RPC-вызовов к БД, в какой-то момент времени происходит осознание того, что обновление реализации предоставляемого API для клиента происходит не так прозрачно как хотелось бы, вы идете к вендору (ораклу) и узнаете, что существует потенциальная возможность избежать проблем, однако стоимость "правильного решения" слишком высока (трудозатраты, злой заказчик, который хочет вчера, возможно стоимость лицензий и пр.), ну и в итоге вы оказываетесь на этом форуме с вопросом какбы в жаве побыстрому нагородить костылей...

Вот есть ошибка:

ORA-04068: existing state of packages has been discarded
ORA-04061: existing state of has been invalidated

что она по своей сути означает? Означает она следующее: реализация API, предоставляемого клиенту, поменялась и вероятнее всего, если повторно выполнить RPC то ошибки уже не будет, но вот вопрос: а насколько валидны вычисления, сделанные в текущей транзакции до возникновения этой ошибки? И здесь беда в том, что никто не знает, т.е.:
- БД при обновлении хранимых процедур просто пометила, что у них реализация поменялась, и выкидывает ошибку
- драйвер БД не уполномочен принимать решение о повторе RPC и поэтому делегирует решение клиенту (жава-приложению)

и по хорошему здесь следует откатить транзакцию и повторить все вычисления заново (это ровно то, что все остальные фреймворки и делают, видимо за исключением MyBatis), однако тут возникаете вы с крамольной идеей, что можно перехватить вызов конкретного RPC и в случае довольно общей ошибки повторить, ну извините, раз этот RPC ваш и обладает свойством идемпотентности, а жава-приложение уже успело получить соединение, то и реализуйте повтор операций у себя, а не тащите его на клиента, т.е. не стоит размазывать крайне сомнительные решения по всему проекту - держите их в одном месте.


Теперь давайте разберем то, чем вы гордитесь...

andrey_anonymous
стоило разово 2.5 часа времени разработчика + доставило мне несколько минут искреннего смеха в процессе чтения Ваших комментариев

andrey_anonymous

@Slf4j
@Intercepts({
        @Signature(type = Executor.class, method = "queryCursor",
                args = { MappedStatement.class, Object.class, RowBounds.class}),
        @Signature(type= Executor.class, method = "query",
                args = { MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})
})
public class RetryInterceptor implements Interceptor {
    @Override
    public Object intercept(Invocation invocation) throws Throwable {
        Object returnObject;
        try {
            returnObject = invocation.proceed();
        } catch (Exception e) {
            if (e.getCause() instanceof SQLException) {
                if (e.getCause().getMessage().contains("ORA-04068")) {
                    log.debug("Exception ORA-04068, повтор");
                    return invocation.proceed();
                }
            }
            throw e;
        }
        return returnObject;
    }
    @Override
    public Object plugin(Object o) {
        return Plugin.wrap(o, this);
    }
    @Override
    public void setProperties(Properties properties) {
    }
}


- во-первых, два с половиной часа для более-менее серьезной системы - это как-то мало, я бы только недели 2 писал бы интеграционные тесты
- во-вторых, утверждение сделанное в приведенном коде примерно звучит так (здесь я понимаю что у вас с пониманием написанного возникают определенные затруднения): если второе исключение в цепочке исключений является исключением, связанным с обращением к БД, и в тексте этого исключения есть "ORA-04068", то повторить RPC. Проблема здесь в том, что подобный подход к решению проблемы разваливается при малейших изменениях как со стороны жава-кода, так и со стороны изменений в хранимых процедурах, например завтра в MyBatis решили добавить логирование вызовов, и исключение стало в цепочке уже не вторым, а третьим, или поменяли вы код на PL/SQL и ORA-04068 стало прилетать не от проблемной процедуры, а от совсем другой, или самой первой ошибкой была не ORA-04068, а какая-то другая.

Вообщем код на самом деле так себе, а учитывая вот это:

andrey_anonymous
На ближайшем code review "гений", сотворивший эту пакость, получит по шапке.

Я как-то удивлен, что для PL/SQL у вас ревью кода есть, а для жавы - нет.
14 май 21, 05:26    [22321922]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Андрей Панфилов,
автор
- БД при обновлении хранимых процедур просто пометила, что у них реализация поменялась, и выкидывает ошибку
- драйвер БД не уполномочен принимать решение о повторе RPC и поэтому делегирует решение клиенту (жава-приложению)

+1
Кроме того, насколько понял, оракле выбрасывает эту ошибку в самом конце proc call при передаче управления клиенту. На этом уровне у него нет полной информации и затрагиваются совершенно другие пакеты в сессии.
"не надо править за два часа. Надо за две недели" - вполне хороший слоган)
14 май 21, 07:07    [22321926]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
ТС, вы профи в бд.
Почему даже не для себя а для нас тут, замалчиваете подробности вашей системы. Вашего контекста.
- какой размер пула?
- сколько активных сессий всего, так как только из за них ошибка? Только тех сессий которые тронули меняемый пакет.
- почему не пошли по пути как тут
автор
А еще в большей части пакетов вообще удалось отказаться от глобальных переменных.
В итоге теперь накатывание такого тела пакета вообще не приводит ни к каким последствиям типа ORA-04068.

22321827
?
То что пакеты не особо нужны при трехзвенке мы опустим. Не отвлекаемся.
Вы в гостях. Будьте вежливы и делитесь информацией.
14 май 21, 07:19    [22321928]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
PetroNotC Sharp

Как данные подробности влияют на вопрос затронутый в Subj ?
14 май 21, 09:34    [22321954]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
Андрей Панфилов

а насколько валидны вычисления, сделанные в текущей транзакции до возникновения этой ошибки?

andrey_anonymous
PetroNotC Sharp
Вы гарантируете что банковская транзакция не сломается?

Гарантирую.
Сейчас вообще в моде девопс и накат изменений без перерыва сервиса.
14 май 21, 09:41    [22321957]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Leonid Kudryavtsev
PetroNotC Sharp

Как данные подробности влияют на вопрос затронутый в Subj ?
выше чел решил проблему без java.
Не?
14 май 21, 09:45    [22321960]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Leonid Kudryavtsev,
Разве пул нельзя переинициализировать?
14 май 21, 09:48    [22321961]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
Повторюсь, на мой взгляд, у пробы минимум 3-и уровня и соответственно, на каждом из этих уровней проблема может решаться.

1. Организация/методика наката патчей.
Если DevOps решил менять пакеты при работающем приложении и считает, что это безопасно - пусть и добивается решения проблемы на уровне своих скриптов.
(средствами Oracle, тормозит app часть и сбрасывает пулы в ноль и так далее)
2. Не очень корректная работа с пулом
При получении/отдачи соединения в пул, в соединение остаются чужие данные (в пакетах). По хорошему, их нужно было бы после себя очищаться.
(хотя бы с точки зрения безопасности/конфиденциальности данных)
3. Программное решение. Обработка таких ситуаций в коде

Как решать на конкретном проекте - наверное с проекта виднее.

Решение попахивает костыльностью, но это и так всем понятно. Но не видел ни одного реального проекта, собранного без использования костылей и палок. Если на Вашем проекте Вы такого не знаете, значит, Вы плохо знаете свой проект ))) IMHO

+

Как пример палок под серверными:
Один заказчик после покупки 100500 техники, заказал аудит серверной. Ответ был, что вес очень большой, пол может не выдержать, здание на такую нагрузку не рассчитано, нужно укрепить пол (поставить снизу колонну, пол/потолок подпереть). Объявили тендер. Подрядчик установил колонну. Колонная хорошая - прочная. Только поставили ее.... (тут играют фанвара)... прямо поверх фальш-пола (лопата)
14 май 21, 10:01    [22321970]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Leonid Kudryavtsev,
Согласен.
Также согласен что везде есть костыли.
Я например, не стесняюсь костыль назвать костылем если просят))
Вариант с погасить и "постучаться дважды" он тупой и неинтересный. Это индусский костыль.
Мне лично интересны два вопроса
- прав ли чел выше что можно решить без java
- "как вам Илон Маск" решение с обнулением пула в связи с техническими работами.
14 май 21, 10:13    [22321973]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
И по последней части, т.е. собственно повтор операции. Так же уже сказали, что опять таки возможно несколько уровней

1. На уровне транзакций на app сервере.
Например, если это REST Full (без состояния) и запросы это HTTP-вызов, то просто повторяем вызов сервиса.
(возможно даже ngnx этому обучить можно, на одном из пред. проекте переповторами занимался ровно балансировщих нагрузки)
2. На уровне транзакций СУБД
Откатываем всю транзакцию, повторяем
3. На уровне statement СУБД
14 май 21, 10:14    [22321975]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
PetroNotC Sharp

...
- "как вам Илон Маск" решение с обнулением пула в связи с техническими работами.

Тут же не просто обнуление ПОСЛЕ технических работ. Как я понимаю, топик стартер хочет что бы не было ошибок ВО ВРЕМЯ технических работ. Т.ч. обнуление после не поможет.

Я бы сказал, что по хорошему: нужно бить систему на мелкие модули (что бы при накатах небольших изменений не останавливать всю инфраструктуру), приостанавливать обновляемый модуль, быстро проводить накат изменений, возобновлять работу приостановленного модуля.

Но "сейчас вообще в моде девопс и накат изменений без перерыва сервиса."
14 май 21, 10:19    [22321977]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Leonid Kudryavtsev,
>Тут же не просто обнуление ПОСЛЕ технических работ. Как я понимаю, топик стартер хочет что бы не было ошибок ВО ВРЕМЯ технических работ. Т.ч. обнуление после не поможет.
=
-1
Обнуление не после работ. Выше давал юз кейс.
Маша зашла и тронула пакет. Он оказался в кеше а коннект в пуле живой до вечера.
Вечером ваня тронул пакет а он не бъет с тем из кеша.
Получил райзе.
Дак вот админ в обед накатывая изменения должен рестартануть пул.
Всё!
14 май 21, 10:27    [22321984]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Leonid Kudryavtsev,
Если ваше "во время" это время наката скриптов. То на боевой системе так делать без зеркала вообще дикость.

Сообщение было отредактировано: 14 май 21, 10:28
14 май 21, 10:31    [22321988]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Leonid Kudryavtsev,

Второй вариант. Мне кажется есть такая галка в пуле.
Перед накатом скриптов выставить время жизни в пуле соединений равное минуте.
Потом ждать пока длинный коннект не освободится)).
Все живут на минутных соединениях.
Потом вернуть.
14 май 21, 10:45    [22321995]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
PetroNotC Sharp

Если ваше "во время" это время наката скриптов.

Ну по крайне мере я так понял топик стартера.
"сейчас вообще в моде девопс и накат изменений без перерыва сервиса."

Вашей категоричности, что дикость - не разделяю ))) но да, несколько странное и рискованное решение IMHO

Пусть остается на совести того, кто такое решение принял. Тут некоторые считают, что за критику архитекторов программисты должны заявления об увольнении писать 22321029. Т.ч. опасная тема, по опасности приближается к миганию фонариками под подушкой (уголовно наказуемое в РФ деяние).
14 май 21, 10:49    [22321998]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
PetroNotC Sharp
равное минуте

Эту минуту клиенты будут получать ошибку. Т.ч.
"сейчас вообще в моде девопс и накат изменений без перерыва сервиса."
не получится

По хорошему нужно тормозить (pause) службы на время наката. IMHO
14 май 21, 10:52    [22322000]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Leonid Kudryavtsev,
Ну и вы говорили про долности вокруг СУБД
Есть кроме Elic еще профи в ветке - Ааз
Ааз
Оба правы, ибо не фиг непредсказуемое навешивать.
- Разработчик на своей девелоперской БД (например, очень недавний бэкап промышленной) отладил скрипт.
- DBA на тестовой (куда девелоперам доступа нет) тупо запустил скрипт и проверил отсутствие ошибок. Запустил туда админа приложения для проверки функционала
- запланировали downtime или ограниченную доступность сервисов. DBA подготовил возможность отката (standby с задержкой наката redo подойтёт).
- В момент Ч DBA прогнал проверенный скрипт и пустил админа приложения проверить основной функционал. Если ОК - пущаем в продакшн. Если не Ок, откатываемся на запасные путя и предоставляем начальству удовольствие оттрахать разработчика или администратора приложений (по выбору).

Всего

Неужели все изменилось?
14 май 21, 10:54    [22322002]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Leonid Kudryavtsev,
>сейчас вообще в моде девопс
= угу. Профи мельчают просто.
Разработчик бд пишет пакеты без состояния и не имеет зеркала.
Конечно скушно будет. Писать то что? Пакетировать select в пачку?
))
А че мы тут с сервисами мучаемся если организация не может его рестартануть?
Микросервис тоже через try гасить будем?
14 май 21, 10:59    [22322005]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
booby
Member

Откуда:
Сообщений: 2534
Leonid Kudryavtsev
... Тут некоторые считают, что за критику архитекторов программисты должны заявления об увольнении писать ....

Что за мода передергивать. Код-то кто писать будет, если программистам разрешить заявление об увольнении писать?

Вы не передергивайте пожалуйста.
А дела обстоят так:
Программист должен безусловно жестко наказываться за
- любую попытку думать, в том числе:
- желание писать или оптимизировать код с любой точки зрения, не описанной в "стандартных правилах"
- любую форму борьбы за производительность
- любые формы личного "творческого велосипедостроения", выражающиеся, например, в отказе от предписанного использования вмененных библиотек.
И не его собачье дело, если архитектор зависимости в проект с полинтернета собирает.

Вот и все, а вы ещё собираетесь увольнение разрешить...
Наказать выговором с записью в трудовую и лишить премии/надбавки, вот и всё.
Копать-то от забора до рассвета кто будет?

Сообщение было отредактировано: 14 май 21, 10:56
14 май 21, 11:01    [22322006]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
booby,

Полностью не согласен. Все что Вы перечислили, можно описать одной фразой:

- Следовать стандартам разработки, принятым на проекте

Соответствие кода стандартам разработки (писанным и не писанным) обычно выясняется на коде ревью и последующей meeting'е.

IMHO & AFAIK
14 май 21, 11:18    [22322016]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
booby,
Это вообще большая тема.
Прогер ведь тоже делится на кодировщика и программиста))
14 май 21, 11:24    [22322021]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Остался пустяк. Спрашивать всех вопрошающих их роль на проекте. Я думаю - потеряем всех мемберов тогда
14 май 21, 11:30    [22322029]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
booby
Копать-то от забора до рассвета кто будет?


Самый эпичные ТЗ на разработку, которые я видел:

- Нам в системе не хватает 400 полей, но мы не знаем, какие именно

было реализовано !!! программиста взяли на испытательный срок и он боялся написать консультантам отписку предыдущих программистов "мы не против добавить 400 полей, но напишите, какие именно полей не хватает, мы их добавим"

- Нам нужна ф-ция массового удаления всех выставленных счетов за год. Пользователи руками (!) выставляют счета на год вперед (!), в конце года их невозможно удалить (разумеется, т.к. периоды закрыты, документы отданы в налоговую). Нужно реализовать массовое удаление.

на отписку программистов "объясните, занафига пользователи так делают?" в течении 3-х (!!!) лет, аналитики ответить не сумели. Задача была не реализовано (т.к. гениальные программисты на испытательном сроке уже закончились)

P.S. Т.з. приведены почти ДОСЛОВНО. Примерно так и звучали на совещании с участием директоров фирмы. И таки да... первое ТЗ было даже успешно реализовано, всем понравилось и внедрено в продакшен....
14 май 21, 11:34    [22322033]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
booby
Member

Откуда:
Сообщений: 2534
PetroNotC Sharp
booby,
Это вообще большая тема.
Прогер ведь тоже делится на кодировщика и программиста))

ой, вот вы и "прокололись".

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

"Делятся" люди на разработчиков и программистов. Кодировщик - уничижительное имя программисту, а
прогер, это такой кодировщик, который точно знает, что и кодировать-то он, толком, - тоже не умеет.
14 май 21, 11:41    [22322042]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
p.p.s.
+
забыл еще одно Т.З. (нормальное!)
Повагонный учет в OeBS на Ижорском Трубном Заводе

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

На мои слова, что я программист и без Md.50 не могу ничего сделать, т.к. нужно зарегистрировать MD.50 у начальника отдела разработки, получить номер, списать на него время в таймшите.

Сделал просто: на рисунке написал Md.50 и поставил свою подпись. Он же менеджер проекта ))) Md.50 готов, можно время в таймшитах списывать )))
14 май 21, 11:42    [22322043]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
booby

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

Как хорошо, что у меня нет ни первого, ни второго )))
14 май 21, 11:43    [22322044]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Leonid Kudryavtsev
booby
Копать-то от забора до рассвета кто будет?


Самый эпичные ТЗ на разработку, которые я видел:

- Нам в системе не хватает 400 полей, но мы не знаем, какие именно

было реализовано !!! программиста взяли на испытательный срок и он боялся написать консультантам отписку предыдущих программистов "мы не против добавить 400 полей, но напишите, какие именно полей не хватает, мы их добавим"

Это - нормальное ТЗ. Возможно фраза была просто стенографирована буквально.
В дата-аналитике никакой чел не помнит названия всех полей. Да и названия у них : 123 ... e.t.c.
Типа список уточняется. Но их будет порядка столько-то.
14 май 21, 11:44    [22322045]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
booby
Member

Откуда:
Сообщений: 2534
Leonid Kudryavtsev
... всем понравилось и внедрено в продакшен....

Вот именно, а вы говорите думать.
Сказано нарисовать три синих линии красным цветом - вперед, иди и рисуй.
Невозможно же, даже из показного уважения, терпеть попытки думать на ясно выраженной задачей.
14 май 21, 11:49    [22322049]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
mayton

Это - нормальное ТЗ. Возможно фраза была просто стенографирована буквально.
В дата-аналитике никакой чел не помнит названия всех полей. Да и названия у них : 123 ... e.t.c.
Типа список уточняется. Но их будет порядка столько-то.

Что значит фраза? Что значит стенографирована?

Это Т.З. Все Т.З. Дословно.

mayton

В дата-аналитике никакой чел не помнит названия всех полей

нельзя помнить того, чего нет

mayton
Типа список уточняется. Но их будет порядка столько-то.

Ну да... в лучших традициях аналитиков...

Проблема только в том, что задача для программистов была мною ДОСЛОВНО озвучена выше.

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

По второй задаче, ответ на вопрос "а нафига пользователи так делают?" не был получен в течении 3 (ТРЕХ) лет. Проект закончился, фирма была уничтожена, деньги поделены, но ответа на данный вопрос так и не последовало и задача так и не была реализована (т.к. злобные программисты, без ответа на данный вопрос, делать отказывались).
14 май 21, 11:57    [22322055]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Leonid Kudryavtsev, я понял твоё беспокойство. Но с неполными ТЗ я имею дело каждый день.
Обычно бизнес пишет userStory где буквально "Я хочу птичьего молока". Далее бизнес-аналитик
с нашей стороны обсуждает сорта этого молока и птиц с которых он его хотел-бы получить.
Возможно в твоём сегменте хотят полное и точное ТЗ и сразу... но это не всегда возможно.
Система живет своей жизнью и пока ТЗ созревает ... и система меняется и султан может
помереть.
14 май 21, 12:06    [22322065]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
mayton, offtop, т.ч. под спойлером
+

mayton
Далее бизнес-аналитик
с нашей стороны обсуждает сорта этого молока и птиц с которых он его хотел-бы получить.

не спорю

mayton

Возможно в твоём сегменте хотят полное и точное ТЗ и сразу... но это не всегда возможно.

вопрос к аналитику "занафига пользователь так делают?" есть "полное и точное ТЗ и сразу" ?

вопросы вида "как поступать, если данный счет попал в книгу покупок продаж, а книга уже была передана в налоговую" не задавали. Бог с ним с книгой, налоговой... это проблемы заказчика...

Нам просто интересно знать: занафига пользователи руками (!) вводять счета на год вперед (!) что бы их потом удалять.

У нас было подозрение ))), что нужно просто на компьютеры пользователей поставить LINES (игрушка такая, килобайт 100 занимает)
* и пользователям есть чем заняться (это все таки более веселое занятие чем счета на год вперед заводить)
* и нам хорошо (ничего делать не надо).
Мы, в отличие от пользователя, чем занять себя на рабочем месте - и так знали.

p.s.
подозреваю пользователи не идиоты, и действительно это было нужно. Только вот вопросы "что именно нужно пользователю и занафига они это делают через ж...." это не отменяет. Может их нужно научить это делать правильно. Может нужно систему поменять (возможно правильный ф-ционал просто не работает).

Но политика фирмы была, что с пользователями могут общаться только аналитики. У программистов доступа на территорию заказчика физически не было.

Если гланды плохо лечатся через жопу (огурец не пролезает).... нужно увеличить размер жопы.... Л - логика.
14 май 21, 12:22    [22322091]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
booby
Member

Откуда:
Сообщений: 2534
Leonid Kudryavtsev
.. злобные программисты, без ответа на данный вопрос, делать отказывались ..

у меня такое впечатление, что вы несколько плоско разглядываете картинку.

Программирование это что - просто профессия (на чём настаивал Дейкстра)
или, специфически - ремесло (именно на этом делает активный и с ударением упор Степанов)
Если ремесло, то именно у ремесленника есть не просто право, а обязанность думать.
И право не брать заказ к исполнению.

Leonid Kudryavtsev

Ну да... в лучших традициях аналитиков...

Вот именно у ремесленников, как правило, никаких "аналитиков" и нет.
Они обычно сами себе "аналитики".

А когда к тебе аналитика приставили, значит, парень, ты попал - в промышленность.
Да, у тебя есть "профессия", как у водителя кобылы. И дело твое - кодировать направление её движения.
14 май 21, 12:24    [22322093]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Leonid Kudryavtsev
p.p.s.
+
забыл еще одно Т.З. (нормальное!)
Повагонный учет в OeBS на Ижорском Трубном Заводе

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

На мои слова, что я программист и без Md.50 не могу ничего сделать, т.к. нужно зарегистрировать MD.50 у начальника отдела разработки, получить номер, списать на него время в таймшите.

Сделал просто: на рисунке написал Md.50 и поставил свою подпись. Он же менеджер проекта ))) Md.50 готов, можно время в таймшитах списывать )))
))))))))
14 май 21, 12:24    [22322095]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
booby,
Программирование это _пока_ искусство.
И кодировщик это просто чел не умеющий писать без разжевывания.
Сеньор уже должен сам писать.
14 май 21, 12:27    [22322099]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Андрей Панфилов

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

Спасибо за профессиональные ответы, Андрей.
Просто поверьте, Ваш вопрос в том топике столь же легко было профессионально заболтать до полной невменяемости, объявить Вас юродствующим, рассказать о недостаточном кругозоре.
Еще порекомендовать решать такие проблемы на клиенте и с пеной у рта доказывать, что ежели проблема у приложения - то пусть оно само их и решает.
А можно поступить так, как поступили коллеги здесь и я там: просто показать, как именно можно поступить, если хоть на минуту предположить, что ТС не совсем дебил, а "странное желание писать сомнительный код" имеет под собой основания отличные от "хочу".
Надеюсь, аналогия достаточно прозрачна.

Андрей Панфилов

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

Я не вижу в использовании штатного для применяемого фреймворка подхода особой костыльности.
Кроме того, я не вижу и необходимости палить из пушек по воробьям.

Андрей Панфилов

Вот есть ошибка:

ORA-04068: existing state of packages has been discarded
ORA-04061: existing state of has been invalidated
что она по своей сути означает? Означает она следующее: реализация API, предоставляемого клиенту, поменялась и вероятнее всего, если повторно выполнить RPC то ошибки уже не будет, но вот вопрос: а насколько валидны вычисления, сделанные в текущей транзакции до возникновения этой ошибки?

Хотя этот вопрос и выходил за рамки дискуссии, я, как мне кажется, осветил его достаточно подробно, вплоть до демо, которое можно воспроизвести, поставить собственные эксперименты и даже - обратите внимание - показать неучу, как можно убрать из демо-пакета переменные, исключив 4068 ;)
Не знаю как еще можно донести реальное положение дел до коллег, не готовых спуститься со своих Эмпиреев до жалких фактов "на земле", с этих самых Эмпиреев, по всей видимости, не различимых.

Андрей Панфилов

И здесь беда в том, что никто не знает, т.е.:

Беда здесь в том, что тезис "я не знаю" подменен тезисом "никто не знает".
Сущность (как и ее следствие - "одноразовость") данного конкретного исключения хорошо известна, поведение rdbms в различных сценариях продемонстрировано.

Андрей Панфилов

и по хорошему здесь следует откатить транзакцию и повторить все вычисления заново

Это типовое заблуждение, обсуждать которое в рамках дискуссии желания нет.
Если кратко, то "похорошесть" отката всей транзакции при возникновении любого исключения в одном из ее statements имеет единственное преимущество перед корректной обработкой предусмотренной исключительной ситуации - не требует думать о том, что делаешь.
Из недостатков, как минмум:
- безусловный откат длинной(-ных) тяжелой(-лых) транзакции(-й) способен заблокировать работу отдельных операций БД на неопределенное время. На этот спецэффект, в частности, несколько лет назад попали DBA Сбера, в результате быстрых, но недостаточно продуманных действий которых система простаивала несколько часов, пока шли откаты - крупный был скандальчик. Но зато "по хорошему", ага..
- безусловный откат транзакции в оговоренном сценарии способен внести существенные сложности в интеграционные взаимодействия, особенно в те из них, которые не защищены транзакционными механизмами.
[с этого момента я, в принципе, в состоянии начать лечить Ваш кругозор, рассказывать о сертификатах и заслугах, изрекать высокопарные тезисы о том, что есть правильно, а что - нет.
Но все-таки воздержусь, поскольку если Вы человек недалекий, то это будет бесполезно, а если умный - то сказано достаточно.
Помимо прочего, моё эго самоутверждения за Ваш счёт не требует :)]

Андрей Панфилов

однако тут возникаете вы с крамольной идеей, что можно перехватить вызов конкретного RPC и в случае довольно общей ошибки повторить, ну извините, раз этот RPC ваш и обладает свойством идемпотентности, а жава-приложение уже успело получить соединение, то и реализуйте повтор операций у себя, а не тащите его на клиента

Из этого пассажа я вижу, что в детали Вы не вдавались от слова "никак", исходите из частных представлений о "прекрасном" и повторно декларируете "решение", основанное на ошибке в исходной посылке.
Нельзя обрабатывать в БД исключения, связанные с протоколом клиент-сервер.
Это ошибка.
Коллега PetroNotC Sharp, не разобравшись, уже привел ссылку на страдания человека, пошедшего указанным путем и после мучительной попаболи вернулся таки на путь истинный - отдал клиенту клиентово.
Не уверен, что аналогия будет понята адекватно, но попробую: с т.з. инфраструктуры у 4068 много больше общего с 3113, чем с 0001.

Андрей Панфилов

andrey_anonymous
стоило разово 2.5 часа времени разработчика + доставило мне несколько минут искреннего смеха в процессе чтения Ваших комментариев


- во-первых, два с половиной часа для более-менее серьезной системы - это как-то мало, я бы только недели 2 писал бы интеграционные тесты

Не сомневаюсь, что на интеграционные тесты можно было заложить и все 4 недели, а если с помощником - то до полугода.
Это не есть предмет дискуссии

Андрей Панфилов

если второе исключение в цепочке исключений является исключением, связанным с обращением к БД, и в тексте этого исключения есть "ORA-04068", то повторить RPC.

Да, верхний exception суть InvocationTargetException, в который механикой батиса обернуто нужное мне.

Андрей Панфилов

Проблема здесь в том, что подобный подход к решению проблемы разваливается при малейших изменениях как со стороны жава-кода, так и со стороны изменений в хранимых процедурах, например завтра в MyBatis решили добавить логирование вызовов, и исключение стало в цепочке уже не вторым, а третьим

Ничего страшного в этом случае не произойдет, мы просто получим на тестовой среде исходную ситуацию, требующую переинициализировать коннекты или просто подождать пока приложение позовет пакеты повторно само.
В этой связи отложим переход на новую версию батиса до анализа причин и решения проблемы.
Андрей Панфилов

, или поменяли вы код на PL/SQL и ORA-04068 стало прилетать не от проблемной процедуры, а от совсем другой, или самой первой ошибкой была не ORA-04068, а какая-то другая.

С этого места, пожалуйста, поподробнее. Пока что я вижу лишь подтверждение сложившегося у меня мнения, что Вы исходите из неверных исходных посылок, проистекающих из невнимания к деталям.
14 май 21, 12:28    [22322102]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
mayton

Обычно бизнес пишет userStory где буквально "Я хочу птичьего молока". Далее бизнес-аналитик
с нашей стороны обсуждает сорта этого молока и птиц с которых он его хотел-бы получить....

Просто, если жестко подходить с точки зрения должностной инструкции

- пользователи озвучивают userStore "я хочу птичьего молока"
- дальше, бизнес аналитик пишет ТЗ "взять кусок говно, полить сверху белой краской, упаковать как конфеты"
- приносит ТЗ программистам
у программистов, блин, целый шкаф в отделе завален и птичьем молоком, и вискарем, и даже самбука есть.
но вот проблема: говна нет и где его (и кто) будет брать не очень понятно. Где - понятно, но кто согласится этой работой заниматься - не понятно
а водоимулсионной краски вообще нет, это нужно брать у начальства деньги, бежать в соседний магазин.

Тут же закрадывается подозрение. А соответствует ли ТЗ исходному userStrore

p.s.
Насколько я помню MD.50 по AIM начинается с пункта "краткое описание бизнес-процесс и проблема из-за которой данное Т.З. составляется"
Но вот в российских Т.З. оно часто отсутствует как класс.
14 май 21, 12:32    [22322108]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
booby
Member

Откуда:
Сообщений: 2534
PetroNotC Sharp
booby,
Программирование это _пока_ искусство.
...

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

Ознакомьтесь с тем, что такое шедевр
https://ru.wikipedia.org/wiki/Шедевр

Шедевр - это предмет, то, что кандидат на городскую бумагу, дающему ему право работать в данном городе в качестве мастера,
должен продемонстрировать городской ремесленной комиссии на специальном экзамене приема в гильдию городских ремесленников.
Кубок там золотой/серебряный, модель здания или иное его ремеслу подходящее деяние.
Если комиссия признает, что продемонстрированное - шедевр, то человек - мастер.

А что происходит в данном топике - человек приносит "шедевр", вы говорите - ты не мастер.
И получаете вполне промышленный ответ - я и не спрашивал у вас, мастер я или нет.
14 май 21, 12:54    [22322121]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
booby
Шедевр - это предмет, то, что кандидат на городскую бумагу, дающему ему право работать в данном городе в качестве мастера,
должен продемонстрировать городской ремесленной комиссии на специальном экзамене приема в гильдию городских ремесленников.

Обратите внимание, в гильдию ремесленников.
Программирование - ремесло, которое за последние десятилетия потихонечку переходит в разряд промышленности.
Для чего обзаводится характерными атрибутами - широкая стандартизация технологий и методов управления, снижение требований к квалификации рабочей силы, анонимизация конкретных работников, создающих продукцию.
Переход можно будет считать завершенным, когда мелкие коллективы уникальных специалистов будут заниматься преимущественно "элитным тюнингом" продукции крупных корпораций.
И да, мастер на производстве - это должность, на которую назначают, а не статус, который признают.

Сообщение было отредактировано: 14 май 21, 12:58
14 май 21, 13:05    [22322136]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
Как вы любите болтать то)))
автор
Хотя этот вопрос и выходил за рамки дискуссии, я, как мне кажется, осветил его достаточно подробно, вплоть до демо, которое можно воспроизвести, поставить собственные эксперименты и даже - обратите внимание - показать неучу, как можно убрать из демо-пакета переменные, исключив 4068 ;)
Не знаю как еще можно донести реальное положение дел до коллег, не готовых спуститься со своих Эмпиреев до жалких фактов "на земле", с этих самых Эмпиреев, по всей видимости, не различимых.

Покажите коротко решениеБ чисто на PL и почему вы его не приняли а пошли по решениюА
?
14 май 21, 13:10    [22322137]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
и почему вы его не приняли а пошли по решениюА
?

4068 - не ошибка прикладного кода PL/SQL, а исключение на уровне инфраструктуры.
Его сложно обрабатывать изнутри PL-машины, да и ни к чему.
Посмотрите Вами же приведенную ссылку внимательно и ответ станет понятен даже Вам.
Надеюсь, по крайне мере.
14 май 21, 13:14    [22322139]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
booby,
Причем тут максимализм про шедевры и нобелевки?
Чел может заниматься искусством без шедевров.
Конечно цель не СТАНДАРТИЗИРУЕМА и Не ФОРМАЛИЗОВАНА.
Если формализуете ТЗ по ГОСТ, то можно и кодировщика нанять.
Однако все любят синьоров которые Самостоятельно решают НЕФОРМАЛИЗОВАННЫЕ задачи
14 май 21, 13:14    [22322140]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
Вы опять не поняли? В третий раз?
Чел из ветки оракле написал что УСТРАНИЛ ВОЗНИКНОВЕНИЕ ошибки только лишь убрав переменные (состояние).
— он прав?

Сообщение было отредактировано: 14 май 21, 13:16
14 май 21, 13:17    [22322143]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
все любят синьоров которые Самостоятельно решают НЕФОРМАЛИЗОВАННЫЕ задачи

...в ремесленных лавках - да.
В компаниях же, склонных к промышленному программированию, такого самодеятельного "синьора" скорее всего призовут к порядку, в частности - попросят оформить и согласовать проектную документацию, для чего задачу придется формализовать.
14 май 21, 13:18    [22322144]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
booby

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

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

Тогда это НИОКР, опытный образец, шедевр (в средневековье)

andrey_anonymous

...которое за последние десятилетия потихонечку переходит в разряд промышленности...

IMHO утопия. Утопичность которой последними десятилетиями и доказана.

Не дословно, но где-то в 90-х годах Вирт на какой-то из конференции высказался "вот собрались мы тут теоретики от программирования, в течении последних десятилетий разрабатывали/разрабатывали, придумывали/придумывали. А статистика такова, что производительность труда при разработке микросхем (сложность микросхем) возросла в сотни-тысячи раз. А производительность программистов на ... процентов. И нафига мы все это придумывали? И хорошо бы подумать, а толи вообще мы придумывали, что нужно...". Не дословно. Но смысл был примерно такой. Где-то середина/конец 90-х. А "в разряд промышленности" программирование переходит наверное с начала 80-х, а скорее всего и раньше.

Прошло еще пара десятилетий.... а все так же.... переходит

IMHO

p.s. про производительно труда вообще молчу. В 90-ые полноценный учет один человек с нуля за год делал на FoxPro. Сейчас: программист БД, программист бакэнд, программист фронтэнд, аналитик, бизнес консультант, архитектор, менеджер, секретарша менеджера....
14 май 21, 13:18    [22322145]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
>Коллега PetroNotC Sharp, не разобравшись
= отвечу в вашем стиле.
Вам конкртно тоже надо ставить чОткое ТЗ. А то впендюриваете код.... не разобравшись и впопыхах.
14 май 21, 13:21    [22322149]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp

Чел из ветки оракле написал что УСТАНИЛ ВОЗНИКНОВЕНИЕ ошибки только лишь убрав переменные (состояние).
— он прав?

Вы крайне избирательно читаете. Там много всего понаписано.
Давайте я так переформулирую полюбившийся Вам подход: чтобы не получать штрафы за нарушение ПДД, надо перестать ездить на автомобиле.
В принципе, не возражаю - можете пользоваться общественным транспортом.
Но это решение не панацея, поскольку подходит не всем и не всегда.
14 май 21, 13:22    [22322151]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
Вы тут пишите опусы в 10 раз больше.
Учитесь у соседей с бд ветки
14 май 21, 13:25    [22322153]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous
PetroNotC Sharp

Чел из ветки оракле написал что УСТАНИЛ ВОЗНИКНОВЕНИЕ ошибки только лишь убрав переменные (состояние).
— он прав?

Вы крайне избирательно читаете. Там много всего понаписано.
Давайте я так переформулирую полюбившийся Вам подход: чтобы не получать штрафы за нарушение ПДД, надо перестать ездить на автомобиле.
В принципе, не возражаю - можете пользоваться общественным транспортом.
Но это решение не панацея, поскольку подходит не всем и не всегда.

Весь пост со смыслом в последней строке?
Вы решаете в публичном форуме ДАЖЕ НЕ ОЗВУЧИВ РЕШЕНИЕ?
14 май 21, 13:27    [22322155]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous

4068 - не ошибка прикладного кода PL/SQL, а исключение на уровне инфраструктуры.

Спорно. Очень спорно. Так же как и термин "это warning"

Да, это не ошибка прикладного кода. Но и No_Data_Found тоже не ошибка кода. Как и любое исключение БД, оно просто значит, что по каким-то причинам корректный результат получить невозможно.

Можно бороться с последствиями ошибки, можно попытаться устранить причину ошибки. Можно решать программно (добавить логики в прикладной код), можно решать организационно (для 4068 требовать, что бы патчи не накатывались при работающей системе, для No_Data_Found требовать, что бы обязательные для расчета данные не забывали вводить в систему, написать инструкцию, сделать поля обязательными и т.д.)

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

IMHO
14 май 21, 13:28    [22322158]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
PetroNotC Sharp
andrey_anonymous,
У как много написали. Не торопитесь, отвечу.
https://www.sql.ru/forum/900575-a/avtomaticheskaya-perekompilyaciya-pri-obrashhenii-k-paketu-tknite-nosom-v-doku?hl=04068
автор
У нас всё в итоге решилось прокидыванием эксепшена ORA-04068 наружу "до клиента".

До этого как оказалось, он в некоторых местах гасился в обработчиках WHEN OTHERS, что приводило к такой вот хрени как перманентный ORA-06508. Теперь всё работает как часы.

А еще в большей части пакетов вообще удалось отказаться от глобальных переменных.
В итоге теперь накатывание такого тела пакета вообще не приводит ни к каким последствиям типа ORA-04068.

Вот вы также гасите как чел выше

Писать что тут много выше написано это издевательство.
Чел даже конец строки добавил)))))
14 май 21, 13:30    [22322160]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Leonid Kudryavtsev,
У него терминология хромает. Бывает.
14 май 21, 13:31    [22322161]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
booby

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

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

Современные корпорации выпускают тиражируемые решения.
Самый базовый уровень - стандартизованы и промышленно выпускаются инфраструктурные компоненты (ОС, СУБД, App-сервера).
Более-менее освоен промышленный выпуск "станков" (т.н. "платформ" разработки/интеграции) и идет активное становление промышленного производства прикладных систем.

Leonid Kudryavtsev


...А "в разряд промышленности" программирование переходит наверное с начала 80-х, а скорее всего и раньше.
Прошло еще пара десятилетий.... а все так же.... переходит

Ремесленники промышленниками стали далеко не за 30 лет.
Дайте срок.

Leonid Kudryavtsev

Сейчас: программист БД, программист бакэнд, программист фронтэнд, аналитик, бизнес консультант, архитектор, менеджер, секретарша менеджера....

Это как раз признак пром. производства. Узкая специализация и конвейеризация процесса + штат управляющего персонала, ручки не пачкающего.
14 май 21, 13:31    [22322162]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
fixxer
Member

Откуда:
Сообщений: 834
booby

Нельзя получить высшего образования с записью в дипломе "программист".


Как так? А у меня написано :)
14 май 21, 13:32    [22322163]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
andrey_anonymous

4068 - не ошибка прикладного кода PL/SQL, а исключение на уровне инфраструктуры.

Да, это не ошибка прикладного кода. Но и No_Data_Found тоже не ошибка кода. Как и любое исключение БД, оно просто значит, что по каким-то причинам корректный результат получить невозможно.

No_data_found - тоже не ошибка, а исключение.
На этом общность заканчивается, поскольку No_data_found непосредственно связана с серверным кодом и данными, в то время как 4068 и 3113 - с технологическими процессами, от кода не зависящими.
Вся разница в деталях - конкретных причинах, по которым что-то пошло не так, как предполагает основной поток операций.
Если эти причины не разделять и искать столь же общее решение - Вас ждет неизбежный fail.
И да, на проекте виднее.
14 май 21, 13:37    [22322164]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Leonid Kudryavtsev,

No_Data_Found хороший пример. Каждый сам решал что с этим делать))
14 май 21, 13:41    [22322166]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous
Leonid Kudryavtsev
пропущено...

Да, это не ошибка прикладного кода. Но и No_Data_Found тоже не ошибка кода. Как и любое исключение БД, оно просто значит, что по каким-то причинам корректный результат получить невозможно.

No_data_found - тоже не ошибка, а исключение.
На этом общность заканчивается, поскольку No_data_found непосредственно связана с серверным кодом и данными, в то время как 4068 и 3113 - с технологическими процессами, от кода не зависящими.
Вся разница в деталях - конкретных причинах, по которым что-то пошло не так, как предполагает основной поток операций.
Если эти причины не разделять и искать столь же общее решение - Вас ждет неизбежный fail.
И да, на проекте виднее.
да. Только java спецы это бОльшая Общность подходов.
По определению. Работа такая.
14 май 21, 13:44    [22322168]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous

Современные корпорации выпускают тиражируемые решения.

IMHO как я думаю, за точность не отвечаю

Программисты - выпускают опытный образец, release
Тиражируют решения, инсталируют у пользователей, уже совершенно другие люди.
Труда программистов в тиражировании - ноль

Туполев разработал самолет. Результат его работы набор чертежей, описание процесса производста, что-то еще. Но ОДНА штука. Может еще пару опытных образцов собрали - это НИОКР
тиражируемые решения, самолеты - выпускают совсем другие люди. Это промышленность.

andrey_anonymous

и идет активное становление промышленного производства прикладных систем.

На мой взгляд, IMHO, в последние пару десятилетий, процесс который идет в средствах разработки ПО (подфорум Java ))) ), можно назвать и как "активное становление" и как "активная деградация".

Как не парадоксально, оба этих термина полностью подходят. Причем одновременно.

andrey_anonymous

Это как раз признак пром. производства. Узкая специализация и конвейеризация процесса + штат управляющего персонала, ручки не пачкающего.

Да пофиг на признаки.

Результат где? Есть ли заметный рост производительности труда при написании реальных систем?

Заметный - в разы, в десятки раз. Cложность систем увеличилась? Бухгалтерские правила и деятельность бизнеса изменилась не настолько сильно...отчего внезапно сложность программ то увеличилась?

Объем обрабатываемых данных за сложность не стоит выдавать. Тут уж больше коллеги из микроэлектроники помогли.

Вот там да, производительность труда при разработки микросхем выросла на порядки. От чего Вирт в 90-ые и расстраивался. Два связанных направления. Hard, soft. В одном - производительность труда растет на порядки, во втором - проценты....
14 май 21, 13:47    [22322170]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
автор
в то время как 4068 и 3113 - с технологическими процессами, от кода не зависящими.

Мы не хотим привязываться к твое затычке типо повторно постучи дважды)))))
14 май 21, 13:47    [22322171]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
booby
Member

Откуда:
Сообщений: 2534
PetroNotC Sharp
...
Чел может заниматься искусством без шедевров.
...

современным - безусловно, а в несовременном и понятия такого не было - шедевр от ремесленников пришел.
Приколотил гвоздями собственную мошонку к парижской брусчатке - вот тебе и акт искусства.
И тем, более, при наличии тик-тока, ни гвоздей, ни Парижу не требуется.
14 май 21, 14:04    [22322178]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
автор
в то время как 4068 и 3113 - с технологическими процессами, от кода не зависящими.

Мы не хотим привязываться к твое затычке типо повторно постучи дважды)))))


Ок, я не навязываю.
Не хотите реагировать на конкретное исключение так, как предписывает вендор - Ваше право.
Откатывайте транзакции, покупайте сервера и морочьте голову админам.
14 май 21, 14:09    [22322182]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
Про приколотил - опасная тема. Но то, что это был "акт" вряд ли кто будет спорить. Насколько это искусство - думаю это обсуждение можно/нужно оставить потомках )))

С точки зрения актов и искусства, можно взять реальный пример: черный квадрат Малевича. Насколько я помню, в свое время, это был ровно такой же "акт". Мелавич боролся/насмехался над современными ему течениями в живописи. Поэтому на очередную выставку просто взял и вместо картины нарисовал черный квадрат.

Во сколько долларов его бы оценили на современных аукционах живописи - не знаю )))

p.s. не являюсь специалистом по Малевичу, т.ч. лучше читать книжки.
p.p.s. google уверяет:
"Согласно Sotheby's, стоимость картины на сегодняшний день оценивается в 20 миллионов долларов. "Черный квадрат" находится в музее и не продается, но если говорить гипотетически о любой другой картине, то ее оценочная стоимость зависит от многих причин"
14 май 21, 14:15    [22322192]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Цена на предметы исскусства отражает лишь "желание купить".
14 май 21, 14:26    [22322200]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11020
PetroNotC Sharp
Программирование это _пока_ искусство.
Это уже давно ремесло, которое пока не удалось загнать в систему глубокого разделения труда. Т.е. в нормальное промышленное производство.
14 май 21, 14:33    [22322206]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
mayton
Цена на предметы исскусства отражает лишь "желание купить".

У меня дома не очень много, но есть какое-то кол-во макулатуры. Я бы продал. Проблема лишь в "желание купить". Какие-то вырванные страницы из книг с парой слов на полях рукой Достоевского - покупают. А вот на мусор который у меня на работе на столе валяется - желающих нет )))

Более менее был знаком с ситуацией в мире живописцев (на начало 2000-х). Профессия "художник" - есть/была только в одной стране мира. СССР. Во всех остальных странах, такой профессии нет. Как класса. Художник это хобби.

В СССР, да, это была профессия и организация "союз художников", где эти самые художники получали зарплату.

Как я понимаю, в начале XX века тоже такой профессии как художник не было, были лица "свободных профессий"

Могу ошибаться. Лучше смотреть профильную литературу.

p.s. вырванная цитата из инете
"К лицам свободных профессий относят, обыкновенно, учителей, врачей, музыкантов, актеров и инженеров."
(начало XX века)
14 май 21, 14:35    [22322211]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
>Откатывайте транзакции, покупайте сервера и морочьте голову админам.
= все то что вы не приняли как варианты решений надо запугать!)))
Вы так и боитесь назвать эти решения. Ширше смотрите
- PL изменения
- выкинуть пакеты
- рестарт пула
- зеркало и балансировщик 24х7
- тех окно
- клиент умеющий перезагружаться а ля интернет эксплорер
.. Ну и ваше - погасить ошибку молча
14 май 21, 14:36    [22322212]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Basil A. Sidorov,
Ремесло но не удалось загнать в рамки ремесла)
14 май 21, 14:38    [22322215]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Leonid Kudryavtsev
mayton
Цена на предметы исскусства отражает лишь "желание купить".

У меня дома не очень много, но есть какое-то кол-во макулатуры. Я бы продал. Проблема лишь в "желание купить". Какие-то вырванные страницы из книг с парой слов на полях рукой Достоевского - покупают. А вот на мусор который у меня на работе на столе валяется - желающих нет )))

Я был свидетелем того как совершенно бесполезный хлам из старых вещей, будучи выложенным
на аукционы антикваров - был продан за нормальные деньги. Главное правильно опубликовать и дать
аннотацию. Какие-то старые фотки. Значки. Бабушкины облигации гос-займов.

Неплохой фильм был "Бархатная бензопила". Там хорошо показано как в мире современного исскусства
умеют на пустом месте взвинчивать цены.
14 май 21, 14:40    [22322217]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
booby
Member

Откуда:
Сообщений: 2534
Basil A. Sidorov
...Это уже давно ремесло...

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

В современных условиях входные собеседования, с моей точки зрения по ряду оснований не вполне точно соответствуют такой комиссии.
Так что, даже ремеслом оно вполне никогда не было.
14 май 21, 14:41    [22322218]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
Basil A. Sidorov
PetroNotC Sharp
Программирование это _пока_ искусство.
Это уже давно ремесло, которое пока не удалось загнать в систему глубокого разделения труда. Т.е. в нормальное промышленное производство.


Если подходить исторически ))) 22322121

Сначало было ремесло. Ткачи, рисователи портретов
Потом оно разделилось на:
1. Промышленность. Легкая промышленность
2. Мелкие кооператоры ))). Например фотографы
3. Искусство. Церетели и прочие )))

Т.ч. все как раз наоборот. То, что пока программирование "не удалось загнать", вполне может обозначать, что лет через много, оно будет считаться искусством.

Жаль только — жить в эту пору прекрасную. Уж не придется — ни мне, ни тебе ( C )

Сообщение было отредактировано: 14 май 21, 14:36
14 май 21, 14:43    [22322219]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
Ну и не надо забывать, что даже в легкой промышленности есть и прет-а-порте, и фашион )))
14 май 21, 14:47    [22322225]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11020
Leonid Kudryavtsev
Программисты - выпускают опытный образец, release
Тиражируют решения, инсталируют у пользователей, уже совершенно другие люди.
Труда программистов в тиражировании - ноль
Нет, нет и ещё раз нет.
Вы делаете неуместные аналогии, но тиражирование в материальном мире - затратный и неординарный процесс, а тиражирование в программном мире - примитивная операция по копированию байтов. Это слегка утрировано, но суть передана верно.
Программисты автоматизируют тот или иной процесс и вот именно эта автоматизации является их творением. И пользователям, как и везде, плевать на мастерство творца, если в конкретном изделии творец умудрился накосячить. Даже если этот косяк обусловлен внешними по отношению к творцу причинами.
14 май 21, 14:50    [22322228]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11020
Leonid Kudryavtsev
Если подходить исторически ...
... то было совсем не так.
С доисторических времён и до эпохи феодализма действовала специализация.
А потом люди додумались до системы глубокого разделения труда и специализация оказалась вытеснена в узконишевые области.

P.S.
Попался мне как-то документальный фильм BBC на канале "Культура". Как раз на моменте, где рассказывали про некоего "капиталиста" (18-й век или даже раньше), который разделил изготовление булавки на девятнадцать(!) элементарных операций.
И оказалось, что пока девятнадцать мастеров сделают по одной булавке от начала и до конца, девятнадцать рабочих (даже не подмастерьев) "по одному на операцию" - сделают двести двадцать булавок. На порядок больше.
Особо отмечу, что материалы, инструменты и технология - никак не изменились. Изменилась только организация производства.
14 май 21, 15:02    [22322233]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
Вы так и боитесь

Вах баюс-баюс...

Смотрим очередной раз:
- PL изменения - покажите какие надо сделать изменения на примере приведенных тестовых пакетов. Без конкретных предложений совет бесполезен.
- выкинуть - рассматривать надо в комплексе. Включая в скоуп рассмотрения "выкинуть джаву, выкинуть сервер, выкинуть проект, выкинуть сотрудников". Повода для таких "рассмотрений" в настоящее время у меня нет, совет бесполезен.
- рестарт пула - не отвечает требованиям непрерывности сервиса, бесполезен.
- зеркало и балансировщик 24х7 не решает задачу без существенного объема работ по синхронизации "зеркал" , общего увеличения стоимости проекта и увеличения эксплуатационных расходов. Это примерно как экскаватором огородик вскапывать - теоретически можно, но окружающие будут пальцем у виска крутить.
- тех окно - не отвечает требованиям непрерывности сервиса, совет бесполезен
- клиент умеющий перезагружаться а ля интернет эксплорер - не решает задачу, поскольку пробема не у клиента, а у бэка.

Итоговая ценность озвученных Вами предложений в контексте проекта исчезающе мала.

- погасить ошибку молча
Во-первых не молча, а с логированием.
Во-вторых, именно эта исключительная ситуация требует именно такого решения, потому как:
  • если возникновение этой исключительной ситуации связано с проблемным состоянием пакетов БД, то она скрывает за собой реальную проблему, которая вылезет наверх после повторного вызова.
  • если возникновение этой исключительной ситуации связано просто с успешной перекомпиляцией пакетов, то повтор операции позволит просто штатно продолжить работу.
Единственное противопоказание - использование пакетных переменных для передачи состояния между вызовами - вполне разумно при использовании пула соединений. Подобное использование пакетных переменных суть bad design и не применяется на практике в моих проектах ни-ког-да, что делает противопоказание не актуальным.
В третьих, уже разберитесь наконец, чем ошибка отличается от исключения. Это блондинке в бухгалтерии позволительно выражаться в стиле "у меня ошибка вылезает, сделайте что-нибудь".
14 май 21, 15:06    [22322236]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
Basil A. Sidorov
Leonid Kudryavtsev
Программисты - выпускают опытный образец, release
Тиражируют решения, инсталируют у пользователей, уже совершенно другие люди.
Труда программистов в тиражировании - ноль
Нет, нет и ещё раз нет.
Вы делаете неуместные аналогии, но тиражирование в материальном мире - затратный и неординарный процесс, а тиражирование в программном мире - примитивная операция по копированию байтов. Это слегка утрировано, но суть передана верно.
Программисты автоматизируют тот или иной процесс и вот именно эта автоматизации является их творением. И пользователям, как и везде, плевать на мастерство творца, если в конкретном изделии творец умудрился накосячить. Даже если этот косяк обусловлен внешними по отношению к творцу причинами.


Если считать, что ИТ уже является промышленностью /не очень понимаю значение данного слова/. То по аналогии с легкой промышленностью )))

есть пред-а-порте:
Linux, Tomcat, Apache, Europe Universalis IV и так далее

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

+
Все же, швея в фашион, это совсем не тоже самое, что и швея-мотористка в Иваново ))).

Подозреваю, что (википедия о Доминико Дольче):
"Отец Доменико — хозяин ателье, мать — управляющая магазином нижнего белья. Доменико окончил колледж в Палермо и институт Марангони в Милане. В начале 80-х годов был принят на работу в ателье Стефано Габбана..."
он тоже иголку с ниткой в руках держал, но это все же чуть другое, чем
"Стабильная сильная современная фабрика по пошиву детской одежды приглашает на работу швей. Пооперационная работа с трикотажем (невязаным) на деток до 7 лет. Работа у нас - это прекрасная возможность стать частью проверенной современной хорошей компании с достойным доходом! РАБОТАЯ С НАМИ, ВЫ ПОЛУЧАЕТЕ: Своевременную оплату труда от 35 000р;"
ну и результат его работы, тоже стоил чуть побольше, чем продукция данного ООО )))


Но истинна где-то посередине. Не бывает программиста-машиниста. Т.к. ни Юргенс из Броншвейга, ни Джон Уайт в программирование еще не родились.

То, что на форуме называют промышленность, это максимум мануфактура.

Когда ремесленников согнали в один большой сарай и заставили работать под надзором надсмотрщика. Ну еще и качество проверять, что бы продукция более-менее однотипная была.
14 май 21, 15:10    [22322239]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous

...использование пакетных переменных ... при использовании пула соединений. Подобное использование пакетных переменных суть bad design и не применяется на практике в моих проектах...

Если кидаться словами bad design, то тут все же два фактора:
1. bad design это подобное использование пакетных переменных.
2. Но с такой же правомочностью, можно заявить: bad design это использование пула соединений.

Не очень корректная работа с пакетными переменные тут виновата ровно так же, как и не очень корректная работа с пулом.

IMHO

Сообщение было отредактировано: 14 май 21, 15:11
14 май 21, 15:19    [22322250]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
То, что на форуме называют промышленность, это максимум мануфактура.
Когда ремесленников согнали в один большой сарай и заставили работать под надзором надсмотрщика. Ну еще и качество проверять, что бы продукция более-менее однотипная была.

1. Специализация - важный отличительный признак. Её у ремесленников не бывает, даже в сарае. Каждый ремесленник - универсал со склонностью в ту или иную область.
Этот признак в наличии, данный топик тому яркий пример.
2. На базе специализации строится разделение труда.
3. Широкая стандартизация - еще один важный признак, отличающий ремесленное производство от промышленного. "Широкая" - значит, что стандарты вводятся не внутри отдельной мануфактуры, а в во всей отрасли и изделия одной мануфактуры начинают худо-бедно стыковаться с изделиями другой.
4. На базе разделения труда и стандартизации снижается стоимость персонала, он становится легко заменяемым - возникает "рынок труда", где можно искать специалистов по формальным критериям.
Эти признаки в совокупности говорят, что этап повсеместного мануфактурного производства уже закончился, хотя отдельные мануфактуры еще существуют.
14 май 21, 15:20    [22322251]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
Как раз в мануфактуре разделение труда уже появилась.
Но фабрикой она еще НЕ стала.

AFAIK.
14 май 21, 15:21    [22322252]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
Не очень корректная работа с пакетными переменные тут виновата ровно так же, как и не очень корректная работа с пулом.

??? прошу пардону, не уловил глубину мысли.
Использование глобальных переменных для передачи параметров Вы сравниваете с... А с чем, собственно?
14 май 21, 15:23    [22322255]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
Как раз в мануфактуре разделение труда уже появилась.
Но фабрикой она еще НЕ стала.

Отличия можете сформулировать?
Или согласимся на том, что мануфактура - это фабрика в молодости?
Я полагаю, что главное фабричного и промышленного способов производства - в наличии стандартизованного персонала и рынока труда.

Сообщение было отредактировано: 14 май 21, 15:19
14 май 21, 15:26    [22322256]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous,

22321041

Хотя, с точки зрения секьюрети, наверное лучше не при получении, а при отдачи в пул.
14 май 21, 15:26    [22322258]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous
Leonid Kudryavtsev
Как раз в мануфактуре разделение труда уже появилась.
Но фабрикой она еще НЕ стала.

Отличия можете сформулировать?
Или согласимся на том, что мануфактура - это фабрика в молодости?

Нет, это не совсем так. Там какие-то качественные изменения должны происходить.

Нужно читать специальную литературы, смотреть какие качества появились. Возможно читать Карла Маркса ))) /я не читал/. Но явно две эти стадии в историографии разделяются.
14 май 21, 15:28    [22322259]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Basil A. Sidorov,
>Программисты автоматизируют тот или иной процесс
Да но что является ПРЕДМЕТОМ?
Тут тема была на форуме. Как битва титанов "процессный подход..... BPM и иже с ним матерные слова.
Не вышло пока Это автоматизировать.
14 май 21, 15:31    [22322263]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev

22321041
Хотя, с точки зрения секьюрети, наверное лучше не при получении, а при отдачи в пул.

С точки зрения разделения доступа, в самом общем случае, когда с одним пулом работают непонятно кто непонятно как - можно рассмотреть, хоть это и не самый эффективный способ разграничения полномочий.
Но опять не понял - это пример некорректной работы с пулом или где?
14 май 21, 15:32    [22322264]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
Не пишите много.
О том что ошибка решаема в рамках бд сказали на вашей ветке субд.
Готовы с ним поспорить?
14 май 21, 15:34    [22322265]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Leonid Kudryavtsev
andrey_anonymous,

22321041

Хотя, с точки зрения секьюрети, наверное лучше не при получении, а при отдачи в пул.
наверно и обнулить можно. При отдаче. Просто сам же сидящий на длинном коннекте может напороться дважды запросив.
14 май 21, 15:38    [22322269]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
Там какие-то качественные изменения должны происходить.

Из качественных - стандартный дешевый персонал и автоматизация.
Стандартный персонал вместе с рынком труда в наличии, автоматизация средств производства тоже (IDE, системы управления версиями, системы управления требованиями, системы автоматизации выходного контроля (автотесты), ERP).
Есть даже автоматическая доставка новой версии продукта клиенту, чего в классической промышленности нет.
14 май 21, 15:38    [22322270]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous

Ремесленник - ручной труд, но человек сам продает свою продукцию и общается с заказчиком
Мануфактура, рассеянная мануфактура - это тот же ручной труд при работе на широкий рынок. Ремесленник физически перестает общаться с заказчиком (это функции купца, в программирование менеджер по продажам, аналитики)
Фабрика - изобретение станков, механизация труда. Промышленность

Дальше не уверен. скорее всего, как следствие, окончательное разделение труда и капитала. Бывшие сотрудники становятся заменяемым пролетариатом, лишенным орудий труда. Наверное как-то так.
14 май 21, 15:38    [22322271]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
andrey_anonymous,
Не пишите много.

С Вас пример беру. Еще немного поучусь у профи - и смогу не только "писать много", но еще и делать это, не меняя содержания.

PetroNotC Sharp
О том что ошибка решаема в рамках бд сказали на вашей ветке субд.
Готовы с ним поспорить?

Вам показалось, что Вы разобрались в проблеме.
Но Вы заблуждаетесь.
14 май 21, 15:40    [22322273]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous
стандартный дешевый персонал

Утопия.
Зайдите в подфорум "работа". Там по поводу "дешевый" холевара больше, чем у нас по поводу пакетных переменных )))
14 май 21, 15:41    [22322274]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
Фабрика - изобретение станков, механизация труда. Промышленность
Дальше не уверен. скорее всего, как следствие, окончательное разделение труда и капитала. Бывшие сотрудники становятся заменяемым пролетариатом, лишенным орудий труда. Наверное как-то так.

Про станки и механизацию уже выше отписал.
Про заменяемый программисто-пролетариат тоже.
Осталось про орудия труда.
Скажите, а Ваш рабочий набор инструментов (IDE, компиляторы, сервера и рабочая станция) - он кому принадлежит?

Leonid Kudryavtsev
andrey_anonymous
стандартный дешевый персонал

по поводу "дешевый" холевара больше, чем у нас по поводу пакетных переменных )))

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

Сообщение было отредактировано: 14 май 21, 15:38
14 май 21, 15:43    [22322277]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11020
Leonid Kudryavtsev
Ремесленник - ручной труд
Гончар использует круг, мельник - ветер, кузнец - воду. Механизация труда появилась ещё в античности и сама по себе она облегчает труд, но не меняет его качественно - это всё та же специализация, в рамках которой мастер должен знать многое, если не всё. Именно поэтому будущий мастер много лет трудится учеником и подмастерьем, нарабатывая квалификацию, знания и опыт.
"Водораздел" проходит именно по способу организации производства: специализация и глубокое разделение труда - качественно отличаются. Используется при этом механизация или даже автоматизация - дело десятое.
14 май 21, 15:58    [22322288]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Basil A. Sidorov
всё та же специализация, в рамках которой мастер должен знать многое, если не всё.

В дискуссии возникла терминологическая неоднозначность, кмк.
Давайте как-то разделим термин "специализация" применительно к мельнику (который знает все в своей области деятельности) и узкому специалисту по java, никогда не слышавшему про сетевые снифферы и не различающему виды исключений в СУБД, но вынужденному взаимодействовать с узкими специалистами в соответствующих областях в рамках производственного процесса.
14 май 21, 16:05    [22322291]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous
PetroNotC Sharp
andrey_anonymous,
Не пишите много.

С Вас пример беру. Еще немного поучусь у профи - и смогу не только "писать много", но еще и делать это, не меняя содержания.

PetroNotC Sharp
О том что ошибка решаема в рамках бд сказали на вашей ветке субд.
Готовы с ним поспорить?

Вам показалось, что Вы разобрались в проблеме.
Но Вы заблуждаетесь.
балабол)
14 май 21, 16:11    [22322294]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous
Basil A. Sidorov
всё та же специализация, в рамках которой мастер должен знать многое, если не всё.

В дискуссии возникла терминологическая неоднозначность, кмк.
Давайте как-то разделим термин "специализация" применительно к мельнику (который знает все в своей области деятельности) и узкому специалисту по java, никогда не слышавшему про сетевые снифферы и не различающему виды исключений в СУБД, но вынужденному взаимодействовать с узкими специалистами в соответствующих областях в рамках производственного процесса.
вам интереснее про мельников чем про PL.
На ветке оракла эта темы бы давно завершилась.
14 май 21, 16:13    [22322296]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11020
andrey_anonymous
узкому специалисту по java, никогда не слышавшему ...
... что не мешает этому узкому специалисту автоматизировать процессы используя JDBC (базы данных), REST API (сети) и т.д. и т.п.
14 май 21, 16:14    [22322297]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp
На ветке оракла эта темы бы давно завершилась.

Эта ветка уже давно завершилась вполне успешно.
Отголоски исходной темы поддерживает только Ваше балабольство, коллеги же давно переключились на философию.

Basil A. Sidorov
andrey_anonymous
узкому специалисту по java, никогда не слышавшему ...
... что не мешает этому узкому специалисту автоматизировать процессы используя JDBC (базы данных), REST API (сети) и т.д. и т.п.

...с привлечением соответствующих специалистов, что означает разделение труда.
Есть предложения как разделить понятия "специализация" и "узкая специализация" в контексте?
14 май 21, 16:21    [22322305]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
booby
Member

Откуда:
Сообщений: 2534
Basil A. Sidorov
andrey_anonymous
узкому специалисту по java, никогда не слышавшему ...
... что не мешает этому узкому специалисту автоматизировать процессы используя JDBC (базы данных), REST API (сети) и т.д. и т.п.

при условии, что все, что происходит за границами "его системы", где-то там, с другой стороны jdbc - "не его собачье дело".

Вопрос кто на ком стоял или пришивал пуговицы возникает в первую очередь на границах.
Отсюда, в первую очередь и возмущение - ты зачем свои грязные пуговицы в наш чистый дом несёшь?
У нас тут кубки кругом серебряные, а ты со своими деревянными шкафами к нам вперился.

Сообщение было отредактировано: 14 май 21, 16:16
14 май 21, 16:24    [22322307]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11020
booby
Вопрос кто на ком стоял или пришивал пуговицы возникает в первую очередь на границах.
Отсюда, в первую очередь и возмущение - ты зачем свои грязные пуговицы в наш чистый дом несёшь?
У нас тут кубки кругом серебряные, а ты со своими деревянными шкафами к нам вперился.
Ну так это и есть та самая организация производства, которая и отличает специализацию от системы глубокого разделения труда.
"Исторически сложилось", что в программировании организацией производства занимались сами программисты в рамках автоматизации собственного труда. Ну вот и получилось как получилось.
14 май 21, 16:28    [22322311]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
andrey_anonymous,
Не не...))
Про мельников мне не интересно. Это вы сами.
14 май 21, 16:29    [22322313]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
PetroNotC Sharp

Про мельников мне не интересно. Это вы сами.

Ну а мне не интересно про PL, это я тоже сам.
14 май 21, 16:30    [22322315]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11020
andrey_anonymous
...с привлечением соответствующих специалистов, что означает разделение труда.
Есть предложения как разделить понятия "специализация" и "узкая специализация" в контексте?
Нет, нет и ещё раз нет.
Нет ещё в программировании нормального разделения труда - есть попытка объять необъятное, опираясь на средства автоматической генерации кода разной степени удачности или/и паршивости.

Нормальное разделение труда появится тогда, когда разработчик СУБД предоставит каталог запросов или/и хранимых процедур для работы с базой в рамках определённых требований. Другой разработчик "обернёт" элементы этого каталога в условные бины, которые третий разработчик привяжет к узлам рабочего процесса условного сервера приложений, а четвёртый - свяжет (другие) узлы этого процесса с элементами пользовательского интерфейса условного клиента.
"По-моему - так" (ц) Винни-Пух.
14 май 21, 16:43    [22322324]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Basil A. Sidorov
"По-моему - так" (ц) Винни-Пух.

Ну оно примерно так и делается... если, конечно, речь не идет о современной ремесленной мастерской, где один условный студент-ITшник в гордой должности "программистЪ" расширяет кругозор, пытаясь объять от эникея до сложной интеграции и толком не разбираясь ни в чём.
14 май 21, 16:52    [22322327]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
Мануфактура, фабрика - это исторические термины

Между которыми есть качественные различия. Набор и обязательность этих различий, в разных научных школах скорее всего отличается, историки все же гуманитарии

поискал по гуглу ))), но гугл забит ответами на ЕГЭ, которые вызывают только смех )))
https://hist-ege.sdamgia.ru/problem?id=10

нужно или обращаться к научным трудам (Карл Маркс, Струмилин еще кто-то), но они часто толстые и неинтересные (Карла Маркса я не читал, и как-то, желания нет. Хотя разумеется, по данному вопросу его труды наиболее значимы и авторитетны), в общем, дать RTFM в топик, мне тяжело.

Википедия:
https://ru.wikipedia.org/wiki/Промышленная_революция
https://ru.wikipedia.org/wiki/Фабрика

Фабрика (от лат. fabrica — мастерская; завод[1][2]) — промышленное предприятие, основанное на применении машин[3], характеризующееся крупномасштабным производством.

Ни машин, ни крупномасштабного производства в сфере "программирования" нет. Если у кого есть, пусть он напишет, сколько ERP-систем он за сегодня сделал и сдал на склад (заказчику, в прод).

Не строк кода, а нормальных, законченных ERP-систем. Готовых к продаже и эксплуатации.

А если мы говорим о ТЗ, аналитиках.... то это заказные системы. Т.е. именно уровень ремесленика, ну или купца-перекупшика между ремеслиником и заказчиком. Индивидуальный пошив. Никакой работы на рынок, на склад - нет и подавно.

Да, объемы другие. Т.к. размножать копии проще. Но работа самого программиста - чисто ремесленная, дали ТЗ / заказ, написал код, дали новое ТЗ / заказ, написал код.

На фабрике должно быть все наоборот. Написал код, положил на склад, написал код, положил на склад. Приходит аналитик, а ты ему "все уже давно готово, я пока тебя не было, 15 доработок сделал, забирай из подсобки" ))) А ТЗ, если вдруг его аналитик принес, сразу по назначению .... в туалет )))
14 май 21, 17:08    [22322331]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
booby
Member

Откуда:
Сообщений: 2534
Leonid Kudryavtsev,
вместо того, чтобы абстрактно не любить аналитиков, взял бы да воспитал под себя конкретного,
да так,чтобы он за счастье считал именно с тобой работать.


С хорошим аналитиком в паре работать - чистое наслаждение чистого разума.
Главное - "не суетить банан" попусту, или в неправильной последовательности.
14 май 21, 17:21    [22322338]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
IMHO & AFAIK. Краткое изложение истории с древнейших времен до наших дней

1. Ремесленник. Работа чисто на заказ. Пришел заказчик, дал денег, сделали заказ. Рынок отсутвует или его очень мало.
2. Появляется рынок. Становится возможность массово сбывать результат своего труда. Более-менее понятны типовые виды продукции (булавки ))) ). Становится возможным ряд продукции изготовлять заранее и позже продавать. Появляются специализированные купцы-перекупшики. Когда они становятся богатыми ))) и рынок сбыта еще больше растет, они уже сами начинают устраивать мануфактуры. Закупать сырье, решать, что же производить, нанимают ремесленников, те им делают, сдают им продукцию, купцы продают (на рынке, в лавках).
Ремесленики могут работать или у себя дома (на удаленке) или в сарае-мануфактуре (в офисе). Могут работать или полный рабочий день на мануфактуре и не иметь других средств к существованию, или могут совмешать занятия ремеслом с работой на одного или несколько купцов-перекупщиков (фри лансеры).
Купцы могут работать на свой страх и риск на склад/рынок, или просто быть посредниками и брать заказы у клиентов и передавать их ремесленикам.
Многие из купцов бывшие разбогатевшие ремесленники.
Специализация расцветает как на дрожжах. Адам Смит пишет свою книжку. Но до фабрик еще далеко.
3. Появляются машины. Возникает крупносерийное, стандартное производство. Рабочие становятся более-менее заменяемые и полностью лишенные средств производства. Ремесленники преврашаются в пролитариат.
Техника развивается. Производительность труда растет быстрыми темпами. Промышленная революция.
В ряде стран происходят буржуазные революцие, наступает капитализм. Отсталые крепостные крестьяни им завидуют.
Карл Маркс пишет свою книжку.
3.1. Форд изобретает конвеер
3.2. Тайота изобретает канбан
Но несмотря на еще большее углубление специализации, фабрика остается фабрикой, а капитализм капитализмом.
4. В отдельно взятой группе стран появляется социализм. Весь остальной отсталый мир нам завидует
5. Наконец появляется Россия. Вот-вот появится "новый уклад". Когда все будут жить по совести и скрепно, а высокие технологии будут переть как на дрожжах. И весь остальной отсталый мир будет нам завидовать.
+



(проверить ссылку не могу, возможно не та)

IMHO Вот п. 3 в программирование нет и подавно. А п. 5, по определнию есть только в одной стране, в избранных фирмах, обычно работающих на тендерах и госзаказах.
14 май 21, 17:42    [22322351]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
booby
чтобы абстрактно не любить аналитиков

я абстрактно не люблю абстрактных аналитиков

а конкретных, если девочка, да еще и симпатичная - почему бы ее и не любить )))
14 май 21, 17:45    [22322352]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
IMHO Вот п. 3 в программирование нет и подавно.

Вот не могу согласиться.
Современные программисты преимущественно производят стандартный продукт стандартными способами из стандартных компонентов, применяя глубокое разделение труда.
При этом личная квалификация типового программиста достаточно низка, поскольку сложность создаваемого продукта скрыта от его сознания за интерфейсами стандартных компонент.
+
Иллюстрация: коллега пишет сервис по загрузке некоторого объема данных.
Сервис проваливает performance-тесты.
Анализ показывает, что загрузка данных производится row-by-row.
Объясняю, что такое пакетные операции с БД.
Внимает, что-то правит.
Трасса сессии показывает, что ничегошеньки не поменялось, один server call - одна строка.
Пояснения: "ну я же указал библиотеке, что надо делать batch, а как она это делает - не мое дело"
Предложения изучить потроха библиотеки на предмет правильной организации передачи данных, равно как переписать на JDBC понимания не находят.
...Да, джава. Да, решили. И нет, не уволили - сам уволился, нашел, наверное, более спокойную работу.

Что до массового производства - то любая аналогия имеет пределы.
Смысл не в отгрузке 100 ERP на склад, а в стандартизации, автоматизации и организации труда.
Оценивать же продукцию программиста "по валу" можно, к примеру, в количестве требований к системе, удовлетворенных посредством его доработок, взвешенных плановой трудоемкостью и коэффициентом сложности :)

...ну и по п.1 тоже замечание. Ремесленник как явление невозможен до появления рынка - с голоду умрёт.
14 май 21, 18:04    [22322357]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous

...ну и по п.1 тоже замечание. Ремесленник как явление невозможен до появления рынка - с голоду умрёт.

IMHO тут вопрос яйца и курицы. Толи рынок появился раньше ремесленника, толи ремесленник раньше рынка.

Работает на заказ. Даже возможно и без денег, по бартер. А если еще и на давальчиском сырье.... занафига рынок?
Вот тебе кожа (сырье), вот тебе курица за работу - сделай мне сапоги.

В начале 90-х так и работали, на давальческих компьютерах. Клиент давал заказ (напишите мне прогу для бухгалтерии), покупал компьютер, платил за работу... через год забирал компьютер с системой.

Тут важно, что сначала заказ (ТЗ) - потом результат работы, а не наоборот

Когда наоборот (сначала сделали работу, потом нашли покупателя) начинает превалировать - это уже переход от п.1 к п.2. Начальное накопление капитала. Когда начальный капитал накапливается, можно уже самим не работать, а отдавать заказы другим ремесленикам, переходить в разряд купцов.

Когда ИИ или Алиса научится писать программы и труд программиста будет заключаться "яндекс-Алиса, а сделай мне вот такую программу...." вот тогда можно будет говорить об машинном способе производства и программисты станут полноценными пролетариями, т.к. любой роспотребнадзор их завсегда доступа к средствам производства лишить сможет )))
14 май 21, 18:28    [22322368]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous

а в стандартизации

Дык о чем и я, нет стандартизации на результат работы программиста.

Заказ, обследование, разработка, внедрение.

Где тут стандартизация? Была бы хоть какая-то стандартизация или хоть какое-то представление о том, что нужно пользователю, то тогда можно было бы заменить "получили ТЗ, сделали по ТЗ" на "изготовили, продали в лавке".

Но такое возможно лишь в очень ограниченной сфере IT. Например типовые компьютерные игры. Только это и программированием называть перестали - гейм дизайн и прочие термины. Насколько я понимаю (ни разу не видел): взял специализированный движок, создал игровой мир - и вот он, новый шутер готов. Можно продавать.

Но в программирование этого нет. От слова совсем. Пока что у нас ТЗ - сделали по ТЗ. Это именно ручной труд, ремесло.

p.s. про паттерны не буду, есть паттерны/нет паттернов мне кажется особой роли это пока не играет.
Паттерн "бухгалтерская программа" еще не изобрели. А если и изобретут (1C), то смысла заранее делать 100500 различных бухгалтерий на продажу в лавке - нет никакой, "В нашем магазине большой выбор разнообразных 1с разных расцветок, хотите синенькие, хотите красненькие... подходи, не скупись, раскупай бухгалтерись" ?
Чуть сложнее, чем разнообразные скины (цвет буковок) для приложения - уже все, стандартизация не работает
14 май 21, 18:43    [22322373]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
+
В начале 2000-х, слышал о дизайнере который устроился в западную фирму которая делает компьютерные игры. Зарплату стал получать очень приличную, но он жаловался, что скучно.

Фирма делала гонки, его работа была рисовать номера для машинок. Даже не машинки, а номера для машинок! 8 часов в сутки, 5 дней в неделю.

Творческая профессия дизайнер продалась за деньги ))) и стала высокооплачиваемым пролетариатом. В программирование (как я понимаю это слово), слава богу, до этого еще далеко. Хотя ряд технологий начинают требовать не программистов, а черти кого (кодеров, операторов клавиатуры) занимающихся тупой и мало осмысленной работой.

Как пример: в системе Oracle CC&B был/есть такой термин как copy book. Их было много и их тоже, зачем-то, набивали руками... манильцы, за 300 долларов в месяц. Копибуки были на java.

Весь смысл Copy Book'а: есть Object в Java, есть Record в Cobol. Они почти всегда совпадают. Copy book - код который каждое поле из Object'а Java перекладывает в соответствующее (одноименное) поле в Record Cobol'а. Объектов и соответсвенно copy book'ов сотни.

Назвать набивателя текста copy book'ов программистом... мне как-то сложно, хоть и Java. Скорее сочувствую тем, кто вынужден этим заниматься ради денег. И недоумение, почему в фирме CC&B не нашлось ни одного программиста, который бы сделал автоматический генератор текста copy-book'ов. IMHO скорее всего, труд пары десятков манильцев в тот момент был дешевле, чем пара дней "подумать" архитектора нетрадиционной ориентации с западного побережья.

IMHO Эта специализация от программирования крайне далека. Так же как директор фирмы и секретарша, которая за него приказы печатает. Хотя вроде одной работой занимаются, приказы делают, "но есть нюанс"
14 май 21, 19:11    [22322381]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
andrey_anonymous

...ну и по п.1 тоже замечание. Ремесленник как явление невозможен до появления рынка - с голоду умрёт.

IMHO тут вопрос яйца и курицы.

Нет тут никакой неопределенности.
В отсутствие рынка, дающего стабильный спрос, индивид должен ежедневно добывать еду "из первоисточника" - т.е. охотиться или растить, изготавливая инструменты самолично или сообща с соплеменниками.
Выделиться из охотников/скотоводов/пахарей в кузнецы/мельники возможно только при наличии стабильного спроса на услуги. К примеру, если плуг служит условных 10 лет и обслуживает 3 двора, а для кормления одной семьи кузнеца в течение года требуется реализация 10-и плугов (дорого, да), то "постоянная клиентура" должна составлять не менее 300 платёжеспособных хозяйств в расчете на одного кузнеца.
А это уже рынок.


Leonid Kudryavtsev
andrey_anonymous

а в стандартизации

Но в программирование этого нет. От слова совсем. Пока что у нас ТЗ - сделали по ТЗ. Это именно ручной труд, ремесло.

Я вот когда после школы токарем на заводе работал, было так: выдали чертёж - сделал по чертежу. Именно "ручной труд", маховики-то руками жеж крутил... :)
Но чертежи по ГОСТ, допуски-посадки тоже по ГОСТ, сталь предписанной марки, резцы и расходники в инструменталке, выходной контроль стандартными измерительными скобами/пробками и поверенным микрометром на ГОСТированной плите.
Технологическую карту вот только ни разу не видел - всё сам, всё сам...
Теперь-то, конечно, Вы мне глаза приподоткрыли, я понял, не было в стране промышленности никогда - одни ремесленники и мануфактуры...
Иехх, а ыщщо мануфактуру-то эту заводом называли, электромеханическим, орденов там разных имении прочее... Обманщики, вот!
14 май 21, 19:17    [22322383]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev
IMHO скорее всего, труд пары десятков манильцев в тот момент был дешевле, чем пара дней "подумать" архитектора нетрадиционной ориентации с западного побережья.

Если посадить одного индуса, который за неделю наспагеттит генератор копибуков, то 20 манильцев потеряют работу и от безысходности пойдут грабить того самого индуса... Ну или того, кто окажется в пределах досягаемости.
14 май 21, 19:23    [22322386]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11020
andrey_anonymous
Ну оно примерно так и делается...
Вообще не так.
SQL-запросы генерирует ORM, который проявляет неестественный интеллект, опираясь только на схему и объявленные программистом связи между объектами этой схемы. Код для REST генерирует другой DSL на основе объявлений, которые тоже делает программист. Который, в обоих случаях, не совсем или совсем не копенгаген в каждой из предметных (под)областей.

P.S.
Да, есть всяческие Native Query или условный вадя, умеющий сервлеты, но до настоящего промышленного разделения труда ИТ-индустрии ещё далеко. Сейчас это уровень средневековой гильдии с кривыми попытками построить промышленные гиганты.
14 май 21, 19:32    [22322390]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Basil A. Sidorov
andrey_anonymous
Ну оно примерно так и делается...
Вообще не так.
SQL-запросы генерирует ORM

У нас мухи отдельно - котлеты отдельно, ибо на типовой SQL-код что от кодогенератора, что от java-программиста без слёз смотреть невозможно.
14 май 21, 19:43    [22322394]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11020
Leonid Kudryavtsev
1. Ремесленник. Работа чисто на заказ. Пришел заказчик, дал денег, сделали заказ. Рынок отсутвует или его очень мало.
Неправда. Рынок не просто существует - он жёстко зарегулирован. В понятной и разлекательной форме это изложено у Самуэля Клеменса (псевдоним - Марк Твен) в повести "Янки при дворе короля Артура".
2. Появляется рынок.
Рынок не появляется - рынок реорганизовывается. Тут и монетизация экономики за счёт серебра испанских колоний и накопление первоначального капитала за счёт индийских крестьян и рабов из Африки. Поток ресурсов из колоний позволяет организовывать в метрополии максимально прибыльные бизнесы.
3. Появляются машины.
Машины приводимые в движение тягловым скотом, ветром и водой существовали с античных времён.
Хайтек промышленной революции (паровые машины) появился после прочного становления капитализма, как ответ на запрос уже существовавшего промышленного производства. Энергия пара не создала "крупносерийное, стандартное производство", а предоставила новые возможности для развития уже имеющегося.
Т.е. сначала увеличение производительности и развитие экономики, а уже потом - всякие изобретения, которые дают преимущество на пока ещё конкуретном рынке.
5. Наконец появляется Россия. Вот-вот появится "новый уклад".
Этот пассаж - вообще непонятен.
IMHO Вот п. 3 в программирование нет и подавно.
А что, простите, представляют из себя "средства разработки", "инфраструктура как код" и весь прочий хайп, как не "велосипеды для ума" (ц) Стив Джобс?
А п. 5, по определнию есть только в одной стране, в избранных фирмах, обычно работающих на тендерах и госзаказах.
Очень странный пассаж ...
Госзаказ (в любой стране) - лакомый кусок и стабильный источник дохода.
Другой вопрос, что государство в каждой стране одно и "на всех нищебродов" его не напасёшься. Поэтому, разумеется, "только самые эффективные и предприимчивые" могут пробиться к кормушке. Ну а "остальные неудачники", как водится, ноют о коррупции и неправильном капитализме.

P.S.
В конце, если кто-то не догадался - сарказм и мелкое ёрничество.
14 май 21, 19:57    [22322399]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
andrey_anonymous

Нет тут никакой неопределенности.
В отсутствие рынка, дающего стабильный спрос, индивид должен ежедневно добывать еду "из первоисточника" - т.е. охотиться или растить, изготавливая инструменты самолично или сообща с соплеменниками.
Выделиться из охотников/скотоводов/пахарей в кузнецы/мельники возможно только при наличии стабильного спроса на услуги. К примеру, если плуг служит условных 10 лет и обслуживает 3 двора, а для кормления одной семьи кузнеца в течение года требуется реализация 10-и плугов (дорого, да), то "постоянная клиентура" должна составлять не менее 300 платёжеспособных хозяйств в расчете на одного кузнеца.
А это уже рынок.

1. говорить о рынке, применительно к разделению труда и изготовлению инструментов для соплеменников (родственников) - это перебор.

Соплеменник (да еще с руками, умеющий делать нужные для племени вещи) умереть от голода никак не мог, пока в племени был хоть один охотник, который может охотиться. Соплеменники - это семья, возможно даже больше, чем современная семья. Из современной семьи можно уйти, развестись, а из племени фиг куда уйдешь, только в другом мир

2. Нет, никакой рынок не нужен.

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

Пример того, как ремесло может быть совершенно полностью оторвано от рынка. Ремесло есть, рынка нет.

Подозреваю, очень многие виды ремесла изначально возникали исключительно из культовых/религиозных потребностей. Т.е. от рынка были оторваны чуть больше, чем полностью.

3. Что бы был "платежноспособный спрос", должны быть деньги. Они появились значительно позднее чем и разделения труда, и ремесло, и возникновение городов/государство.

AFAIK

andrey_anonymous

Leonid Kudryavtsev
пропущено...
Но в программирование этого нет. От слова совсем. Пока что у нас ТЗ - сделали по ТЗ. Это именно ручной труд, ремесло.

Я вот когда после школы токарем на заводе работал, было так: выдали чертёж - сделал по чертежу. Именно "ручной труд", маховики-то руками жеж крутил... :)
Но чертежи по ГОСТ, допуски-посадки тоже по ГОСТ, сталь предписанной марки, резцы и расходники в инструменталке, выходной контроль стандартными измерительными скобами/пробками и поверенным микрометром на ГОСТированной плите.
Технологическую карту вот только ни разу не видел - всё сам, всё сам...
Теперь-то, конечно, Вы мне глаза приподоткрыли, я понял, не было в стране промышленности никогда - одни ремесленники и мануфактуры...
Иехх, а ыщщо мануфактуру-то эту заводом называли, электромеханическим, орденов там разных имении прочее... Обманщики, вот!

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

Если таким был ВЕСЬ завод, то тогда спасибо, что Вы мне приподоткрыли глаза ))), а то я до сих пор понять не мог, почему СССР развалился и получилось то, что мы имеем сейчас.

Кустарное и мелко-серийное производство, в какой-то мере то же самое ремесло (хоть и на современном техническом уровне) IMHO

Ну и те стандарты, о которых Вы говорите, AFAIK называется "взаимозаменяемость деталей". Вещь нужная, но к мануфактурам/фабрикам достаточно перпендекулярная.

example: Например в первую мировую войну, российская приемка жаловалась, что американские заводы (!) не могут освоить взаимозаменяемость деталей для ружей по русским заказам и нужно выполнять подгонку деталей при сборке. Вроде и фабрики есть (США, 1917 год), а "взаимозаменяемость деталей" не смогли.

Basil A. Sidorov

Leonid Kudryavtsev
1. Ремесленник. Работа чисто на заказ. Пришел заказчик, дал денег, сделали заказ. Рынок отсутвует или его очень мало.
Неправда. Рынок не просто существует - он жёстко зарегулирован. В понятной и разлекательной форме это изложено у Самуэля Клеменса (псевдоним - Марк Твен) в повести "Янки при дворе короля Артура".

Не читал (хотя вроде кино смотрел)

Жестко зарегулированный рынок - это уже вроде и не особо рынок.

Ну и см. выше. Ремесленнику в мастерской при дворе фараона - рынок не нужен. Хоть свободный, хоть зарегулированный. Если фараон часть произведенных вещей отсылает своим рабам/подданным, это не рынок. Это производственная необходимость (если на каменоломни медный инструмент не послать - каменотесы справлятся не будут - пирамиду/гробницу вовремя не построят).

В России, примерно то же самое, до XVII века. Беломостцы vs Посадские люди (тяглое население).

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

Basil A. Sidorov

Этот пассаж - вообще непонятен.

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

Basil A. Sidorov

А что, простите, представляют из себя "средства разработки", "инфраструктура как код" и весь прочий хайп, как не "велосипеды для ума" (ц) Стив Джобс?

Удобные (или не очень удобные) инструменты для работы ремесленика.
Пока в отрасли не будет заметного (в разы, лучше в десятки/сотни раз) роста производительности труда - просто хайп.
14 май 21, 21:00    [22322418]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 11020
Leonid Kudryavtsev
Не читал (хотя вроде кино смотрел)
Кино - мерзкая поделка, никак не связанная ни с юмором, ни даже с идей книги.
15 май 21, 00:39    [22322457]     Ответить | Цитировать Сообщить модератору
 Re: Mybatis vs Ora-04068  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 19232
Leonid Kudryavtsev, дико извиняюсь, но, как мне представляется, Ваши рассуждеия относительно промпроизводства построены исключительно на абстрактных представлениях о таковом.
По крайней мере теперь мне стала понятна природа взаимонепонимания по этому вопросу.
15 май 21, 18:09    [22322569]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3 4 5 6 7 8 9 10 11      [все]
Все форумы / Java Ответить