|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Когллеги, подскажите плиз, какие существуют варианты воткнуть обработку oracle exception ORA-04068 в приложении, использующем MyBatis? Обработка ora-4068, понятно, заключается в повторе вызвавшей сбой операции. Наши джависты вменяемого решения предложить отчего-то не в состоянии - предлагают чуть ли не все вызовы в проекте catch-ами обвешивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 13:29 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
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.05.2021, 13:50 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Ну и вообще-то, если залезть в доку 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.05.2021, 13:56 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
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.05.2021, 14:05 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous Вопрос - куда можно включиться в этом самом батике. Если я правильно понимаю доку, класс для SqlSessionFactory должен задаваться в конфигах. Делаете свою реализацию. Дальше переопределяете/наследуете SqlSession, переопределяете 7 методов для выполнения SQL команд. с MyBatis не работал. Сужу по доке и общей логике "паттерна Factory" ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 14:14 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous Отсутствие invalid package не отменяет warning ora-4068. Я вообще очень редко вижу ora-4068. Обычно ситуации invalid state of package у меня приводят к 6508. Если при накате патчей в базе никого не было (после патча все переподключились) и не было invalid package, то ora-4068 IMHO взятся не откуда. А результат работы и переповторов в процессе наката - все равно не предсказуемо. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 14:19 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev andrey_anonymous Отсутствие invalid package не отменяет warning ora-4068. Я вообще очень редко вижу ora-4068. Накат пакета без остановки приложения (отключения пула коннектов) приводит к 4068 по всем живым сессиям пула, в рамках которых ранее дергался пакет, при обращении к пакету или зависимым от него объектам. За наводку спасибо, парни бодро тыкают мышками, стучат кнопками и размышляют о переопределении defaultSqlSession и executor. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 14:40 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, Он же верно написал. Не надо допускать таких ситуаций. У вас состояние в сессии. Вы сменили хранимку не отключив клиента. Вы гарантируете что банковская транзакция не сломается? Я бы лечил переконнектом. С откатом текущих. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 14:57 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Вы гарантируете что банковская транзакция не сломается? Гарантирую. Сейчас вообще в моде девопс и накат изменений без перерыва сервиса. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 14:58 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Я верно понимаю ситуацию: если у нас есть пакет и мы его обновляем, то все соединения которые его когда-либо использовали, больше не могут его использовать? В такой ситуации кажется что правильней делать версионирование этих пакетов. Т.е. создавать пакет с именем blah2 с обновленной логикой, затем в след релизе наш Java код переходит на новую версию. И после релиза можно удалять прежнюю версию blah1. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:04 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Я верно понимаю ситуацию: если у нас есть пакет и мы его обновляем, то все соединения которые его когда-либо использовали, больше не могут его использовать? Нет. При обновлении пакета сбрасываются переменные определенные в этом пакете (что логично). Соответственно при первом вызове данного пакета в уже существующей сессии, система сообщает, что состояние (переменные) пакета стали некорректны. Логично, что после обновления части софта (базы), желательно софт перезапустить или как минимум переконектится. Но как я понимаю, у топик стартера проблема еще осложняется пуллом коннектов. Мне кажется, что в системах 24x7 должен быть прописан/продуман регламент обновлений и, соответственно, действий после наката обновлений. Решать можно по разному. Подход топик стартера (тупо повторять запросы), костыльный, но вполне вероятно что в его ситуации и работающий. В "общем" он не работает или, как минимум, может работать не корректно. Т.к. повтор SQL команды, не является корректным повтором бизнес операции (бизнес операция может содержать много SQL команд обращающихся ко многим пакетам). IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:15 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Я верно понимаю ситуацию: если у нас есть пакет и мы его обновляем, то все соединения которые его когда-либо использовали, больше не могут его использовать? Не совсем. Это оракловый exception класса "warning", типовая правильная реакция - простой retry операции за исключением весьма специфических случаев, когда состояние пакета явно инициализируется отдельным вызовом. Предметом обсуждения является не сам exception (если нужны детальные пояснения по ORA-04068, то не проблема, хотя тут оффтопик - лучше идти в оракловую ветку). Предметом обсуждения является "как правильно перехватить и обработать driver-specific exception в ситуации, когда предполагается некая общая реакция для всего приложения". Про различные варианты наката обновлений на прод я и сам могу целую портянку расписать - опыт достаточно богатый. Но - повторюсь - предметом обсуждения является java, MyBatis и точка между батисом и Oracle Jdbc Driver, куда можно культурно врезаться с моей хотелкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:18 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev В "общем" он не работает или, как минимум, может работать не корректно. "Может работать некорректно" - применительно к приложению, работающему через пул коннектов, это будет очень необычный серверный код. Ну или приложение будет неработоспособно на пуле by design. Больше скажу - как ораклист я наверняка порекомендую коллегам, разработавшим такую систему, альтернативные решения, более подходящие для работы с пулом. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:25 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous .... Но - повторюсь - предметом обсуждения является ... точка между батисом и Oracle Jdbc Driver, куда можно культурно врезаться с моей хотелкой. Откровенно говоря, у меня явный когнитивный диссонанс. Автором кристально ясно сформулированна проблема, и им же дан ответ: вариант реализации уже рассмотрели, нашли неудобным в плане эксплуатации/поддержки Даже интересно, что же будет дальше... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:27 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous ...класса "warning"... Можно ссылку на доку с разделением exception на error и warning? ))) Мне кажется, это какой-то вновь придуманный термин. Такое изобретение видел только в Oracle CC&B и жутко на него плевался (т.к. IMHO это бред, прикладные warning'и обрабатывать через exception). В данном случае, это вполне нормальная ошибка. Состояние пакетов поменялось, результат работы (в общем случае) непредсказуем. Если проблема из-за пула коннектов, то наверное проблема в некоректной инициализации коннекта после получения из пула. Почти все пулы, могут настраивать SQL команду, которую нужно дернуть при получении/проверки коннекта на валидность. Наверное можно делать PL/SQL ф-цию Init, которая дернет все пакеты с состояними (переменными) и обнулят данные состояния (переменные), что бы данные между соединениями не утекали (что плохо и с точки зрения секьюрети) в соседние сессии. В общем, мне все же кажется, что проблема не только в коде, но и логическая / организационная. В общем, прежде чем кодировать, "подумать надо" ( C ) IMHO p.s. на одной из пред. работ, программисту прилетел официальный выговор от директора, из-за того, что он написал консультанту/архитектору, что перед тем как делать задачу, хорошо бы "подумать". Выговор был, что архитектор знает свою должностную инструкцию и что ему делать. На что пришли к выводу, что в должностной инструкции на позицию архитектора, пункт "думать" забыли прописать или явно написали "на работе думать запрещается" ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:30 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby Даже интересно, что же будет дальше... Текущий статус: andrey_anonymous парни бодро тыкают мышками, стучат кнопками и размышляют о переопределении defaultSqlSession и executor. Однако Леонид четко обозначил, что с батисом не работал. Возможно, в батисе есть подходящее технологическое отверстие и кто-либо из коллег о нем знает/подскажет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:32 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev у топик стартера проблема еще осложняется пуллом коннектов Вообще если вызовы не очень частые, то можно полукостыльное решение: сдувать быстро пул до нулевого размера. Это в общем виде конечно не очень, но при редких вызовах скорее всего быстро решит проблему. В общем виде это только обвешиваться catch-ами. Если не хочется писать их везде, то можно написать свои aspect и навешать на дао-методы. Пишут, что в mybatis есть свои interceptor, но тут надо смотреть применимы ли они в этом случае - смотреть надо ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:34 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous Leonid Kudryavtsev В "общем" он не работает или, как минимум, может работать не корректно. "Может работать некорректно" - применительно к приложению, работающему через пул коннектов, это будет очень необычный серверный код.... Совершенно нормальный серверный код. Пример выше привел. Сначала выполняем инициализацию, потом какие-то действия (возможно много и долго) где данные (состояние) установленные этой инициализацией используются. Бизнес операция одна - SQL команд много. Ошибка может возникнуть на любой SQL команде. Правильный повтор - откатить и повторить всю бизнес операцию . Повтор ОДНОЙ SQL команды, в общем случае, является не корректным. В большинстве систем, которые я видел и где использовалось состояние пакектов, бизнес операция очень редко бывает только одной SQL командной. Ради того, что бы передавать данные между разными SQL командами пакетные переменные (состояние) и используют. IMHO & AFAIK Если у Вас бизнес операция == одна команда (процедура, анонимный блок). То повтор наверное будет корректным решением. IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:36 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, а в должностную инструкцию программиста, видимо забыли вписать наказание за оскорбление вышестоящих руководителей указанием на их недостаточные умственные способности. Самому программисту думать не положено. Пока он думает, он не пишет код, то есть попусту тратит время. Программист должен быть наказуем за любую попытку самостоятельно думать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:36 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby Leonid Kudryavtsev, а в должностную инструкцию программиста, видимо забыли вписать наказание за оскорбление вышестоящих руководителей указанием на их недостаточные умственные способности. Консультанты не являлись вышестоящими руководителями. Т.ч. пошли нафиг. Мало того, общепризнанный (начальством) умственный уровень "среднего" консультанта, общепризнанно был меньше, того же среднего уровня программистов. Т.к. огромная часть консультантов неделю назад институт закончила. Но если у Вас на задачу в Jira "убиться ап стенку", "выпрыгнуть из окна", все программисты дружно начинают ее выполнять - можно только поздравить, отдел HR работает качественно )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:41 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous , ок, понятно. Т.е. в принципе как сделать правильно известно, требуется именно хак. Тогда поддержу SpringMan 'a: вместо решения на уровне MyBatis повтор операции можно легко сделать с помощью AOP. Ну а если таких мест мало, то можно с помощью RetryTemplate вставить повтор операции. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:44 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
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.05.2021, 15:45 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev IMHO это бред, прикладные warning'и обрабатывать через exception Оракель слишком древний мамонт, чтобы сделать как-то иначе. Leonid Kudryavtsev В данном случае, это вполне нормальная ошибка. Состояние пакетов поменялось, результат работы (в общем случае) непредсказуем. Я -зачеркнуто- прихожу в изумление, когда любой exception называют ошибкой. С точки зрения вендора случай действительно "общий", и логика генерации исключительной ситуации в данном случае понятна. Но приложение - это всегда частность, и данную исключительную ситуацию надо просто корректно отработать. В данном конкретном случае никакой неопределенности нет и хочется сделать это, не раскидывая по коду ненужные catch. Leonid Kudryavtsev Если проблема из-за пула коннектов, то наверное проблема в некоректной инициализации коннекта после получения из пула. Почти все пулы, могут настраивать SQL команду, которую нужно дернуть при получении/проверки коннекта на валидность. ... Наверное можно делать PL/SQL ф-цию Init эээ... Правильно ли я Вас понял: - когда приложение желает выполнить любой statement (условный "select systimestamp from dual"), оно предварительно должно дернуть специальный метод init, который методами динамического sql (иначе сам вылетит по зависимостям) будет дергать все пакеты, чтобы приложению не пришлось обрабатывать хорошо известный exception? Базист во мне возмущён, традиционно ругается на "этих безумных джавистов" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:48 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev andrey_anonymous , ок, понятно. Т.е. в принципе как сделать правильно известно, требуется именно хак. Тогда поддержу SpringMan 'a: вместо решения на уровне MyBatis повтор операции можно легко сделать с помощью AOP. Ну а если таких мест мало, то можно с помощью RetryTemplate вставить повтор операции. Коллеги, буду признателен за ссылки, где можно ознакомиться с указанными заклинаниями. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:51 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous эээ... Правильно ли я Вас понял: - когда приложение желает выполнить любой statement.... Нет. Когда приложение желает получить чужую DB-сессию из пула, оно должно обнулить состояние - что логично. Например DBMS_SESSION.RESET_PACKAGE Большинство пулов соединений, которые видел, в настройках позволяли указывать код для инициализации сессии (при получении из пула) и код для проверки валидности сессии (она могла быть закрыта со стороны сервера). Сам с такой проблемой не сталкивался. Т.ч. DBMS_SESSION.RESET_PACKAGE не использовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:54 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Ради того, что бы передавать данные между разными SQL командами пакетные переменные (состояние) и используют. IMHO & AFAIK Похоже, Вам очень не повезло с системами. Передавать состояние транзакции от вызова к вызову внетранзакционными механизмами (а состояние пакета НЕ транзакционно) - крайне плохой дизайн. Не говорю уже, что в случае пула следующий вызов может прилететь вообще в другую сессию. Состояния пакетов используют совершенно иначе. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:55 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymousКоллеги, буду признателен за ссылки, где можно ознакомиться с указанными заклинаниями. Вот что-то первое попавшееся по Spring AOP . По сути мы говорим что все нужные классы оборачиваются доп логикой (аспектом). Весь остальной код не знает что это вообще происходит, т.е. менять в коде приложения ничего не надо. Правда это очень неявная логика, т.е. если не знаешь что кто-то так настроил, то не всегда догадаешься что что-то такое происходит. А с RetryTemplate мы в конкретном месте кода можем написать "повтори это N раз пока не получится". Вот даже в новом Spring'e такие штуки аннотациями можно настраивать . andrey_anonymousПередавать состояние транзакции от вызова к вызову внетранзакционными механизмами (а состояние пакета НЕ транзакционно) - крайне плохой дизайн. Не говорю уже, что в случае пула следующий вызов может прилететь вообще в другую сессию.Обычно такого не может произойти потому как мы используем одно БД соединение на обработку всего HTTP запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:56 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Когда приложение желает получить чужую DB-сессию из пула, оно должно обнулить состояние - что логично. Вы сами выше писали про пункты должностной инструкции. Попробуйте мысленно представить воплощение своего предложение на более-менее нагруженной системе и оценить время реакции DBA на новый выверт разработчика. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:58 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev По сути Премного благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 15:59 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
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.05.2021, 16:00 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, Вам уже сказали. Длинная транзакция. Первый запрос ставит состояние в хранимке. Второй запрос переводит деньги. Вклиниваться нельзя. И повторять команду 1 или 2 после райзе тоже нельзя. Вы упрямо твердите что можно. ОК. Возможно юз кейс выше у вас никогда не бывает приказом по части))) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:02 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous Похоже, Вам очень не повезло с системами. Передавать состояние транзакции от вызова к вызову внетранзакционными механизмами (а состояние пакета НЕ транзакционно) - крайне плохой дизайн. При чем тут состояние транзакций, пул соединений? Есть последовательность кода / API: проициализоровать выполнить действие 1 выполнить действие 2 ... выполнить действие 100500 commit хорошо, если это можно обернуть в одну процедуру/анонимный блок, но если бизнес операция сложная, то сделать одной SQL-командной может и не получится (или будет очень громоздко). Разумеется откат/повтор нужен всего блока. Начиная с инициализации andrey_anonymous Состояния пакетов используют совершенно иначе. ? andrey_anonymous Не говорю уже, что в случае пула следующий вызов может прилететь вообще в другую сессию. Так тут проблема не в системе, а неправильного использование пула. Mybatis vs Ora-04068 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:02 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous Leonid Kudryavtsev Когда приложение желает получить чужую DB-сессию из пула, оно должно обнулить состояние - что логично. Вы сами выше писали про пункты должностной инструкции. Попробуйте мысленно представить воплощение своего предложение на более-менее нагруженной системе и оценить время реакции DBA на новый выверт разработчика. DBMS_SESSION.RESET_PACKAGE Какие замечания у DBA ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:04 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous Когллеги, подскажите плиз, какие существуют варианты воткнуть обработку oracle exception ORA-04068 в приложении, использующем MyBatis? Обработка ora-4068, понятно, заключается в повторе вызвавшей сбой операции. Наши джависты вменяемого решения предложить отчего-то не в состоянии - предлагают чуть ли не все вызовы в проекте catch-ами обвешивать. Скорее всего джависты правы. Что такое ORA-0468 ? Код: java 1. 2. 3. 4. 5.
В экшене написано "Try again". Я еще могу предложить синхронно останавливать комплекс приложения вместе с модернизацией PLSQL пакетов. В этом случае Java-приложение всегда будет видеть одинаковое состояние пакетов без перекомпилляций. Но очевидно что кто-то из ваших девопсов оказался хитрее и проигнорировал такую возможность. Сам себя перехитрил. Что можно придумать коробочное на строне приложения чтоб была не нужна перезагрузка? Я не знаю имеет ли Батис шаблон retrier но вот один вариант такого шаблона https://github.com/rholder/guava-retrying Вы можете использовать отдельно на уровне выше батиса. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:06 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andrey_anonymous, Вам уже сказали. Длинная транзакция. Первый запрос ставит состояние в хранимке. Второй запрос переводит деньги. На ближайшем code review "гений", сотворивший эту пакость, получит по шапке. Ему будет на пальцах объяснено что такое statement, что есть транзакции, что такое пул соединений и как правильно следует решать такую задачу. Причем правильных решений, в зависимости от деталей процесса, будет предложено несколько - и ни одно из них не будет предполагать передачу информации между вызовами посредством переменных пакета. Коллеги, давайте исходить из того, что в своей области профессиональных знаний я тоже немножко понахватался, за десятки-то лет :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:22 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev DBMS_SESSION.RESET_PACKAGE Какие замечания у DBA ? Наличие DBMS_SESSION.RESET_PACKAGE в TOP SQL по AWR-отчету. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:22 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous Ему будет на пальцах объяснено что такое statement, что есть транзакции, что такое пул соединений и как правильно следует решать такую задачу. Можно тогда нам кратко объяснить, "что такое statement, что есть транзакции" Я всегда предполагал, что транзакция может состоять из множества statement. Поэтому они и называются по разному ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:28 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Он не знает разницы между физической транзакцией и бизнес транз. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:32 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev andrey_anonymous Состояния пакетов используют совершенно иначе. ? Оффтопик тут. Переменные пакета обладают теми же свойствами, что и глобальные переменные . Надо дальше объяснять почему их избегают в логике приложения и как именно это делается? Один из типовых методов использования - самодельное узко специальное кэширование. Типовая реализация - кэш наполняется по факту использования, от сброса кэша логика приложения не страдает. Изредка можно увидеть использование пакетной переменной для управления уровнем логирования, хотя на сегодняшний день это удобнее делать методами условной компиляции или теми же контекстами. Этот вариант тоже не способен причинить приложению попаболь при сбросе состояния. Если же пакету по неким неведомым причинам очень-очень требуется инициализация (на практике не встречал ни разу), то инициализационный код помещают в секцию инициализации пакета. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:34 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, Переменная пакета имеет уровень пакета а не.. Глобальная ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:39 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, Доказывать тут что исспользовать переменные пакета не профессионально это глупость. Сами пакеты нельзя в веб проектах)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:42 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Я всегда предполагал, что транзакция может состоять из множества statement. Поэтому они и называются по разному ))) Вы абсолютно правы. Но если Вам требуется в рамках одной транзакции выполнить несколько statements, то у адекватного программиста передача параметров произойдет на уровне приложения в явном виде. Exception в одном из statement, если, конечно, подлежит обработке, не потребует отката 100500 предыдущих действий указанной транзакции. Если же бизнес-транзакция достаточно сложна и предполагает в своем составе несколько отдельных транзакций БД, то для организации взаимодействия используются совсем иные механизмы - обычно подходящий messaging. Оракель на этот случай предоставляет вполне транзакционный AQ. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:44 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Веб проект это пул. А пул это анонимный клиент. А он это короткие транзакции без состояния. Это по классике в вузах. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:44 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andrey_anonymous, Переменная пакета имеет уровень пакета а не.. Глобальная Вы не в теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:44 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Сами пакеты нельзя в веб проектах)))) Отчего же? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:46 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, >Exception в одном из statement, если, конечно, подлежит обработке, не потребует отката 100500 предыдущих действий указанной транзакции = У вас ОРМ. Значит не вы отправляете инструкции. И перехватить в нижнем слое проблематично. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:47 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous ...Надо дальше объяснять почему их избегают в логике приложения и как именно это делается?... само наличие данного топика, говорит о том, что избежать-то и не получилось ))) andrey_anonymous Один из типовых методов использования - самодельное узко специальное кэширование. Типовая реализация - кэш наполняется по факту использования, от сброса кэша логика приложения не страдает. Типовая?.... ???? Ну и кэш который передается между чужими коннектами (через пул) - это жесть. IMHO Осмысленность кэша на уровне сессии передающейся между чужими коннектами - для меня загадка. Или должна быть на уровне апп сервера (приложения), один на все сессии (т.е. уровнем выше) Или должен быть на уровне одной операции/транзакции/соединения - т.е. не передаваться и очищаться между коннектами. p.s. предлагаю каждому остаться при своем мнение p.p.s. вариантов решений накидали, думаю автор не новичок и не студент, т.ч. сам разбирется, что в его случае проще и лучше Как я понимаю, два принципиальных варианта никто не оспаривает: 1. Организационный. После наката патча/обновления на базу переинициализровать клиентов. 1.1. Жесткий вариант - перезапускать 1.2. Более мягкий вариант (требует программирование, нового API) - "сдувать быстро пул до нулевого размера" 22321026 2. Программный 2.1. Корректно (пере) инициализировать соединение в момент получения из пула 2.2. Реализовывать повтор etc... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:50 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous PetroNotC Sharp Сами пакеты нельзя в веб проектах)))) Отчего же? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 16:50 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andrey_anonymous пропущено... Отчего же? Тема не раскрыта. Даже не оспаривая этот великолепный тезис о сферическом коне, спрошу: как пакет препятствует 22321078 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:00 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev 1.2. Более мягкий вариант (требует программирование, нового API) - "сдувать быстро пул до нулевого размера" 22321026 Ну вот я имел ввиду именно на уровне конфигурации пула. В пулах в том или ином виде есть настройки: "минимальное количество коннектов" и "сколько времени держать коннект в пуле в случае бездействия". Вот обе настройки в 0. Это конечно не самое хорошее решение, но в определенных жизненных обстоятельствах может снять немного боли. Ну и, возможно, добавить немного боли в будущем :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:03 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, Если у тебя в пакете кроме три раза select нет ничего, то конечно используй))). Если использовать Профессионально то БЛ смещается в субд. В пакеты. Два тезиса осмыслил? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:04 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
SpringMan, Конечно это костыль реконнекта. Я юзверю выводил сообщение что на сервере технические работы. Не люблю автореконнект без 100 проц гарантии. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:07 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev andrey_anonymous ...Надо дальше объяснять почему их избегают в логике приложения и как именно это делается?... само наличие данного топика, говорит о том, что избежать-то и не получилось ))) ...и не требовалось. Используются вполне безопасно и к месту. Leonid Kudryavtsev Ну и кэш который передается между чужими коннектами (через пул) - это жесть. IMHO Фантазия - это здорово. Но Вы заблуждаетесь. Leonid Kudryavtsev Осмысленность кэша на уровне сессии передающейся между чужими коннектами - для меня загадка. Узкоспециальное применение на уровне сессии. К примеру, я такие иногда использую для обогащения потока данных - повышает производительность за больших объемах и снижает стоимость поддержки системы за счет снижения сложности sql. Leonid Kudryavtsev 2. Программный 2.1. Корректно (пере) инициализировать соединение в момент получения из пула 2.2. Реализовывать повтор etc... Если посмотрите внимательнее, то коллеги предложили два вполне реальных варианта, надеюсь, один из них на текущем проекте нам подойдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:08 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andrey_anonymous, Если у тебя в пакете кроме три раза select нет ничего, то конечно используй))). Если использовать Профессионально то БЛ смещается в субд. В пакеты. Два тезиса осмыслил? Еще раз, медленно, задаю вопрос: - каким образом применение пакетированной логики мешает проводить короткие транзакции? Попробуйте осмыслить перед тем, как жать на кнопки. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:12 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Leonid Kudryavtsev, Он не знает разницы между физической транзакцией и бизнес транз. Петро, просто поверь , что Андрей точно много больше тебя знает, понимает и видел в этом вопросе. По крайней мере, допусти по вероятности. И рассуждает он, кстати, как раз о том, о чём программисту задумываться не положено. Хотя в техническом плане, некоторые из его категорично высказанных тезисов, имхо, спорны. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:15 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
SpringMan Leonid Kudryavtsev 1.2. Более мягкий вариант (требует программирование, нового API) - "сдувать быстро пул до нулевого размера" 22321026 Ну вот я имел ввиду именно на уровне конфигурации пула. В пулах в том или ином виде есть настройки: "минимальное количество коннектов" и "сколько времени держать коннект в пуле в случае бездействия". Вот обе настройки в 0. Это конечно не самое хорошее решение, но в определенных жизненных обстоятельствах может снять немного боли. Ну и, возможно, добавить немного боли в будущем :) Ну это вообще пул выключит Тут то проблема, как я понимаю, что пул после наката патча не очищается. Не сложно сделать на сервере служебное Rest API / URL и дергать его после наката патча. А в нем уже ужимать пуль (AFAIK многие пулы такое предоставляют). Накатили патч. Дернули URL на серверах. Пулы переиницилизировались, все работает. Но на мой взгляд, более правильно, было бы: 1. Дернули URL на серверах, преостановили работу пользователей 2. Накатили патч на СУБД 2. Дурнули URL на серверах, очистили пул, продолжили работу пользователей Я понимаю, что: Сейчас вообще в моде девопс и накат изменений без перерыва сервиса. но как при этом гарантировать корректную работу при серьезных изменениях - не очень представляю. Половина пакетов накатилась, половина нет. А мы работает, команды переповторяем.... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:17 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby PetroNotC Sharp Leonid Kudryavtsev, Он не знает разницы между физической транзакцией и бизнес транз. Петро, просто поверь , что Андрей точно много больше тебя знает, понимает и видел в этом вопросе. По крайней мере, допусти по вероятности. И рассуждает он, кстати, как раз о том, о чём программисту задумываться не положено. Хотя в техническом плане, некоторые из его категорично высказанных тезисов, имхо, спорны. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:19 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous PetroNotC Sharp andrey_anonymous, Если у тебя в пакете кроме три раза select нет ничего, то конечно используй))). Если использовать Профессионально то БЛ смещается в субд. В пакеты. Два тезиса осмыслил? Еще раз, медленно, задаю вопрос: - каким образом применение пакетированной логики мешает проводить короткие транзакции? Попробуйте осмыслить перед тем, как жать на кнопки. Я знаю бизнес логику). Давайте по ней вопросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:21 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp booby ... Хотя в техническом плане, некоторые из его категорично высказанных тезисов, имхо, спорны. Его слова, дословно, как раз у меня критики и не вызывают. Кто же спорит, что глобальные переменные, goto и 100500 других вещей - это не есть хороший стиль. Но некоторые его высказывания воспринимаются слишком "категорично". Я с самого начала подчеркивал, что в его случае - наверное все хорошо. Но в целом, без знаний и гарантий об устройстве конкретной системы - это может не работать или, что хуже, может делать вид, что работает, а на деле работать не корректно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:24 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev но как при этом гарантировать корректную работу при серьезных изменениях - не очень представляю. Половина пакетов накатилась, половина нет. А мы работает, команды переповторяем.... Ну как-как... Патчи делятся на те, которые подлежат накату online и те, которые требуют остановки сервиса. Под вторые согласуется технологическое окно (перерыв сервиса), первые применяются в часы наименьшей нагрузки. Патчи отдельно тестируются на накат. Ну и безусловно, при работе на серьезной системе накат изменений без согласованного документа вида "план внедрения" не выполняется. Нормальный план внедрения предусматривает заранее согласованные действия в аварийной ситуации - например, ту же остановку сервиса с последующим откатом патча или - бывают и такие сценарии - продолжение работы в режиме ограниченной функциональности. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:29 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp ...и как это соотнести с тем что переменные вредны в пакетах? Его слова? Нет. это вы сейчас за него додумали. Про то, что пакетные переменные эквивалентны глобальным переменным он говорил. И про то, что считается, что не следует чрезмерно увлекаться глобальными переменными - тоже говорил. А вредны - это ваш домысел. Контекстные переменные - тоже сорт глобальных переменных, между прочим. Существо того, о чем он говорил, сводится вот чему, с моей точки зрения: При работе с пулом соединений явное состояние пакета может быть, при определенных обстоятельствах, помехой, как и вообще любая другая сохранившаяся "глобальная переменная" на стороне базы. Тема, в общем случае достаточно сложная, но а) я понимаю это, и б) я знаю что делаю. Вот я бы так расшифровывал то, что он говорил, независимо от того, есть тут предмет для спора или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:31 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby, Вот и пошло поехало - у него градации пакетов оказывается - переменными не увлекаться - То есть куча условностей о которых молчал. Стакан полуналитый или полупустой? Это профессионально? Нафиг пакеты при трехзвенке? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:35 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, но, вообще EBR в Oracle взлелеивали именно для обсуждаемого рода задач. Хочу полюбопытствовать, если не секрет, почему именно в вашем случае эти лыжи не едут? (у "нас" тоже не едут, но это не моего ума вопрос) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:35 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby, Решение топика то где? Пул обнулить?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:37 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp booby, Решение топика то где? Пул обнулить?)) Ну будем надеятся, что когда решат, то отпишется, что и как ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:38 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Я знаю бизнес логику). Давайте по ней вопросы. Давайте. Берем бизнес-процесс заведения нового клиента в банке. Он по факту достаточно сложен и может содержать сотни вызовов плюс несколько интеграционных взаимодействий. Но мы упростим до предела - всего одна БД, всего пяток необходимых действий по регистрации. В базе создан пакет содержаший метод registerNewClient(...), инкапсулирующий эти действия. Каким образом вызов указанного метода противоречит тезису про "короткие транзакции без состояния"? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:40 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Учитывая что имеем дело с ораклом мы еще можем обсудить другие ситуации. Не только PL/пакет был пересобран. Но и инстанс кластера мог упасть. Умный драйвер нас перебалансировал на другие инстансы. Но мы что-то потеряли. Потеряли context. Сессионные настройки. Так что задача не так проста как кажется. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:42 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, В трехзвенке и база нафик не нужна. Тут и мнения второго быть не может. Иначе ты навсегда будешь чьим-нибудь рабом, например майбатиса. База смысла не имеет, если в ней нет хранимого кода. Но большинство современных "системостроителей" на голубом глазу технической политикой запрещают его наличие. И у нас на форуме есть ярые размахиватели этим флагом. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:42 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby (у "нас" тоже не едут, но это не моего ума вопрос) Потому что я плавно становлюсь динозавром, наверное. И не доверяю я индусам в таких вопросах. Да и текущий проект сильно проще в этом плане нежели чем предыдущий, где, впрочем, тоже как-то обошлись. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:45 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby База смысла не имеет, если в ней нет хранимого кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:49 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
mayton Умный драйвер нас перебалансировал на другие инстансы. Поручик, ну как можно в приличном обществе так выражаться?!!! Какой кластер, какой TAF, Вы о чем?! Может, предложите обсудить в этом контексте cache fusion, result cache с его багами и условностями? Вы еще про FAN вспомните или, не приведи Господь, про GoldenGate на каскадном стендбае... Оффтопик это, злой оффтопик. Тут даже сугубо ламповая тема про корректное использование переменных пакета на ровном месте целый холивар подняла ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 17:56 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev booby База смысла не имеет, если в ней нет хранимого кода. Рискну предположить, что коллега booby имел ввиду "вам не нужна серьезная промышленная БД там, где достаточно мешка с данными". Оракель выставляет прайс на свою rdbms за очень мощный функционал. Нет никакого смысла платить миллионы за тот же Oracle EE, если все что требуется от базы - это CRUD. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 18:09 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev booby База смысла не имеет, если в ней нет хранимого кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 18:21 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous Когллеги, подскажите плиз, какие существуют варианты воткнуть обработку oracle exception ORA-04068 в приложении, использующем MyBatis? Обработка ora-4068, понятно, заключается в повторе вызвавшей сбой операции. Наши джависты вменяемого решения предложить отчего-то не в состоянии - предлагают чуть ли не все вызовы в проекте catch-ами обвешивать. История про то что на все вызовы нужно лепить catch звучит довольно странно, при работе с MyBatis обычно одному методу в жаве соответствует один вызов jdbc, т.е. в первом приближении размер бедствия довольно-таки замкнутый и накидать костылей в виде catch не должно составлять каких-либо проблем, это раз. Во-вторых, ничего не мешает воткнуть декоратор для дата-сорса, и перехватывать исключения там, здесь трудоемкость зависит от того как реализовано приложение, и может выходить от получаса до ~дня. Однако по моему мнению, если бы ко мне пришли с такой "идеей", то я бы предложил написать декораторы в PL/SQL - ошибка летит оттуда, ну вот пусть оно через execute immediate и делает вызовы с перехватом. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 18:56 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Хммм... Не понял как можно перехватить вызов хранимки с райзе в самой субд. Разве это возможно? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 19:25 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Резюмируя тему: - спасибо всем коллегам за беседу. - отдельное спасибо коллегам Stanislav Bashkyrtsev и SpringMan за ответы по существу. В настоящее время мне представляется, что interceptor вписывается в условия задачи наилучшим образом. Андрей Панфилов написать декораторы в PL/SQL - ошибка летит оттуда, ну вот пусть оно через execute immediate и делает вызовы с перехватом. базисты и джависты никогда не поймут друг друга :) PetroNotC Sharp Разве это возможно? Возможно. Цена вопроса - лишняя прослойка из динамического sql. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 19:26 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Андрей Панфилов, >История про то что на все вызовы нужно лепить catch звучит довольно странно = до спринга всегда так и писали) Просто можно вверху в стеке в контроллере поставить try. А внизу 1500 методов без try ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 19:29 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, >Возможно. Цена вопроса - лишняя прослойка из динамического sql. = это изврат. Поэтому считаем невозможно) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 19:30 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous mayton Умный драйвер нас перебалансировал на другие инстансы. Поручик, ну как можно в приличном обществе так выражаться?!!! Какой кластер, какой TAF, Вы о чем?! Может, предложите обсудить в этом контексте cache fusion, result cache с его багами и условностями? Вы еще про FAN вспомните или, не приведи Господь, про GoldenGate на каскадном стендбае... Оффтопик это, злой оффтопик. Тут даже сугубо ламповая тема про корректное использование переменных пакета на ровном месте целый холивар подняла Почему такая реакция? Я просто расширил спектр возможных ошибок. И спросил как быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 19:39 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Андрей Панфилов, >История про то что на все вызовы нужно лепить catch звучит довольно странно = до спринга всегда так и писали) Чего так "и писали"? паттерн декоратор существует из покон веков, jdk-прокси, которые по сути и есть декораторы появились в 1.3 (май 2000, если что) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 19:44 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, >В настоящее время мне представляется, что interceptor вписывается в условия задачи наилучшим образом. == обязательно отпишитесь после реального запуска. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 19:46 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Паттерн я знаю. Как его тут применить не понял. Особенно не трогая клиентский код а в субд. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 19:48 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, ну приложение получает DS обычно через какую-то фабрику, вот нужно сделать декоратор к DS, который на getConnection() будет отдавать другой декоратор, который в свою очередь будет на prepareStatement отдавать еще один декоратор, который будет перехватывать executeQuery() - выглядит вроде как мудрено, но в интернетах готовых реализаций декораторов наверное под сотню. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 19:54 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
mayton Я просто расширил спектр возможных ошибок. И спросил как быть. Вы затронули весьма специфическую тему, банально незнакомую многим из присутствующих. Еще меньшее количество могут похвастаться практическим опытом осмысленной работы с обозначенными технологиями. Причем наиболее простое решение проблемы TAF - по возможности объединить логику транзакции в один statement, положившись на механизмы statement level rollback и автоматически решив вопросы с необходимой предварительной инициализацией if any - многим представляется то громоздким, то идеологически неверным, особенно если речь заходит о серверном коде. Потому и реакция - не следует множить сущности без необходимости. Прошу прощения если паче чаяния задел. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 20:01 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Возможно я тебя не так понял. Мы же код ТС не видели. Например у него вызов хранимки так Код: java 1. 2.
Вот примеительно к этому вызову я не понял твой рецепт. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 20:16 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous Андрей Панфилов написать декораторы в PL/SQL - ошибка летит оттуда, ну вот пусть оно через execute immediate и делает вызовы с перехватом. базисты и джависты никогда не поймут друг друга :) у меня у самого где-то сертификат OCP валяется по 11g, так что относительно поймут/не поймут - тут спорно, смотрите какая штука получается на самом деле: вот есть ваша ORA-04068, по ней рекомендация "выполнить" еще раз, эта рекомендация настолько тупая, насколько это возможно: раз компенсация ошибки заключается в том нужно просто повторить вызов, то возникают вполне естественные вопросы: - если СУБД стоит кучу денег, то чего она сама эту компенсацию не выполняет-то? - а почему драйвер JDBC ее не выполняет? - если писать хранимые процедуры считается круто, то почему эти процедуры сами не справляются с компенсацией? при этом в протокол взаимодействия с СУБД (в разработке которого принимала участие и Oracle) никакой информации о том какая ошибка является фатальной, а какая нет, и какие компенсации предусмотрены, не заложено, что наводит на мысли, что с рекомендацией "просто повторить вызов" на самом деле не все так просто и нужно думать что делать в каждом конкретном случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 20:18 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Андрей Панфилов, Возможно я тебя не так понял. Мы же код ТС не видели. Например у него вызов хранимки так Код: java 1. 2.
Вот примеительно к этому вызову я не понял твой рецепт. ну в sqlSession же датасорс откуда-то попадает... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 20:19 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Особенно прикольно когда он повторять долбить вызов будет в триггере от ОРМ ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 20:21 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Андрей Панфилов PetroNotC Sharp Андрей Панфилов, Возможно я тебя не так понял. Мы же код ТС не видели. Например у него вызов хранимки так Код: java 1. 2.
Вот примеительно к этому вызову я не понял твой рецепт. ну в sqlSession же датасорс откуда-то попадает... Я бы с админом лучше договорился. ))) Или реконнект приложения с открытием "как было". ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 20:25 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Пишут всем юзерам рассылку. Дескыть сёдня после 20.00 будет плановое техобслуживание. И ребутают что надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 20:38 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Андрей Панфилов у меня у самого где-то сертификат OCP валяется по 11g, так что относительно поймут/не поймут - тут спорно, смотрите какая штука получается на самом деле: вот есть ваша ORA-04068 ... ...нужно думать что делать в каждом конкретном случае. Коллега, а философского образования у Вас случайно нет в коллекции? А то уж очень сферично как по мне. Без привязки к конкретному контексту. Да и на бОльшую часть вопросов ответы в топике присутствуют, что лишает их элемента новизны. Сидят два мужика, выпивают. Один другого спрашивает: — Слушай, а что такое логика? — Ну как тебе объяснить… Видишь — вон два мужика идут, один грязный, другой чистый. Какой из них в баню идет? — Грязный… — Правильно. Он грязный, поэтому идет мыться. Вот это называется логикой. — А что такое диалектика? — Ну… Видишь, два мужика идут. Один грязный, а другой чистый. Кто из них в баню идет? — Грязный… — А вот и неправильно! Чистый. Грязный — он потому и грязный, что в баню никогда не ходит. Вот это называется диалектикой… — Ну а что же тогда философия? — Видишь… Два мужика идут, грязный и чистый. Какой из них в баню идет? — А хрен его знает… — Вот! Это как раз и есть философия ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 20:48 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous Да и на бОльшую часть вопросов ответы в топике присутствуют, что лишает их элемента новизны. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 21:17 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Андрей Панфилов Чет не увидел никаких ответов Ну давайте разберем детально. Андрей Панфилов вот есть ваша ORA-04068, Не моя, но ладно. Есть 4068. Это конкретика. Андрей Панфилов "выполнить" еще раз, эта рекомендация настолько тупая, насколько это возможно: Это Ваше оценочное суждение. Причем, по всей видимости, без привязки к факту, поскольку: oerr ora -4068ORA-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.05.2021, 21:49 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, >не раскидывая по коду ненужные catch. = вот как может прогер писать что по коду раскиданы ненужные catch? ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 22:14 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Развратила декларативность программистов. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 22:16 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Андрей Панфилов ... Вон у Кайта ...: https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:26075943863705 ... Интересная ссылка. Кайт пробует сначала подавить в стиле "понимаете ли вы вообще, что такое скомпилированное приложение?", но Кустовский не гнётся, и в весьма твёрдой манере формулирует технический запрос на то, что потом, по реализации, стали называть Edition Based Redefinition. Сдаётся мне, что товарищ Кустовский из разработчиков OEBS, или иного приклада от самого Oracle. (Что-то не сильно слышно о широком применении этого творения за пределами собственно экосистемы Oracle) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2021, 23:42 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby, Кустовский - Кутровский, сорри. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 00:13 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
mayton Пишут всем юзерам рассылку. Дескыть сёдня после 20.00 будет плановое техобслуживание. И ребутают что надо. Допустим, что вы такую рассылку сделали ... Как её прочитает какой-нибудь "интеграционный робот"? Люди? А вы знаете кто это? А людям из совершенной другой организационной структуры (другой организации) есть вообще дело до вашей рассылки? А есть у них информация, чтобы решить - когда им можно? А вы точно уверены, что никто из "важного начальства" не ожидает выполнения в 20:01 "важной сделки на лярд баксов"? P.S. Нет, технологическое окно, конечно, отыскивают. Просто делается это несколько сложнее, чем "намылить оповещение". Где-то на этих форумах была история про обновление ПО крупного оптового склада - несколько часов один раз в конкретный день года. Можно ли в другое время? Да без базару. Оплачиваете простой склада, убытки контрагентов и - любой каприз за ваши деньги. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 05:58 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Почему обычным балансировщиком не направить на другую базу? Для автоматов просто завершают сессию. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 06:32 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Завершение сессии это рядовая операция при веб. Все ее умеют. ТС не умеет и не хочет) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 06:34 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
ТС решил что в веб проектах (трехзвенке) здорово писать как при проектах КЛИЕНТ-СЕРВЕР (повтори запрос) Вставил в код среднего слоя код с хранимками. Теперь вставит интерцепторы именно для оракле. Хранимки нужно писать с ограничениями. Не дай бог кто вставит туда переменную. Нужен штат проверяльщиков кода и шаблоны приказов о наказании нерадивых. Мое имхо что интерцептор это триггер. Мне очень редко приходилось в PL ПОВТОРЯТЬ ОПЕРАЦИЮ. Хорошим тоном было сначала проверить созданы ли условия)). Итого, интерцептор служит для Отката при валидации... Логирования.. И т.д. Но для повтора имхо технически не красиво. Другой вопрос, что при нагрузке после райзе контекст вообще может уплыть и изменится. Мы движемся к асинхронности. Даже эксплорер переспрашивает тупым вопросом: "повторить уже отправленный запрос?". Транзакция в миллисекунду встанет с райзе на аппСервере в другом континенте. Надо протестить время и потери бизнеса). Сделать ТЕО. Нагрузочное тестирование. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 07:06 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous PetroNotC Sharp Я знаю бизнес логику). Давайте по ней вопросы. Давайте. Берем бизнес-процесс заведения нового клиента в банке. Он по факту достаточно сложен и может содержать сотни вызовов плюс несколько интеграционных взаимодействий. Но мы упростим до предела - всего одна БД, всего пяток необходимых действий по регистрации. В базе создан пакет содержаший метод registerNewClient(...), инкапсулирующий эти действия. Каким образом вызов указанного метода противоречит тезису про "короткие транзакции без состояния"? Пакет на PL пишет прогер с должностью Разработчик БД. Не java программист. Если это не студент то он напишет в заголовке хранимки переменную/константу. Всё. Приплыли. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 07:14 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
ТС версию бд хотя бы привели. Вроде взрослый а пруфа на обсуждение в ветке оракле я не вижу от вас. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 08:01 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Почему обычным балансировщиком не направить на другую базу? Для автоматов просто завершают сессию. 2. "А ведь он был кому-то нужен" (ц) Винни-Пух. P.S. Если вам трудно держать в голове контекст "длинных" сообщений - просто игнорируйте их. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 09:52 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, 1.конкретнее. Разве в ИС где проблема выгнать юзверей и они работают по ночам нет балансировщика? Пример есть? Мы обновляли по вечерам систему. А вы? 2. Нормальный автомат умеет реконнект. ЗЫ. Не пишите длинно если пару фраз выше не можете понять. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:03 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Мы обновляли по вечерам систему. А вы? И знаете - везде было по разному . Совсем круто, правда, не бывало, но даже с процедурой остановки бывали ньюансы. Разные. По этому вот так огульно: "балансирощик, перенаправление, другая база" - я бы поостерёгся. А вы? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:11 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Мы здесь для генерации идей. И советов. Как в "что где когда". Че вы так возбудились на решения: - мессага юзверю - Перелогинься! - балансировщик - обновить в окно ? Есть еще 5 решений чисто админских и не по java. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:31 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Я "возбудился" на странное предложение mayton. Возможно, я понимаю, откуда это у него, но, блин, в очередной раз - крайне не к месту. А лично вы достали как тот математик из анекдота: вроде всё правильно говорит, но каждый раз непонятно - а что с этим делать-то? P.S. Полезность мозговых штурмов сильно преувеличена - у них крайне ограниченная область применения. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:35 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Сложно вам жить. Вы не в своей тарелке. Вы железячник. А не софтовик. Почему я его понимаю а вы нет) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:37 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Хреновый из вас телепат. Или шар протрите или одно из двух. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:38 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Ну вот я писал на PL и обновлял систему федерального уровня. А вы? Хранимки писали? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:38 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Хреновый из вас телепат. Или шар протрите или одно из двух. Как бабка на скамейке. Брюзжишь что непонятно ей про балансировщик. С луны что ли. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:41 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Представим себе ВИ. Или юз кейс. - Маша уборщица посмотрела расписание уборки из XP - вернула в пул - админ обновил сигнатуру или.... - вечером гендир Иванов взял из пула коннект и при запросе получил ORA Я очень сомневаюсь, что триггер на аппСервере хорошее решение. Как то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:46 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
А я находил тупые косяки разработчиков в системе, которая много лет использовалась во множестве регионов РФ. Сопровождал и обновлял одну из таких региональных систем. Не в одно лицо, конечно, но и не "сбоку смотрел". Видел и дебильные реализации и халтурные исправления багов и более-менее успешные попытки свалить проблемы разработки на кривые руких технарей владельца системы. Разное, в общем, бывало. И, более того - в разных местах, а не только на одной конкретной системе. И знаете что? Не надо быть гением, чтобы даже по результату работы понимать: "Ваш код - дерьмо". Не говоря уж о ситуациях, когда этот код можно просто увидеть. P.S. С федеральными системами тоже сталкивался. Уже "со стороны", но тоже интересно. Особенно - на одной презентации уже готовой системы перед планируемым внедрением. Оказалось, что разработчики даже не почесались не то, что сделать - просто подумать о тривиальной фиче. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 10:50 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Если преувеличивать, то я считаю что решение интерцептор дерьмо.. Но вы же склоняете к осторожности). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 11:05 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Дискуссия зашла в тупик. У автора получается ситуация что одни не могут - а другие не хотят. Разумеется моё предложение о рассылке maintenance было шуткой. Oracle по протоколу кидает ORA-04068 когда пакет инвалидировался. Предполагается что программист знает что это и "принимает решение". Вопрос где и на каком уровне принять решение? Представте на секундочку что ваш браузер на ошибку HTTP-5** будет делать авто-повтор реквеста. Кому это надо? А кому надо чтобы циклический реквест PL-пакета на стороне PL-машины создал нагрузку. Иногда в сетевых протоколах заложен принцип минимального ущерба. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 11:15 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
mayton, +1 Кроме того, с 11ой версии оракле было много изменений по данной ошибке. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 11:27 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
mayton А кому надо чтобы циклический реквест PL-пакета на стороне PL-машины создал нагрузку. Если бы я просил совет по оракелю - то спросил бы его в профильной ветке, где есть специалисты именно по оракелю. Теперь про инсинуации с retry по ORA-04068- медленно, специально для быстрых разумом теоретиков кунг-фу Сценарий 1: простая перекомпиляция пакета. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Сценарий 2: перекомпиляция пакета привела к неустранимым проблемам. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Мораль: знание некоторых принципов не всегда избавляет от необходимости знать некоторые частности. Кто хочет поиграться лично - вот игрушка, способная провоцировать 4068 на 19.0: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 14:54 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, А мне кажется ты Elic испугался. Вопросы то плевые с точки зрения DBA ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 15:03 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, >Сценарий 1: простая перекомпиляция пакета. = в ветке java еще лучше тест с интерцепторами ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 15:13 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous -- Повторяем вызов: ... В текущей системе, с которой работают, большинство пакетов как пакеты, но есть кучка пакетов где после перекомпиляции повторное обращение ситуацию не исправляет. Только отлогиниться, залогиниться обратно. Что именно в коде (зависимости пакетов) дает такой эффект - не разбирался. Oracle EE 11.2.0.3.0 64 bit ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 15:50 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Вопрос в том обязан ли клиент вызвать пакет UTL_RECOMP и пересобрать это всё по первой ошибке? В ситуации когда повторный колл не исправляет ошибку (несколько интерфейсных частей пакетов были изменены на сервере). Я думаю что не обязан. Клиент (обычное веб-приложение к примеру) не настолько умен чтобы вызывать правильные команды компилляции. И в этом случае хорошее решение со стороны клиента это - просто подождать некое протокольное время и повторить интеракцию. Здесь хорошо подходит шаблон аварийный размыкатель (Cirquit Breaker) который на уровне сервиса заблокирует обращения других клиентов (они будут получать стандартную плашку HTTP-5** с сообщением что ведутся технические работы). Никаких умных действий с их стороны быть не должно. Кто создал проблему на сервере - тот и должен ее решать. Технические детали протокола аварийного выключателя (время размыкания и прочее) - обсуждается. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 16:03 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev В текущей системе, с которой работают, большинство пакетов как пакеты, но есть кучка пакетов где после перекомпиляции повторное обращение ситуацию не исправляет. Это совсем другая история, к 4068 не относящаяся от слова "совсем" Попадаете на ORA-06508 PL\SQL could not find program unit being called ? Если да, то тема эта, кмк, обсосана уже. Если нет MOS, то поищите хотя бы по оракельской ветке 1. Не походит автоматическая рекомпиляция по зависимостям - смотрите на полный стек ошибки. 2. Проблема с last_ddl_time 3. Именно в этой ситуации может помочь сброс состояния пакетов посредством reset_package. 4. Если живете на 11.2, то поднимитесь хотя бы до последнего патчсета (11.2.0.5, если склероз не врёт). 11.2.0.3 багованный был, AFAIR ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 16:09 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
mayton Вопрос в том обязан ли клиент вызвать пакет UTL_RECOMP и пересобрать это всё по первой ошибке? Да откуда вы всё это берете?! Какой рекомп от приложения, длянафига? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 16:12 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous mayton Вопрос в том обязан ли клиент вызвать пакет UTL_RECOMP и пересобрать это всё по первой ошибке? Да откуда вы всё это берете?! Какой рекомп от приложения, длянафига? Я возможно отстал от жизни. А что 11-тка уже автоматом восстанавливает зависимые интерфейсы пакетов? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 16:15 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
mayton А что 11-тка уже автоматом восстанавливает зависимые интерфейсы пакетов? В 11.2 так: https://docs.oracle.com/cd/E18283_01/server.112/e17120/general007.htm About Object Dependencies and Object InvalidationOracle 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.05.2021, 16:28 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
mayton, Ты смешал два вопроса. 1. При смене хранимки админ должен перекомпилить сам невалидные пакеты что затронулись. 2. Но это не поможет и не исключит если кто торчал в сессии. По п. 1 я писал цикл на PL и компилил невалидные. По п. 2 писал выше. Вечером обновлял ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 16:29 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous mayton А что 11-тка уже автоматом восстанавливает зависимые интерфейсы пакетов? В 11.2 так: https://docs.oracle.com/cd/E18283_01/server.112/e17120/general007.htm About Object Dependencies and Object InvalidationOracle 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.05.2021, 16:53 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
mayton Значит тебе нужен совет Java-разработчиков о том как подобный класс ошибок решается на их стороне. Именно. Но, как выяснилось, Java-разработчики (впрочем, как и оракловые) за редким исключением предпочитают обсуждать интеллектуальные способности и квалификацию ТС :) Особо доставляет читать рассуждения о правилах игры на чужом поле :) Впрочем, два ответа о трех вариантах на исходный вопрос я таки получил, коллеги прорабатывают. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 16:59 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, >Но, как выяснилось, = вот все знают, а ты нет). Внезапно)))) "ТС на любой ветке форума работает больше отвечающих и не артачится.. обычно" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 17:10 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
mayton по зависимостям интерфейса я снимаю вопрос. Могу подкинуть развитие примера на поиграться самостоятельно в интересующей версии oracle. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
Задача прежняя - показать, как зациклится обработчик ORA-04068 :) ...как его зациклить искусственно я тоже могу показать, но это не из реального мира сценарий. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 17:11 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andrey_anonymous, >Но, как выяснилось, = вот все знают, а ты нет). Внезапно)))) Мир Ваших иллюзий столь трогателен, что я чту в немом восхищении. Пожалуйста, не останавливайтесь - я даже начал собирать коллекцию Ваших перлов... и выперлов. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 17:21 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, Жду коллекцию) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 17:28 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Финализируя тему: механизм штатных интерцепторов в итоге устроил. Проблема подавления ora-4068 в батике без модификации кода нашего проекта решена. Еще раз спасибо коллегам SpringMan и Stanislav Bashkyrtsev за полезные ответы, позволившие сильно облегчить жизнь на проекте. Коллеге PetroNotC Sharp - отдельная благодарность за доставленные лулзы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 17:30 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, Без кода интерцептора незачет. Так индусы тему закрывают. Заходи еще)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 17:40 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Код? Зачем код, ежели оно изначально не то, не там, не так, не тем и не по тому месту? А впрочем... Наши джависты нарисовали так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 18:00 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, Другое дело. Вопрос к тебе как спецу в бд. Есть ненулевая вероятность обратно получить дважды данный текст ошибки. Входим в цикл и сервер ляжет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 18:54 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Есть ненулевая вероятность обратно получить дважды данный текст ошибки. Входим в цикл и сервер ляжет. "Твори, выдумывай, пробуй" (с) 22321623 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 19:00 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, Угу. Ты твори а я в продакшен повтор засунул)))) Люблю юмор. Ладно, там вопросительный знак у меня потерялся. Удачи) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 19:03 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andrey_anonymous, Угу. Ты твори а я в продакшен повтор засунул)))) Там, где Вы размышляете в терминах "ненулевых вероятностей", я точно знаю что делаю . Да и java-код Вы, по всей видимости, тоже прочитать не смогли. Ну или не поняли. Что, впрочем, не очень удивляет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 19:06 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, Я тоже понял, что вместо ответа на вопрос, вы напустили туману. Вот и познакомились) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 19:17 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andrey_anonymous, Я тоже понял, что вместо ответа на вопрос, вы напустили туману. Еще один перл в коллекцию. Вам привели как натурные эксперименты, наглядно демонстрирующие особенности обсуждаемого exception, так и конкретную реализацию интерцептора, которая не впадет в бесконечную рекурсию в случае "ненулевой вероятности". Это, конечно, туман и ни в коем случае не ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 19:20 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, Нет милый мой. Я спрашивал именно про твой личный опыт. Либо пруф. Отвлеченный кусок кода не является натурным экспериментом. Юморист. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 19:35 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Отвлеченный кусок кода не является натурным экспериментом. Юморист. Я уже понял, что Вы не понимаете пусть примитивного, но очень конкретного java-кода, который можно просто добавить в проект и получить ожидаемый эффект. Осознал, что практические демо с приложенными ради независимой проверки тестовыми примерами - не пруф. Пруф - это, видимо, "ненулевая вероятность" и общее околосферическое словоблудие. Если у Вас нет конкретных соображений, как именно "зациклить" приведенный код - то продолжение разговора мне не интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 19:41 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, Хммм... Вот смотрите. Есть две парадигмы решения ошибки по сабжу - обнулить сессию либо на клиенте, либо админские меры DBA при деплое - погасить ошибку (повтор вызова/триггер/пустышка хранимка) Вам как DBA почему то нравится озадачить java прогеров по второму варианту. Меня как прикладного программиста привлекает первый вариант. Вы на уровне архитектуры разве задумывались над этим? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 19:52 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Вам как DBA почему то нравится озадачить java прогеров по второму варианту. Меня как прикладного программиста привлекает первый вариант. Вы на уровне архитектуры разве задумывались над этим? Вот смотрите. Конкретных возражений против решения у Вас нет. Потому что оно: - работает - не циклится (согласно общей логике и нашим тестам) - эффективно решает конкретную проблему проекта, связанную с накатом обновлений без перерыва сервиса - не создает лишней нагрузки ни на программистов, ни на администраторов, ни на техподдержку - не требует развертывания второго сервера за еще один мегадоллар (тут еще рисуется ряд нетривиальных работ по обеспечению целостности при переключении, но кто считает...) - стоило разово 2.5 часа времени разработчика + доставило мне несколько минут искреннего смеха в процессе чтения Ваших комментариев ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 20:16 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
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.05.2021, 20:24 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, >Потому что оно: == вы сравниваете колбасу с колбасой? В архитектуре сравнивают минимум два подхода. Вас бы тендерами управлять)) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 20:28 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Вот вы также гасите как чел выше Да. Выкидываем на клиента и там гасим. Потому что это правильно и не создает ненужных проблем. Согласно приведенной Вами же цитате этот же поход позволил ТС решить свои проблемы с "перманентной 06508". 6508, Карл, а не 4068. Тему 6508 в этом топике поднимал Leonid Kudryavtsev и она на самом деле лежит в стороне от 4068, не являясь, таким образом, предметом обсуждения. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 20:33 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp В архитектуре сравнивают минимум два подхода. Так я и сравнил. - с технической точки зрения - с точки зрения эксплуатационных расходов - с точки зрения затрат на разработку/внедрение/сопровождение - с точки зрения удовлетворения требованиям непрерывности сервиса - с точки зрения расходов на необходимую инфраструктуру (это когда Вы предлагали вторую БД поставить) В вот что именно сравнивали Вы - осталось загадочной загадкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 20:38 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous PetroNotC Sharp Вот вы также гасите как чел выше Да. Выкидываем на клиента и там гасим. Потому что это правильно и не создает ненужных проблем. Согласно приведенной Вами же цитате этот же поход позволил ТС решить свои проблемы с "перманентной 06508". 6508, Карл, а не 4068. Тему 6508 в этом топике поднимал Leonid Kudryavtsev и она на самом деле лежит в стороне от 4068, не являясь, таким образом, предметом обсуждения. Он отказался его гасить на своем уровне. С чего ты решил что в java порядки другие? Тут тоже try { } catch (Exception e) { Null Это плохой тон. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 21:55 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous PetroNotC Sharp В архитектуре сравнивают минимум два подхода. Так я и сравнил. - с технической точки зрения - с точки зрения эксплуатационных расходов - с точки зрения затрат на разработку/внедрение/сопровождение - с точки зрения удовлетворения требованиям непрерывности сервиса - с точки зрения расходов на необходимую инфраструктуру (это когда Вы предлагали вторую БД поставить) В вот что именно сравнивали Вы - осталось загадочной загадкой. Дано: условие задачи.... Вариант решенияА Вариант решенияБ Надо рассмотреть два варианта с этих всех точек зрения)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 22:18 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous И вот теперь скажите мне, Андрей Панфилов, если бы я в ответ на Ваше " странное желание писать сомнительный код " отвечал Вам так же, как Вы мне - удостоился бы я 12082346 или нет, как полагаете? Спасибо за внимание. Андрей, вы в том топике дали профессиональный ответ, я вас отблагодарил, а здесь вы по какой-то причине всеми силами пытаетесь увернуться от точно такого же профессионального ответа. Конкретно в этом форуме у участников кругозор несколько шире, ввиду того что постоянно приходится работать с разными системами, поэтому юродствуете вы совершенно зря. Вот давайте разберем ситуацию с ошибкой более подробно: вы разрабатываете (или поддерживаете, не суть важно) некую систему, где было принято решение бизнес-логику зашить в хранимые процедуры (насколько это решение правильное и какие были мотивы мы не обсуждаем), т.е. вы (БД) клиенту (жава-приложению) помимо (или вместо) стандартных CRUD-операций предоставляете еще другой API в виде неких RPC-вызовов к БД, в какой-то момент времени происходит осознание того, что обновление реализации предоставляемого API для клиента происходит не так прозрачно как хотелось бы, вы идете к вендору (ораклу) и узнаете, что существует потенциальная возможность избежать проблем, однако стоимость "правильного решения" слишком высока (трудозатраты, злой заказчик, который хочет вчера, возможно стоимость лицензий и пр.), ну и в итоге вы оказываетесь на этом форуме с вопросом какбы в жаве побыстрому нагородить костылей... Вот есть ошибка: Код: plaintext 1.
что она по своей сути означает? Означает она следующее: реализация API, предоставляемого клиенту, поменялась и вероятнее всего, если повторно выполнить RPC то ошибки уже не будет, но вот вопрос: а насколько валидны вычисления, сделанные в текущей транзакции до возникновения этой ошибки? И здесь беда в том, что никто не знает, т.е.: - БД при обновлении хранимых процедур просто пометила, что у них реализация поменялась, и выкидывает ошибку - драйвер БД не уполномочен принимать решение о повторе RPC и поэтому делегирует решение клиенту (жава-приложению) и по хорошему здесь следует откатить транзакцию и повторить все вычисления заново (это ровно то, что все остальные фреймворки и делают, видимо за исключением MyBatis), однако тут возникаете вы с крамольной идеей, что можно перехватить вызов конкретного RPC и в случае довольно общей ошибки повторить, ну извините, раз этот RPC ваш и обладает свойством идемпотентности, а жава-приложение уже успело получить соединение, то и реализуйте повтор операций у себя, а не тащите его на клиента, т.е. не стоит размазывать крайне сомнительные решения по всему проекту - держите их в одном месте. Теперь давайте разберем то, чем вы гордитесь... andrey_anonymous стоило разово 2.5 часа времени разработчика + доставило мне несколько минут искреннего смеха в процессе чтения Ваших комментариев andrey_anonymous Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
- во-первых, два с половиной часа для более-менее серьезной системы - это как-то мало, я бы только недели 2 писал бы интеграционные тесты - во-вторых, утверждение сделанное в приведенном коде примерно звучит так (здесь я понимаю что у вас с пониманием написанного возникают определенные затруднения): если второе исключение в цепочке исключений является исключением, связанным с обращением к БД, и в тексте этого исключения есть "ORA-04068", то повторить RPC. Проблема здесь в том, что подобный подход к решению проблемы разваливается при малейших изменениях как со стороны жава-кода, так и со стороны изменений в хранимых процедурах, например завтра в MyBatis решили добавить логирование вызовов, и исключение стало в цепочке уже не вторым, а третьим, или поменяли вы код на PL/SQL и ORA-04068 стало прилетать не от проблемной процедуры, а от совсем другой, или самой первой ошибкой была не ORA-04068, а какая-то другая. Вообщем код на самом деле так себе, а учитывая вот это: andrey_anonymous На ближайшем code review "гений", сотворивший эту пакость, получит по шапке. Я как-то удивлен, что для PL/SQL у вас ревью кода есть, а для жавы - нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 05:26 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Андрей Панфилов, автор- БД при обновлении хранимых процедур просто пометила, что у них реализация поменялась, и выкидывает ошибку - драйвер БД не уполномочен принимать решение о повторе RPC и поэтому делегирует решение клиенту (жава-приложению) +1 Кроме того, насколько понял, оракле выбрасывает эту ошибку в самом конце proc call при передаче управления клиенту. На этом уровне у него нет полной информации и затрагиваются совершенно другие пакеты в сессии. "не надо править за два часа. Надо за две недели" - вполне хороший слоган) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 07:07 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
ТС, вы профи в бд. Почему даже не для себя а для нас тут, замалчиваете подробности вашей системы. Вашего контекста. - какой размер пула? - сколько активных сессий всего, так как только из за них ошибка? Только тех сессий которые тронули меняемый пакет. - почему не пошли по пути как тут авторА еще в большей части пакетов вообще удалось отказаться от глобальных переменных. В итоге теперь накатывание такого тела пакета вообще не приводит ни к каким последствиям типа ORA-04068. 22321827 ? То что пакеты не особо нужны при трехзвенке мы опустим. Не отвлекаемся. Вы в гостях. Будьте вежливы и делитесь информацией. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 07:19 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Как данные подробности влияют на вопрос затронутый в Subj ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 09:34 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Андрей Панфилов а насколько валидны вычисления, сделанные в текущей транзакции до возникновения этой ошибки? andrey_anonymous PetroNotC Sharp Вы гарантируете что банковская транзакция не сломается? Гарантирую. Сейчас вообще в моде девопс и накат изменений без перерыва сервиса. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 09:41 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev PetroNotC Sharp Как данные подробности влияют на вопрос затронутый в Subj ? Не? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 09:45 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Разве пул нельзя переинициализировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 09:48 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Повторюсь, на мой взгляд, у пробы минимум 3-и уровня и соответственно, на каждом из этих уровней проблема может решаться. 1. Организация/методика наката патчей. Если DevOps решил менять пакеты при работающем приложении и считает, что это безопасно - пусть и добивается решения проблемы на уровне своих скриптов. (средствами Oracle, тормозит app часть и сбрасывает пулы в ноль и так далее) 2. Не очень корректная работа с пулом При получении/отдачи соединения в пул, в соединение остаются чужие данные (в пакетах). По хорошему, их нужно было бы после себя очищаться. (хотя бы с точки зрения безопасности/конфиденциальности данных) 3. Программное решение. Обработка таких ситуаций в коде Как решать на конкретном проекте - наверное с проекта виднее. Решение попахивает костыльностью, но это и так всем понятно. Но не видел ни одного реального проекта, собранного без использования костылей и палок. Если на Вашем проекте Вы такого не знаете, значит, Вы плохо знаете свой проект ))) IMHO Как пример палок под серверными: Один заказчик после покупки 100500 техники, заказал аудит серверной. Ответ был, что вес очень большой, пол может не выдержать, здание на такую нагрузку не рассчитано, нужно укрепить пол (поставить снизу колонну, пол/потолок подпереть). Объявили тендер. Подрядчик установил колонну. Колонная хорошая - прочная. Только поставили ее.... (тут играют фанвара)... прямо поверх фальш-пола (лопата) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 10:01 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Согласен. Также согласен что везде есть костыли. Я например, не стесняюсь костыль назвать костылем если просят)) Вариант с погасить и "постучаться дважды" он тупой и неинтересный. Это индусский костыль. Мне лично интересны два вопроса - прав ли чел выше что можно решить без java - "как вам Илон Маск" решение с обнулением пула в связи с техническими работами. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 10:13 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
И по последней части, т.е. собственно повтор операции. Так же уже сказали, что опять таки возможно несколько уровней 1. На уровне транзакций на app сервере. Например, если это REST Full (без состояния) и запросы это HTTP-вызов, то просто повторяем вызов сервиса. (возможно даже ngnx этому обучить можно, на одном из пред. проекте переповторами занимался ровно балансировщих нагрузки) 2. На уровне транзакций СУБД Откатываем всю транзакцию, повторяем 3. На уровне statement СУБД ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 10:14 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp ... - "как вам Илон Маск" решение с обнулением пула в связи с техническими работами. Тут же не просто обнуление ПОСЛЕ технических работ. Как я понимаю, топик стартер хочет что бы не было ошибок ВО ВРЕМЯ технических работ. Т.ч. обнуление после не поможет. Я бы сказал, что по хорошему: нужно бить систему на мелкие модули (что бы при накатах небольших изменений не останавливать всю инфраструктуру), приостанавливать обновляемый модуль, быстро проводить накат изменений, возобновлять работу приостановленного модуля. Но "сейчас вообще в моде девопс и накат изменений без перерыва сервиса." ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 10:19 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, >Тут же не просто обнуление ПОСЛЕ технических работ. Как я понимаю, топик стартер хочет что бы не было ошибок ВО ВРЕМЯ технических работ. Т.ч. обнуление после не поможет. = -1 Обнуление не после работ. Выше давал юз кейс. Маша зашла и тронула пакет. Он оказался в кеше а коннект в пуле живой до вечера. Вечером ваня тронул пакет а он не бъет с тем из кеша. Получил райзе. Дак вот админ в обед накатывая изменения должен рестартануть пул. Всё! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 10:27 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Если ваше "во время" это время наката скриптов. То на боевой системе так делать без зеркала вообще дикость. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 10:31 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Второй вариант. Мне кажется есть такая галка в пуле. Перед накатом скриптов выставить время жизни в пуле соединений равное минуте. Потом ждать пока длинный коннект не освободится)). Все живут на минутных соединениях. Потом вернуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 10:45 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Если ваше "во время" это время наката скриптов. Ну по крайне мере я так понял топик стартера. "сейчас вообще в моде девопс и накат изменений без перерыва сервиса." Вашей категоричности, что дикость - не разделяю ))) но да, несколько странное и рискованное решение IMHO Пусть остается на совести того, кто такое решение принял. Тут некоторые считают, что за критику архитекторов программисты должны заявления об увольнении писать 22321029 . Т.ч. опасная тема, по опасности приближается к миганию фонариками под подушкой (уголовно наказуемое в РФ деяние). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 10:49 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp равное минуте Эту минуту клиенты будут получать ошибку. Т.ч. "сейчас вообще в моде девопс и накат изменений без перерыва сервиса." не получится По хорошему нужно тормозить (pause) службы на время наката. IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 10:52 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Ну и вы говорили про долности вокруг СУБД Есть кроме Elic еще профи в ветке - Ааз АазОба правы, ибо не фиг непредсказуемое навешивать. - Разработчик на своей девелоперской БД (например, очень недавний бэкап промышленной) отладил скрипт. - DBA на тестовой (куда девелоперам доступа нет) тупо запустил скрипт и проверил отсутствие ошибок. Запустил туда админа приложения для проверки функционала - запланировали downtime или ограниченную доступность сервисов. DBA подготовил возможность отката (standby с задержкой наката redo подойтёт). - В момент Ч DBA прогнал проверенный скрипт и пустил админа приложения проверить основной функционал. Если ОК - пущаем в продакшн. Если не Ок, откатываемся на запасные путя и предоставляем начальству удовольствие оттрахать разработчика или администратора приложений (по выбору). Всего Неужели все изменилось? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 10:54 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, >сейчас вообще в моде девопс = угу. Профи мельчают просто. Разработчик бд пишет пакеты без состояния и не имеет зеркала. Конечно скушно будет. Писать то что? Пакетировать select в пачку? )) А че мы тут с сервисами мучаемся если организация не может его рестартануть? Микросервис тоже через try гасить будем? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 10:59 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev ... Тут некоторые считают, что за критику архитекторов программисты должны заявления об увольнении писать .... Что за мода передергивать. Код-то кто писать будет, если программистам разрешить заявление об увольнении писать? Вы не передергивайте пожалуйста. А дела обстоят так: Программист должен безусловно жестко наказываться за - любую попытку думать, в том числе: - желание писать или оптимизировать код с любой точки зрения, не описанной в "стандартных правилах" - любую форму борьбы за производительность - любые формы личного "творческого велосипедостроения", выражающиеся, например, в отказе от предписанного использования вмененных библиотек. И не его собачье дело, если архитектор зависимости в проект с полинтернета собирает. Вот и все, а вы ещё собираетесь увольнение разрешить... Наказать выговором с записью в трудовую и лишить премии/надбавки, вот и всё. Копать-то от забора до рассвета кто будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 11:01 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby, Полностью не согласен. Все что Вы перечислили, можно описать одной фразой: - Следовать стандартам разработки, принятым на проекте Соответствие кода стандартам разработки (писанным и не писанным) обычно выясняется на коде ревью и последующей meeting'е. IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 11:18 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby, Это вообще большая тема. Прогер ведь тоже делится на кодировщика и программиста)) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 11:24 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Остался пустяк. Спрашивать всех вопрошающих их роль на проекте. Я думаю - потеряем всех мемберов тогда ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 11:30 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby Копать-то от забора до рассвета кто будет? Самый эпичные ТЗ на разработку, которые я видел: - Нам в системе не хватает 400 полей, но мы не знаем, какие именно было реализовано !!! программиста взяли на испытательный срок и он боялся написать консультантам отписку предыдущих программистов "мы не против добавить 400 полей, но напишите, какие именно полей не хватает, мы их добавим" - Нам нужна ф-ция массового удаления всех выставленных счетов за год. Пользователи руками (!) выставляют счета на год вперед (!), в конце года их невозможно удалить (разумеется, т.к. периоды закрыты, документы отданы в налоговую). Нужно реализовать массовое удаление. на отписку программистов "объясните, занафига пользователи так делают?" в течении 3-х (!!!) лет, аналитики ответить не сумели. Задача была не реализовано (т.к. гениальные программисты на испытательном сроке уже закончились) P.S. Т.з. приведены почти ДОСЛОВНО. Примерно так и звучали на совещании с участием директоров фирмы. И таки да... первое ТЗ было даже успешно реализовано, всем понравилось и внедрено в продакшен.... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 11:34 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp booby, Это вообще большая тема. Прогер ведь тоже делится на кодировщика и программиста)) ой, вот вы и "прокололись". Программист - по определению кодировщик. Программист и кодировщик - это слова синонимы. Нельзя получить высшего образования с записью в дипломе "программист", а диплом техникума с таким словом внутри - можно. "Делятся" люди на разработчиков и программистов. Кодировщик - уничижительное имя программисту, а прогер, это такой кодировщик, который точно знает, что и кодировать-то он, толком, - тоже не умеет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 11:41 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
p.p.s. забыл еще одно Т.З. (нормальное!) Повагонный учет в OeBS на Ижорском Трубном Заводе там просто подошел менеджер проекта, рассказал в чем проблема, пока рассказывал, для наглядности рисовал на листе бумаги: домики (завод) паровозики светофорики (станции) до кучи рельсы и прочее (к т.з. не относились, но паровозик на пустом листе не эстетично) На мои слова, что я программист и без Md.50 не могу ничего сделать, т.к. нужно зарегистрировать MD.50 у начальника отдела разработки, получить номер, списать на него время в таймшите. Сделал просто: на рисунке написал Md.50 и поставил свою подпись. Он же менеджер проекта ))) Md.50 готов, можно время в таймшитах списывать ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 11:42 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby Нельзя получить высшего образования с записью в дипломе "программист", а диплом техникума с таким словом внутри - можно. Как хорошо, что у меня нет ни первого, ни второго ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 11:43 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev booby Копать-то от забора до рассвета кто будет? Самый эпичные ТЗ на разработку, которые я видел: - Нам в системе не хватает 400 полей, но мы не знаем, какие именно было реализовано !!! программиста взяли на испытательный срок и он боялся написать консультантам отписку предыдущих программистов "мы не против добавить 400 полей, но напишите, какие именно полей не хватает, мы их добавим" Это - нормальное ТЗ. Возможно фраза была просто стенографирована буквально. В дата-аналитике никакой чел не помнит названия всех полей. Да и названия у них : 123 ... e.t.c. Типа список уточняется. Но их будет порядка столько-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 11:44 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev ... всем понравилось и внедрено в продакшен.... Вот именно, а вы говорите думать. Сказано нарисовать три синих линии красным цветом - вперед, иди и рисуй. Невозможно же, даже из показного уважения, терпеть попытки думать на ясно выраженной задачей. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 11:49 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
mayton Это - нормальное ТЗ. Возможно фраза была просто стенографирована буквально. В дата-аналитике никакой чел не помнит названия всех полей. Да и названия у них : 123 ... e.t.c. Типа список уточняется. Но их будет порядка столько-то. Что значит фраза? Что значит стенографирована? Это Т.З. Все Т.З. Дословно. mayton В дата-аналитике никакой чел не помнит названия всех полей нельзя помнить того, чего нет mayton Типа список уточняется. Но их будет порядка столько-то. Ну да... в лучших традициях анал итиков... Проблема только в том, что задача для программистов была мною ДОСЛОВНО озвучена выше. На момент, когда я в течении полугода эту задачу НЕ делал, в этом списке (который возможно кем-то уточняется) так и ни одного поля не появилось. Потом задачу передали новому сотруднику, не делать он побоялся (испытательный срок) и ее сделал ))) Хорошо это было для проекта или не очень - вопрос спорный (в любом случае, это не помогло). По второй задаче, ответ на вопрос "а нафига пользователи так делают?" не был получен в течении 3 (ТРЕХ) лет. Проект закончился, фирма была уничтожена, деньги поделены, но ответа на данный вопрос так и не последовало и задача так и не была реализована (т.к. злобные программисты, без ответа на данный вопрос, делать отказывались). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 11:57 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, я понял твоё беспокойство. Но с неполными ТЗ я имею дело каждый день. Обычно бизнес пишет userStory где буквально "Я хочу птичьего молока". Далее бизнес-аналитик с нашей стороны обсуждает сорта этого молока и птиц с которых он его хотел-бы получить. Возможно в твоём сегменте хотят полное и точное ТЗ и сразу... но это не всегда возможно. Система живет своей жизнью и пока ТЗ созревает ... и система меняется и султан может помереть. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 12:06 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
mayton, offtop, т.ч. под спойлером mayton Далее бизнес-аналитик с нашей стороны обсуждает сорта этого молока и птиц с которых он его хотел-бы получить. не спорю mayton Возможно в твоём сегменте хотят полное и точное ТЗ и сразу... но это не всегда возможно. вопрос к аналитику "занафига пользователь так делают?" есть "полное и точное ТЗ и сразу" ? вопросы вида "как поступать, если данный счет попал в книгу покупок продаж, а книга уже была передана в налоговую" не задавали. Бог с ним с книгой, налоговой... это проблемы заказчика... Нам просто интересно знать: занафига пользователи руками (!) вводять счета на год вперед (!) что бы их потом удалять. У нас было подозрение ))), что нужно просто на компьютеры пользователей поставить LINES (игрушка такая, килобайт 100 занимает) * и пользователям есть чем заняться (это все таки более веселое занятие чем счета на год вперед заводить) * и нам хорошо (ничего делать не надо). Мы, в отличие от пользователя, чем занять себя на рабочем месте - и так знали. p.s. подозреваю пользователи не идиоты, и действительно это было нужно. Только вот вопросы "что именно нужно пользователю и занафига они это делают через ж...." это не отменяет. Может их нужно научить это делать правильно. Может нужно систему поменять (возможно правильный ф-ционал просто не работает). Но политика фирмы была, что с пользователями могут общаться только анал итики. У программистов доступа на территорию заказчика физически не было. Если гланды плохо лечатся через жопу (огурец не пролезает).... нужно увеличить размер жопы.... Л - логика. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 12:22 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev .. злобные программисты, без ответа на данный вопрос, делать отказывались .. у меня такое впечатление, что вы несколько плоско разглядываете картинку. Программирование это что - просто профессия (на чём настаивал Дейкстра) или, специфически - ремесло (именно на этом делает активный и с ударением упор Степанов) Если ремесло, то именно у ремесленника есть не просто право, а обязанность думать. И право не брать заказ к исполнению. Leonid Kudryavtsev Ну да... в лучших традициях аналитиков... Вот именно у ремесленников, как правило, никаких "аналитиков" и нет. Они обычно сами себе "аналитики". А когда к тебе аналитика приставили, значит, парень, ты попал - в промышленность . Да, у тебя есть "профессия", как у водителя кобылы. И дело твое - кодировать направление её движения. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 12:24 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev p.p.s. забыл еще одно Т.З. (нормальное!) Повагонный учет в OeBS на Ижорском Трубном Заводе там просто подошел менеджер проекта, рассказал в чем проблема, пока рассказывал, для наглядности рисовал на листе бумаги: домики (завод) паровозики светофорики (станции) до кучи рельсы и прочее (к т.з. не относились, но паровозик на пустом листе не эстетично) На мои слова, что я программист и без Md.50 не могу ничего сделать, т.к. нужно зарегистрировать MD.50 у начальника отдела разработки, получить номер, списать на него время в таймшите. Сделал просто: на рисунке написал Md.50 и поставил свою подпись. Он же менеджер проекта ))) Md.50 готов, можно время в таймшитах списывать ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 12:24 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby, Программирование это _пока_ искусство. И кодировщик это просто чел не умеющий писать без разжевывания. Сеньор уже должен сам писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 12:27 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Андрей Панфилов Андрей, вы в том топике дали профессиональный ответ, я вас отблагодарил, а здесь вы по какой-то причине всеми силами пытаетесь увернуться от точно такого же профессионального ответа. Конкретно в этом форуме у участников кругозор несколько шире, ввиду того что постоянно приходится работать с разными системами, поэтому юродствуете вы совершенно зря. Спасибо за профессиональные ответы, Андрей. Просто поверьте, Ваш вопрос в том топике столь же легко было профессионально заболтать до полной невменяемости, объявить Вас юродствующим, рассказать о недостаточном кругозоре. Еще порекомендовать решать такие проблемы на клиенте и с пеной у рта доказывать, что ежели проблема у приложения - то пусть оно само их и решает. А можно поступить так, как поступили коллеги здесь и я там: просто показать, как именно можно поступить, если хоть на минуту предположить, что ТС не совсем дебил, а "странное желание писать сомнительный код" имеет под собой основания отличные от "хочу". Надеюсь, аналогия достаточно прозрачна. Андрей Панфилов ...узнаете, что существует потенциальная возможность избежать проблем, однако стоимость "правильного решения" слишком высока (трудозатраты, злой заказчик, который хочет вчера, возможно стоимость лицензий и пр.), ну и в итоге вы оказываетесь на этом форуме с вопросом какбы в жаве побыстрому нагородить костылей... Я не вижу в использовании штатного для применяемого фреймворка подхода особой костыльности. Кроме того, я не вижу и необходимости палить из пушек по воробьям. Андрей Панфилов Вот есть ошибка: Код: plaintext 1.
Хотя этот вопрос и выходил за рамки дискуссии, я, как мне кажется, осветил его достаточно подробно, вплоть до демо, которое можно воспроизвести, поставить собственные эксперименты и даже - обратите внимание - показать неучу, как можно убрать из демо-пакета переменные, исключив 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.05.2021, 12:28 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
mayton Обычно бизнес пишет userStory где буквально "Я хочу птичьего молока". Далее бизнес-аналитик с нашей стороны обсуждает сорта этого молока и птиц с которых он его хотел-бы получить.... Просто, если жестко подходить с точки зрения должностной инструкции - пользователи озвучивают userStore "я хочу птичьего молока" - дальше, бизнес аналитик пишет ТЗ "взять кусок говно, полить сверху белой краской, упаковать как конфеты" - приносит ТЗ программистам у программистов, блин, целый шкаф в отделе завален и птичьем молоком, и вискарем, и даже самбука есть. но вот проблема: говна нет и где его (и кто) будет брать не очень понятно. Где - понятно, но кто согласится этой работой заниматься - не понятно а водоимулсионной краски вообще нет, это нужно брать у начальства деньги, бежать в соседний магазин. Тут же закрадывается подозрение. А соответствует ли ТЗ исходному userStrore p.s. Насколько я помню MD.50 по AIM начинается с пункта "краткое описание бизнес-процесс и проблема из-за которой данное Т.З. составляется" Но вот в российских Т.З. оно часто отсутствует как класс. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 12:32 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp booby, Программирование это _пока_ искусство. ... осовремененное использование терминов искажает их смысл. Если оно искусство, тогда программирование - это деятельность без ясно выраженной цели, не только достоинства, но и смысл которого интерпретирует сторонний наблюдатель. У художника может не быть цели продать картину, и в любом случае, не может быть цели создать фабрику эстампов. Ознакомьтесь с тем, что такое шедевр https://ru.wikipedia.org/wiki/Шедевр Шедевр - это предмет, то, что кандидат на городскую бумагу, дающему ему право работать в данном городе в качестве мастера, должен продемонстрировать городской ремесленной комиссии на специальном экзамене приема в гильдию городских ремесленников. Кубок там золотой/серебряный, модель здания или иное его ремеслу подходящее деяние. Если комиссия признает, что продемонстрированное - шедевр, то человек - мастер. А что происходит в данном топике - человек приносит "шедевр", вы говорите - ты не мастер. И получаете вполне промышленный ответ - я и не спрашивал у вас, мастер я или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 12:54 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby Шедевр - это предмет, то, что кандидат на городскую бумагу, дающему ему право работать в данном городе в качестве мастера, должен продемонстрировать городской ремесленной комиссии на специальном экзамене приема в гильдию городских ремесленников. Обратите внимание, в гильдию ремесленников . Программирование - ремесло , которое за последние десятилетия потихонечку переходит в разряд промышленности . Для чего обзаводится характерными атрибутами - широкая стандартизация технологий и методов управления, снижение требований к квалификации рабочей силы, анонимизация конкретных работников, создающих продукцию. Переход можно будет считать завершенным, когда мелкие коллективы уникальных специалистов будут заниматься преимущественно "элитным тюнингом" продукции крупных корпораций. И да, мастер на производстве - это должность, на которую назначают, а не статус, который признают. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:05 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, Как вы любите болтать то))) авторХотя этот вопрос и выходил за рамки дискуссии, я, как мне кажется, осветил его достаточно подробно, вплоть до демо, которое можно воспроизвести, поставить собственные эксперименты и даже - обратите внимание - показать неучу, как можно убрать из демо-пакета переменные, исключив 4068 ;) Не знаю как еще можно донести реальное положение дел до коллег, не готовых спуститься со своих Эмпиреев до жалких фактов "на земле", с этих самых Эмпиреев, по всей видимости, не различимых. Покажите коротко решениеБ чисто на PL и почему вы его не приняли а пошли по решениюА ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:10 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp и почему вы его не приняли а пошли по решениюА ? 4068 - не ошибка прикладного кода PL/SQL, а исключение на уровне инфраструктуры. Его сложно обрабатывать изнутри PL-машины, да и ни к чему. Посмотрите Вами же приведенную ссылку внимательно и ответ станет понятен даже Вам. Надеюсь, по крайне мере. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:14 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby, Причем тут максимализм про шедевры и нобелевки? Чел может заниматься искусством без шедевров. Конечно цель не СТАНДАРТИЗИРУЕМА и Не ФОРМАЛИЗОВАНА. Если формализуете ТЗ по ГОСТ, то можно и кодировщика нанять. Однако все любят синьоров которые Самостоятельно решают НЕФОРМАЛИЗОВАННЫЕ задачи ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:14 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, Вы опять не поняли? В третий раз? Чел из ветки оракле написал что УСТРАНИЛ ВОЗНИКНОВЕНИЕ ошибки только лишь убрав переменные (состояние). — он прав? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:17 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp все любят синьоров которые Самостоятельно решают НЕФОРМАЛИЗОВАННЫЕ задачи ...в ремесленных лавках - да. В компаниях же, склонных к промышленному программированию, такого самодеятельного "синьора" скорее всего призовут к порядку, в частности - попросят оформить и согласовать проектную документацию, для чего задачу придется формализовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:18 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby А когда к тебе аналитика приставили, значит, парень, ты попал - в промышленность . Промышленность - выпускает серийные изделия. Программирование, за очень редким исключением, - нет Тогда это НИОКР, опытный образец, шедевр (в средневековье) andrey_anonymous ...которое за последние десятилетия потихонечку переходит в разряд промышленности ... IMHO утопия. Утопичность которой последними десятилетиями и доказана. Не дословно, но где-то в 90-х годах Вирт на какой-то из конференции высказался "вот собрались мы тут теоретики от программирования, в течении последних десятилетий разрабатывали/разрабатывали, придумывали/придумывали. А статистика такова, что производительность труда при разработке микросхем (сложность микросхем) возросла в сотни-тысячи раз. А производительность программистов на ... процентов. И нафига мы все это придумывали? И хорошо бы подумать, а толи вообще мы придумывали, что нужно...". Не дословно. Но смысл был примерно такой. Где-то середина/конец 90-х. А "в разряд промышленности" программирование переходит наверное с начала 80-х, а скорее всего и раньше. Прошло еще пара десятилетий.... а все так же.... переходит IMHO p.s. про производительно труда вообще молчу. В 90-ые полноценный учет один человек с нуля за год делал на FoxPro. Сейчас: программист БД, программист бакэнд, программист фронтэнд, аналитик, бизнес консультант, архитектор, менеджер, секретарша менеджера.... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:18 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, >Коллега PetroNotC Sharp, не разобравшись = отвечу в вашем стиле. Вам конкртно тоже надо ставить чОткое ТЗ. А то впендюриваете код.... не разобравшись и впопыхах. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:21 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Чел из ветки оракле написал что УСТАНИЛ ВОЗНИКНОВЕНИЕ ошибки только лишь убрав переменные (состояние). — он прав? Вы крайне избирательно читаете. Там много всего понаписано. Давайте я так переформулирую полюбившийся Вам подход: чтобы не получать штрафы за нарушение ПДД, надо перестать ездить на автомобиле. В принципе, не возражаю - можете пользоваться общественным транспортом. Но это решение не панацея, поскольку подходит не всем и не всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:22 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, Вы тут пишите опусы в 10 раз больше. Учитесь у соседей с бд ветки ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:25 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous PetroNotC Sharp Чел из ветки оракле написал что УСТАНИЛ ВОЗНИКНОВЕНИЕ ошибки только лишь убрав переменные (состояние). — он прав? Вы крайне избирательно читаете. Там много всего понаписано. Давайте я так переформулирую полюбившийся Вам подход: чтобы не получать штрафы за нарушение ПДД, надо перестать ездить на автомобиле. В принципе, не возражаю - можете пользоваться общественным транспортом. Но это решение не панацея, поскольку подходит не всем и не всегда . Весь пост со смыслом в последней строке? Вы решаете в публичном форуме ДАЖЕ НЕ ОЗВУЧИВ РЕШЕНИЕ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:27 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous 4068 - не ошибка прикладного кода PL/SQL, а исключение на уровне инфраструктуры. Спорно. Очень спорно. Так же как и термин "это warning" Да, это не ошибка прикладного кода. Но и No_Data_Found тоже не ошибка кода. Как и любое исключение БД, оно просто значит, что по каким-то причинам корректный результат получить невозможно. Можно бороться с последствиями ошибки, можно попытаться устранить причину ошибки. Можно решать программно (добавить логики в прикладной код), можно решать организационно (для 4068 требовать, что бы патчи не накатывались при работающей системе, для No_Data_Found требовать, что бы обязательные для расчета данные не забывали вводить в систему, написать инструкцию, сделать поля обязательными и т.д.) Как именно стоить делать в конкретном случае, на проекте должно быть виднее. IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:28 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
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.05.2021, 13:30 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, У него терминология хромает. Бывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:31 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev booby А когда к тебе аналитика приставили, значит, парень, ты попал - в промышленность . Промышленность - выпускает серийные изделия. Программирование, за очень редким исключением, - нет Современные корпорации выпускают тиражируемые решения. Самый базовый уровень - стандартизованы и промышленно выпускаются инфраструктурные компоненты (ОС, СУБД, App-сервера). Более-менее освоен промышленный выпуск "станков" (т.н. "платформ" разработки/интеграции) и идет активное становление промышленного производства прикладных систем. Leonid Kudryavtsev ...А "в разряд промышленности" программирование переходит наверное с начала 80-х, а скорее всего и раньше. Прошло еще пара десятилетий.... а все так же.... переходит Ремесленники промышленниками стали далеко не за 30 лет. Дайте срок. Leonid Kudryavtsev Сейчас: программист БД, программист бакэнд, программист фронтэнд, аналитик, бизнес консультант, архитектор, менеджер, секретарша менеджера.... Это как раз признак пром. производства. Узкая специализация и конвейеризация процесса + штат управляющего персонала, ручки не пачкающего. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:31 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby Нельзя получить высшего образования с записью в дипломе "программист". Как так? А у меня написано :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:32 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev andrey_anonymous 4068 - не ошибка прикладного кода PL/SQL, а исключение на уровне инфраструктуры. Да, это не ошибка прикладного кода. Но и No_Data_Found тоже не ошибка кода. Как и любое исключение БД, оно просто значит, что по каким-то причинам корректный результат получить невозможно. No_data_found - тоже не ошибка, а исключение. На этом общность заканчивается, поскольку No_data_found непосредственно связана с серверным кодом и данными, в то время как 4068 и 3113 - с технологическими процессами, от кода не зависящими. Вся разница в деталях - конкретных причинах, по которым что-то пошло не так, как предполагает основной поток операций. Если эти причины не разделять и искать столь же общее решение - Вас ждет неизбежный fail. И да, на проекте виднее. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:37 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, No_Data_Found хороший пример. Каждый сам решал что с этим делать)) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:41 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous Leonid Kudryavtsev пропущено... Да, это не ошибка прикладного кода. Но и No_Data_Found тоже не ошибка кода. Как и любое исключение БД, оно просто значит, что по каким-то причинам корректный результат получить невозможно. No_data_found - тоже не ошибка, а исключение. На этом общность заканчивается, поскольку No_data_found непосредственно связана с серверным кодом и данными, в то время как 4068 и 3113 - с технологическими процессами, от кода не зависящими. Вся разница в деталях - конкретных причинах, по которым что-то пошло не так, как предполагает основной поток операций. Если эти причины не разделять и искать столь же общее решение - Вас ждет неизбежный fail. И да, на проекте виднее. По определению. Работа такая. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:44 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous Современные корпорации выпускают тиражируемые решения. IMHO как я думаю, за точность не отвечаю Программисты - выпускают опытный образец , release Тиражируют решения, инсталируют у пользователей, уже совершенно другие люди. Труда программистов в тиражировании - ноль Туполев разработал самолет. Результат его работы набор чертежей, описание процесса производста, что-то еще. Но ОДНА штука. Может еще пару опытных образцов собрали - это НИОКР тиражируемые решения, самолеты - выпускают совсем другие люди. Это промышленность. andrey_anonymous и идет активное становление промышленного производства прикладных систем. На мой взгляд, IMHO, в последние пару десятилетий, процесс который идет в средствах разработки ПО (подфорум Java ))) ), можно назвать и как "активное становление" и как "активная деградация". Как не парадоксально, оба этих термина полностью подходят. Причем одновременно. andrey_anonymous Это как раз признак пром. производства. Узкая специализация и конвейеризация процесса + штат управляющего персонала, ручки не пачкающего. Да пофиг на признаки. Результат где? Есть ли заметный рост производительности труда при написании реальных систем? Заметный - в разы, в десятки раз. Cложность систем увеличилась? Бухгалтерские правила и деятельность бизнеса изменилась не настолько сильно...отчего внезапно сложность программ то увеличилась? Объем обрабатываемых данных за сложность не стоит выдавать. Тут уж больше коллеги из микроэлектроники помогли. Вот там да, производительность труда при разработки микросхем выросла на порядки. От чего Вирт в 90-ые и расстраивался. Два связанных направления. Hard, soft. В одном - производительность труда растет на порядки, во втором - проценты.... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:47 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
авторв то время как 4068 и 3113 - с технологическими процессами, от кода не зависящими. Мы не хотим привязываться к твое затычке типо повторно постучи дважды))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:47 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp ... Чел может заниматься искусством без шедевров. ... современным - безусловно, а в несовременном и понятия такого не было - шедевр от ремесленников пришел. Приколотил гвоздями собственную мошонку к парижской брусчатке - вот тебе и акт искусства. И тем, более, при наличии тик-тока, ни гвоздей, ни Парижу не требуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 14:04 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp авторв то время как 4068 и 3113 - с технологическими процессами, от кода не зависящими. Мы не хотим привязываться к твое затычке типо повторно постучи дважды))))) Ок, я не навязываю. Не хотите реагировать на конкретное исключение так, как предписывает вендор - Ваше право. Откатывайте транзакции, покупайте сервера и морочьте голову админам. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 14:09 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Про приколотил - опасная тема. Но то, что это был "акт" вряд ли кто будет спорить. Насколько это искусство - думаю это обсуждение можно/нужно оставить потомках ))) С точки зрения актов и искусства, можно взять реальный пример: черный квадрат Малевича. Насколько я помню, в свое время, это был ровно такой же "акт". Мелавич боролся/насмехался над современными ему течениями в живописи. Поэтому на очередную выставку просто взял и вместо картины нарисовал черный квадрат. Во сколько долларов его бы оценили на современных аукционах живописи - не знаю ))) p.s. не являюсь специалистом по Малевичу, т.ч. лучше читать книжки. p.p.s. google уверяет: "Согласно Sotheby's, стоимость картины на сегодняшний день оценивается в 20 миллионов долларов. "Черный квадрат" находится в музее и не продается, но если говорить гипотетически о любой другой картине, то ее оценочная стоимость зависит от многих причин" ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 14:15 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Цена на предметы исскусства отражает лишь "желание купить". ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 14:26 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Программирование это _пока_ искусство. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 14:33 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
mayton Цена на предметы исскусства отражает лишь "желание купить". У меня дома не очень много, но есть какое-то кол-во макулатуры. Я бы продал. Проблема лишь в "желание купить". Какие-то вырванные страницы из книг с парой слов на полях рукой Достоевского - покупают. А вот на мусор который у меня на работе на столе валяется - желающих нет ))) Более менее был знаком с ситуацией в мире живописцев (на начало 2000-х). Профессия "художник" - есть/была только в одной стране мира. СССР. Во всех остальных странах, такой профессии нет. Как класса. Художник это хобби. В СССР, да, это была профессия и организация "союз художников", где эти самые художники получали зарплату. Как я понимаю, в начале XX века тоже такой профессии как художник не было, были лица "свободных профессий" Могу ошибаться. Лучше смотреть профильную литературу. p.s. вырванная цитата из инете "К лицам свободных профессий относят, обыкновенно, учителей, врачей, музыкантов, актеров и инженеров." (начало XX века) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 14:35 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, >Откатывайте транзакции, покупайте сервера и морочьте голову админам. = все то что вы не приняли как варианты решений надо запугать!))) Вы так и боитесь назвать эти решения. Ширше смотрите - PL изменения - выкинуть пакеты - рестарт пула - зеркало и балансировщик 24х7 - тех окно - клиент умеющий перезагружаться а ля интернет эксплорер .. Ну и ваше - погасить ошибку молча ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 14:36 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Ремесло но не удалось загнать в рамки ремесла) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 14:38 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev mayton Цена на предметы исскусства отражает лишь "желание купить". У меня дома не очень много, но есть какое-то кол-во макулатуры. Я бы продал. Проблема лишь в "желание купить". Какие-то вырванные страницы из книг с парой слов на полях рукой Достоевского - покупают. А вот на мусор который у меня на работе на столе валяется - желающих нет ))) Я был свидетелем того как совершенно бесполезный хлам из старых вещей, будучи выложенным на аукционы антикваров - был продан за нормальные деньги. Главное правильно опубликовать и дать аннотацию. Какие-то старые фотки. Значки. Бабушкины облигации гос-займов. Неплохой фильм был "Бархатная бензопила". Там хорошо показано как в мире современного исскусства умеют на пустом месте взвинчивать цены. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 14:40 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov ...Это уже давно ремесло... ммм... с ремеслом дело так стояло - мастер сам решает, кого ему брать в подмастерья, а кого нет. Но если подмастерье хочет стать мастером, у него нет шанса избежать явления шедевра комиссии мастеров (по крайней мере до тех пор, пока город не решил, что сыну мастера являть шедевр не требуется по рождению). В современных условиях входные собеседования, с моей точки зрения по ряду оснований не вполне точно соответствуют такой комиссии. Так что, даже ремеслом оно вполне никогда не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 14:41 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov PetroNotC Sharp Программирование это _пока_ искусство. Если подходить исторически ))) 22322121 Сначало было ремесло. Ткачи, рисователи портретов Потом оно разделилось на: 1. Промышленность. Легкая промышленность 2. Мелкие кооператоры ))). Например фотографы 3. Искусство. Церетели и прочие ))) Т.ч. все как раз наоборот. То, что пока программирование "не удалось загнать", вполне может обозначать, что лет через много, оно будет считаться искусством. Жаль только — жить в эту пору прекрасную. Уж не придется — ни мне, ни тебе ( C ) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 14:43 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Ну и не надо забывать, что даже в легкой промышленности есть и прет-а-порте, и фашион ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 14:47 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Программисты - выпускают опытный образец , release Тиражируют решения, инсталируют у пользователей, уже совершенно другие люди. Труда программистов в тиражировании - ноль Вы делаете неуместные аналогии, но тиражирование в материальном мире - затратный и неординарный процесс, а тиражирование в программном мире - примитивная операция по копированию байтов. Это слегка утрировано, но суть передана верно. Программисты автоматизируют тот или иной процесс и вот именно эта автоматизации является их творением. И пользователям, как и везде, плевать на мастерство творца, если в конкретном изделии творец умудрился накосячить. Даже если этот косяк обусловлен внешними по отношению к творцу причинами. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 14:50 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Если подходить исторически ... С доисторических времён и до эпохи феодализма действовала специализация. А потом люди додумались до системы глубокого разделения труда и специализация оказалась вытеснена в узконишевые области. P.S. Попался мне как-то документальный фильм BBC на канале "Культура". Как раз на моменте, где рассказывали про некоего "капиталиста" (18-й век или даже раньше), который разделил изготовление булавки на девятнадцать(!) элементарных операций. И оказалось, что пока девятнадцать мастеров сделают по одной булавке от начала и до конца, девятнадцать рабочих (даже не подмастерьев) "по одному на операцию" - сделают двести двадцать булавок. На порядок больше. Особо отмечу, что материалы, инструменты и технология - никак не изменились. Изменилась только организация производства. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:02 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Вы так и боитесь Вах баюс-баюс... Смотрим очередной раз: - PL изменения - покажите какие надо сделать изменения на примере приведенных тестовых пакетов. Без конкретных предложений совет бесполезен. - выкинуть - рассматривать надо в комплексе. Включая в скоуп рассмотрения "выкинуть джаву, выкинуть сервер, выкинуть проект, выкинуть сотрудников". Повода для таких "рассмотрений" в настоящее время у меня нет, совет бесполезен. - рестарт пула - не отвечает требованиям непрерывности сервиса, бесполезен. - зеркало и балансировщик 24х7 не решает задачу без существенного объема работ по синхронизации "зеркал" , общего увеличения стоимости проекта и увеличения эксплуатационных расходов. Это примерно как экскаватором огородик вскапывать - теоретически можно, но окружающие будут пальцем у виска крутить. - тех окно - не отвечает требованиям непрерывности сервиса, совет бесполезен - клиент умеющий перезагружаться а ля интернет эксплорер - не решает задачу, поскольку пробема не у клиента, а у бэка. Итоговая ценность озвученных Вами предложений в контексте проекта исчезающе мала. - погасить ошибку молча Во-первых не молча, а с логированием. Во-вторых, именно эта исключительная ситуация требует именно такого решения, потому как:
В третьих, уже разберитесь наконец, чем ошибка отличается от исключения . Это блондинке в бухгалтерии позволительно выражаться в стиле "у меня ошибка вылезает, сделайте что-нибудь". ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:06 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Leonid Kudryavtsev Программисты - выпускают опытный образец , release Тиражируют решения, инсталируют у пользователей, уже совершенно другие люди. Труда программистов в тиражировании - ноль Вы делаете неуместные аналогии, но тиражирование в материальном мире - затратный и неординарный процесс, а тиражирование в программном мире - примитивная операция по копированию байтов. Это слегка утрировано, но суть передана верно. Программисты автоматизируют тот или иной процесс и вот именно эта автоматизации является их творением. И пользователям, как и везде, плевать на мастерство творца, если в конкретном изделии творец умудрился накосячить. Даже если этот косяк обусловлен внешними по отношению к творцу причинами. Если считать, что ИТ уже является промышленностью /не очень понимаю значение данного слова/. То по аналогии с легкой промышленностью ))) есть пред-а-порте: Linux, Tomcat, Apache, Europe Universalis IV и так далее а есть фашион - работа на заказ по индивидуальный заказам, разработка нового Все же, швея в фашион, это совсем не тоже самое, что и швея-мотористка в Иваново ))). Подозреваю, что (википедия о Доминико Дольче): "Отец Доменико — хозяин ателье, мать — управляющая магазином нижнего белья. Доменико окончил колледж в Палермо и институт Марангони в Милане. В начале 80-х годов был принят на работу в ателье Стефано Габбана..." он тоже иголку с ниткой в руках держал, но это все же чуть другое, чем "Стабильная сильная современная фабрика по пошиву детской одежды приглашает на работу швей. Пооперационная работа с трикотажем (невязаным) на деток до 7 лет. Работа у нас - это прекрасная возможность стать частью проверенной современной хорошей компании с достойным доходом! РАБОТАЯ С НАМИ, ВЫ ПОЛУЧАЕТЕ: Своевременную оплату труда от 35 000р;" ну и результат его работы, тоже стоил чуть побольше, чем продукция данного ООО ))) Но истинна где-то посередине. Не бывает программиста-машиниста. Т.к. ни Юргенс из Броншвейга, ни Джон Уайт в программирование еще не родились. То, что на форуме называют промышленность, это максимум мануфактура. Когда ремесленников согнали в один большой сарай и заставили работать под надзором надсмотрщика. Ну еще и качество проверять, что бы продукция более-менее однотипная была. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:10 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous ...использование пакетных переменных ... при использовании пула соединений. Подобное использование пакетных переменных суть bad design и не применяется на практике в моих проектах... Если кидаться словами bad design, то тут все же два фактора: 1. bad design это подобное использование пакетных переменных. 2. Но с такой же правомочностью, можно заявить: bad design это использование пула соединений. Не очень корректная работа с пакетными переменные тут виновата ровно так же , как и не очень корректная работа с пулом. IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:19 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev То, что на форуме называют промышленность, это максимум мануфактура. Когда ремесленников согнали в один большой сарай и заставили работать под надзором надсмотрщика. Ну еще и качество проверять, что бы продукция более-менее однотипная была. 1. Специализация - важный отличительный признак. Её у ремесленников не бывает, даже в сарае. Каждый ремесленник - универсал со склонностью в ту или иную область. Этот признак в наличии, данный топик тому яркий пример. 2. На базе специализации строится разделение труда. 3. Широкая стандартизация - еще один важный признак, отличающий ремесленное производство от промышленного. "Широкая" - значит, что стандарты вводятся не внутри отдельной мануфактуры, а в во всей отрасли и изделия одной мануфактуры начинают худо-бедно стыковаться с изделиями другой. 4. На базе разделения труда и стандартизации снижается стоимость персонала, он становится легко заменяемым - возникает "рынок труда", где можно искать специалистов по формальным критериям. Эти признаки в совокупности говорят, что этап повсеместного мануфактурного производства уже закончился, хотя отдельные мануфактуры еще существуют. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:20 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Как раз в мануфактуре разделение труда уже появилась. Но фабрикой она еще НЕ стала. AFAIK. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:21 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Не очень корректная работа с пакетными переменные тут виновата ровно так же , как и не очень корректная работа с пулом. ??? прошу пардону, не уловил глубину мысли. Использование глобальных переменных для передачи параметров Вы сравниваете с... А с чем, собственно? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:23 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Как раз в мануфактуре разделение труда уже появилась. Но фабрикой она еще НЕ стала. Отличия можете сформулировать? Или согласимся на том, что мануфактура - это фабрика в молодости? Я полагаю, что главное фабричного и промышленного способов производства - в наличии стандартизованного персонала и рынока труда. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:26 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, 22321041 Хотя, с точки зрения секьюрети, наверное лучше не при получении, а при отдачи в пул. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:26 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous Leonid Kudryavtsev Как раз в мануфактуре разделение труда уже появилась. Но фабрикой она еще НЕ стала. Отличия можете сформулировать? Или согласимся на том, что мануфактура - это фабрика в молодости? Нет, это не совсем так. Там какие-то качественные изменения должны происходить. Нужно читать специальную литературы, смотреть какие качества появились. Возможно читать Карла Маркса ))) /я не читал/. Но явно две эти стадии в историографии разделяются. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:28 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, >Программисты автоматизируют тот или иной процесс Да но что является ПРЕДМЕТОМ? Тут тема была на форуме. Как битва титанов "процессный подход..... BPM и иже с ним матерные слова. Не вышло пока Это автоматизировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:31 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev С точки зрения разделения доступа, в самом общем случае, когда с одним пулом работают непонятно кто непонятно как - можно рассмотреть, хоть это и не самый эффективный способ разграничения полномочий. Но опять не понял - это пример некорректной работы с пулом или где? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:32 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, Не пишите много. О том что ошибка решаема в рамках бд сказали на вашей ветке субд. Готовы с ним поспорить? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:34 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev andrey_anonymous, 22321041 Хотя, с точки зрения секьюрети, наверное лучше не при получении, а при отдачи в пул. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:38 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Там какие-то качественные изменения должны происходить. Из качественных - стандартный дешевый персонал и автоматизация. Стандартный персонал вместе с рынком труда в наличии, автоматизация средств производства тоже (IDE, системы управления версиями, системы управления требованиями, системы автоматизации выходного контроля (автотесты), ERP). Есть даже автоматическая доставка новой версии продукта клиенту, чего в классической промышленности нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:38 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous Ремесленник - ручной труд, но человек сам продает свою продукцию и общается с заказчиком Мануфактура, рассеянная мануфактура - это тот же ручной труд при работе на широкий рынок. Ремесленник физически перестает общаться с заказчиком (это функции купца, в программирование менеджер по продажам, аналитики) Фабрика - изобретение станков, механизация труда. Промышленность Дальше не уверен. скорее всего, как следствие, окончательное разделение труда и капитала. Бывшие сотрудники становятся заменяемым пролетариатом, лишенным орудий труда. Наверное как-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:38 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andrey_anonymous, Не пишите много. С Вас пример беру. Еще немного поучусь у профи - и смогу не только "писать много", но еще и делать это, не меняя содержания. PetroNotC Sharp О том что ошибка решаема в рамках бд сказали на вашей ветке субд. Готовы с ним поспорить? Вам показалось, что Вы разобрались в проблеме. Но Вы заблуждаетесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:40 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous стандартный дешевый персонал Утопия. Зайдите в подфорум "работа". Там по поводу "дешевый" холевара больше, чем у нас по поводу пакетных переменных ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:41 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Фабрика - изобретение станков, механизация труда. Промышленность Дальше не уверен. скорее всего, как следствие, окончательное разделение труда и капитала. Бывшие сотрудники становятся заменяемым пролетариатом, лишенным орудий труда. Наверное как-то так. Про станки и механизацию уже выше отписал. Про заменяемый программисто-пролетариат тоже. Осталось про орудия труда. Скажите, а Ваш рабочий набор инструментов (IDE, компиляторы, сервера и рабочая станция) - он кому принадлежит? Leonid Kudryavtsev andrey_anonymous стандартный дешевый персонал по поводу "дешевый" холевара больше, чем у нас по поводу пакетных переменных ))) Холивара всегда было много, даже на фабриках. Но судя по личному опыту собеседований (с обеих сторон стола) персонал вполне стандартен, в т.ч. по зарплатным ожиданиям ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:43 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Ремесленник - ручной труд "Водораздел" проходит именно по способу организации производства: специализация и глубокое разделение труда - качественно отличаются. Используется при этом механизация или даже автоматизация - дело десятое. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 15:58 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov всё та же специализация, в рамках которой мастер должен знать многое, если не всё. В дискуссии возникла терминологическая неоднозначность, кмк. Давайте как-то разделим термин "специализация" применительно к мельнику (который знает все в своей области деятельности) и узкому специалисту по java, никогда не слышавшему про сетевые снифферы и не различающему виды исключений в СУБД, но вынужденному взаимодействовать с узкими специалистами в соответствующих областях в рамках производственного процесса. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 16:05 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous PetroNotC Sharp andrey_anonymous, Не пишите много. С Вас пример беру. Еще немного поучусь у профи - и смогу не только "писать много", но еще и делать это, не меняя содержания. PetroNotC Sharp О том что ошибка решаема в рамках бд сказали на вашей ветке субд. Готовы с ним поспорить? Вам показалось, что Вы разобрались в проблеме. Но Вы заблуждаетесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 16:11 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous Basil A. Sidorov всё та же специализация, в рамках которой мастер должен знать многое, если не всё. В дискуссии возникла терминологическая неоднозначность, кмк. Давайте как-то разделим термин "специализация" применительно к мельнику (который знает все в своей области деятельности) и узкому специалисту по java, никогда не слышавшему про сетевые снифферы и не различающему виды исключений в СУБД, но вынужденному взаимодействовать с узкими специалистами в соответствующих областях в рамках производственного процесса. На ветке оракла эта темы бы давно завершилась. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 16:13 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous узкому специалисту по java, никогда не слышавшему ... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 16:14 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp На ветке оракла эта темы бы давно завершилась. Эта ветка уже давно завершилась вполне успешно. Отголоски исходной темы поддерживает только Ваше балабольство, коллеги же давно переключились на философию. Basil A. Sidorov andrey_anonymous узкому специалисту по java, никогда не слышавшему ... ...с привлечением соответствующих специалистов, что означает разделение труда. Есть предложения как разделить понятия "специализация" и "узкая специализация" в контексте? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 16:21 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov andrey_anonymous узкому специалисту по java, никогда не слышавшему ... при условии, что все, что происходит за границами "его системы", где-то там, с другой стороны jdbc - "не его собачье дело". Вопрос кто на ком стоял или пришивал пуговицы возникает в первую очередь на границах. Отсюда, в первую очередь и возмущение - ты зачем свои грязные пуговицы в наш чистый дом несёшь? У нас тут кубки кругом серебряные, а ты со своими деревянными шкафами к нам вперился. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 16:24 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby Вопрос кто на ком стоял или пришивал пуговицы возникает в первую очередь на границах. Отсюда, в первую очередь и возмущение - ты зачем свои грязные пуговицы в наш чистый дом несёшь? У нас тут кубки кругом серебряные, а ты со своими деревянными шкафами к нам вперился. "Исторически сложилось", что в программировании организацией производства занимались сами программисты в рамках автоматизации собственного труда. Ну вот и получилось как получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 16:28 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous, Не не...)) Про мельников мне не интересно. Это вы сами. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 16:29 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Про мельников мне не интересно. Это вы сами. Ну а мне не интересно про PL, это я тоже сам. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 16:30 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous ...с привлечением соответствующих специалистов, что означает разделение труда. Есть предложения как разделить понятия "специализация" и "узкая специализация" в контексте? Нет ещё в программировании нормального разделения труда - есть попытка объять необъятное, опираясь на средства автоматической генерации кода разной степени удачности или/и паршивости. Нормальное разделение труда появится тогда, когда разработчик СУБД предоставит каталог запросов или/и хранимых процедур для работы с базой в рамках определённых требований. Другой разработчик "обернёт" элементы этого каталога в условные бины, которые третий разработчик привяжет к узлам рабочего процесса условного сервера приложений, а четвёртый - свяжет (другие) узлы этого процесса с элементами пользовательского интерфейса условного клиента. "По-моему - так" (ц) Винни-Пух. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 16:43 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov "По-моему - так" (ц) Винни-Пух. Ну оно примерно так и делается... если, конечно, речь не идет о современной ремесленной мастерской, где один условный студент-ITшник в гордой должности "программистЪ" расширяет кругозор, пытаясь объять от эникея до сложной интеграции и толком не разбираясь ни в чём. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 16:52 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Мануфактура, фабрика - это исторические термины Между которыми есть качественные различия. Набор и обязательность этих различий, в разных научных школах скорее всего отличается, историки все же гуманитарии поискал по гуглу ))), но гугл забит ответами на ЕГЭ, которые вызывают только смех ))) 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.05.2021, 17:08 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, вместо того, чтобы абстрактно не любить аналитиков, взял бы да воспитал под себя конкретного, да так,чтобы он за счастье считал именно с тобой работать. С хорошим аналитиком в паре работать - чистое наслаждение чистого разума. Главное - "не суетить банан" попусту, или в неправильной последовательности. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 17:21 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
IMHO & AFAIK. Краткое изложение истории с древнейших времен до наших дней 1. Ремесленник. Работа чисто на заказ. Пришел заказчик, дал денег, сделали заказ. Рынок отсутвует или его очень мало. 2. Появляется рынок. Становится возможность массово сбывать результат своего труда. Более-менее понятны типовые виды продукции (булавки ))) ). Становится возможным ряд продукции изготовлять заранее и позже продавать. Появляются специализированные купцы-перекупшики. Когда они становятся богатыми ))) и рынок сбыта еще больше растет, они уже сами начинают устраивать мануфактуры. Закупать сырье, решать, что же производить, нанимают ремесленников, те им делают, сдают им продукцию, купцы продают (на рынке, в лавках). Ремесленики могут работать или у себя дома (на удаленке) или в сарае-мануфактуре (в офисе). Могут работать или полный рабочий день на мануфактуре и не иметь других средств к существованию, или могут совмешать занятия ремеслом с работой на одного или несколько купцов-перекупщиков (фри лансеры). Купцы могут работать на свой страх и риск на склад/рынок, или просто быть посредниками и брать заказы у клиентов и передавать их ремесленикам. Многие из купцов бывшие разбогатевшие ремесленники. Специализация расцветает как на дрожжах. Адам Смит пишет свою книжку. Но до фабрик еще далеко. 3. Появляются машины. Возникает крупносерийное, стандартное производство. Рабочие становятся более-менее заменяемые и полностью лишенные средств производства. Ремесленники преврашаются в пролитариат. Техника развивается. Производительность труда растет быстрыми темпами. Промышленная революция. В ряде стран происходят буржуазные революцие, наступает капитализм. Отсталые крепостные крестьяни им завидуют. Карл Маркс пишет свою книжку. 3.1. Форд изобретает конвеер 3.2. Тайота изобретает канбан Но несмотря на еще большее углубление специализации, фабрика остается фабрикой, а капитализм капитализмом. 4. В отдельно взятой группе стран появляется социализм. Весь остальной отсталый мир нам завидует 5. Наконец появляется Россия. Вот-вот появится "новый уклад". Когда все будут жить по совести и скрепно, а высокие технологии будут переть как на дрожжах. И весь остальной отсталый мир будет нам завидовать. [spoiler] ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 17:42 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
booby чтобы абстрактно не любить аналитиков я абстрактно не люблю абстрактных аналитиков а конкретных, если девочка, да еще и симпатичная - почему бы ее и не любить ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 17:45 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev IMHO Вот п. 3 в программирование нет и подавно. Вот не могу согласиться. Современные программисты преимущественно производят стандартный продукт стандартными способами из стандартных компонентов, применяя глубокое разделение труда. При этом личная квалификация типового программиста достаточно низка, поскольку сложность создаваемого продукта скрыта от его сознания за интерфейсами стандартных компонент. Иллюстрация: коллега пишет сервис по загрузке некоторого объема данных. Сервис проваливает performance-тесты. Анализ показывает, что загрузка данных производится row-by-row. Объясняю, что такое пакетные операции с БД. Внимает, что-то правит. Трасса сессии показывает, что ничегошеньки не поменялось, один server call - одна строка. Пояснения: "ну я же указал библиотеке, что надо делать batch, а как она это делает - не мое дело" Предложения изучить потроха библиотеки на предмет правильной организации передачи данных, равно как переписать на JDBC понимания не находят. ...Да, джава. Да, решили. И нет, не уволили - сам уволился, нашел, наверное, более спокойную работу. Что до массового производства - то любая аналогия имеет пределы. Смысл не в отгрузке 100 ERP на склад, а в стандартизации, автоматизации и организации труда. Оценивать же продукцию программиста "по валу" можно, к примеру, в количестве требований к системе, удовлетворенных посредством его доработок, взвешенных плановой трудоемкостью и коэффициентом сложности :) ...ну и по п.1 тоже замечание. Ремесленник как явление невозможен до появления рынка - с голоду умрёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 18:04 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous ...ну и по п.1 тоже замечание. Ремесленник как явление невозможен до появления рынка - с голоду умрёт. IMHO тут вопрос яйца и курицы. Толи рынок появился раньше ремесленника, толи ремесленник раньше рынка. Работает на заказ. Даже возможно и без денег, по бартер. А если еще и на давальчиском сырье.... занафига рынок? Вот тебе кожа (сырье), вот тебе курица за работу - сделай мне сапоги. В начале 90-х так и работали, на давальческих компьютерах. Клиент давал заказ (напишите мне прогу для бухгалтерии), покупал компьютер, платил за работу... через год забирал компьютер с системой. Тут важно, что сначала заказ (ТЗ) - потом результат работы, а не наоборот Когда наоборот (сначала сделали работу, потом нашли покупателя) начинает превалировать - это уже переход от п.1 к п.2. Начальное накопление капитала. Когда начальный капитал накапливается, можно уже самим не работать, а отдавать заказы другим ремесленикам, переходить в разряд купцов. Когда ИИ или Алиса научится писать программы и труд программиста будет заключаться "яндекс-Алиса, а сделай мне вот такую программу...." вот тогда можно будет говорить об машинном способе производства и программисты станут полноценными пролетариями, т.к. любой роспотребнадзор их завсегда доступа к средствам производства лишить сможет ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 18:28 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous а в стандартизации Дык о чем и я, нет стандартизации на результат работы программиста. Заказ, обследование, разработка, внедрение. Где тут стандартизация? Была бы хоть какая-то стандартизация или хоть какое-то представление о том, что нужно пользователю, то тогда можно было бы заменить "получили ТЗ, сделали по ТЗ" на "изготовили, продали в лавке". Но такое возможно лишь в очень ограниченной сфере IT. Например типовые компьютерные игры. Только это и программированием называть перестали - гейм дизайн и прочие термины. Насколько я понимаю (ни разу не видел): взял специализированный движок, создал игровой мир - и вот он, новый шутер готов. Можно продавать. Но в программирование этого нет. От слова совсем. Пока что у нас ТЗ - сделали по ТЗ. Это именно ручной труд, ремесло. p.s. про паттерны не буду, есть паттерны/нет паттернов мне кажется особой роли это пока не играет. Паттерн "бухгалтерская программа" еще не изобрели. А если и изобретут (1C), то смысла заранее делать 100500 различных бухгалтерий на продажу в лавке - нет никакой, "В нашем магазине большой выбор разнообразных 1с разных расцветок, хотите синенькие, хотите красненькие... подходи, не скупись, раскупай бухгалтерись" ? Чуть сложнее, чем разнообразные скины (цвет буковок) для приложения - уже все, стандартизация не работает ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 18:43 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
В начале 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.05.2021, 19:11 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev andrey_anonymous ...ну и по п.1 тоже замечание. Ремесленник как явление невозможен до появления рынка - с голоду умрёт. IMHO тут вопрос яйца и курицы. Нет тут никакой неопределенности. В отсутствие рынка, дающего стабильный спрос, индивид должен ежедневно добывать еду "из первоисточника" - т.е. охотиться или растить, изготавливая инструменты самолично или сообща с соплеменниками. Выделиться из охотников/скотоводов/пахарей в кузнецы/мельники возможно только при наличии стабильного спроса на услуги. К примеру, если плуг служит условных 10 лет и обслуживает 3 двора, а для кормления одной семьи кузнеца в течение года требуется реализация 10-и плугов (дорого, да), то "постоянная клиентура" должна составлять не менее 300 платёжеспособных хозяйств в расчете на одного кузнеца. А это уже рынок. Leonid Kudryavtsev andrey_anonymous а в стандартизации Но в программирование этого нет. От слова совсем. Пока что у нас ТЗ - сделали по ТЗ. Это именно ручной труд, ремесло. Я вот когда после школы токарем на заводе работал, было так: выдали чертёж - сделал по чертежу. Именно "ручной труд", маховики-то руками жеж крутил... :) Но чертежи по ГОСТ, допуски-посадки тоже по ГОСТ, сталь предписанной марки, резцы и расходники в инструменталке, выходной контроль стандартными измерительными скобами/пробками и поверенным микрометром на ГОСТированной плите. Технологическую карту вот только ни разу не видел - всё сам, всё сам... Теперь-то, конечно, Вы мне глаза приподоткрыли, я понял, не было в стране промышленности никогда - одни ремесленники и мануфактуры... Иехх, а ыщщо мануфактуру-то эту заводом называли, электромеханическим, орденов там разных имении прочее... Обманщики, вот! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 19:17 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev IMHO скорее всего, труд пары десятков манильцев в тот момент был дешевле, чем пара дней "подумать" архитектора нетрадиционной ориентации с западного побережья. Если посадить одного индуса, который за неделю наспагеттит генератор копибуков, то 20 манильцев потеряют работу и от безысходности пойдут грабить того самого индуса... Ну или того, кто окажется в пределах досягаемости. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 19:23 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
andrey_anonymous Ну оно примерно так и делается... SQL-запросы генерирует ORM, который проявляет неестественный интеллект, опираясь только на схему и объявленные программистом связи между объектами этой схемы. Код для REST генерирует другой DSL на основе объявлений, которые тоже делает программист. Который, в обоих случаях, не совсем или совсем не копенгаген в каждой из предметных (под)областей. P.S. Да, есть всяческие Native Query или условный вадя, умеющий сервлеты, но до настоящего промышленного разделения труда ИТ-индустрии ещё далеко. Сейчас это уровень средневековой гильдии с кривыми попытками построить промышленные гиганты. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 19:32 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Basil A. Sidorov andrey_anonymous Ну оно примерно так и делается... SQL-запросы генерирует ORM У нас мухи отдельно - котлеты отдельно, ибо на типовой SQL-код что от кодогенератора, что от java-программиста без слёз смотреть невозможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 19:43 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev 1. Ремесленник. Работа чисто на заказ. Пришел заказчик, дал денег, сделали заказ. Рынок отсутвует или его очень мало. Хайтек промышленной революции (паровые машины) появился после прочного становления капитализма, как ответ на запрос уже существовавшего промышленного производства. Энергия пара не создала "крупносерийное, стандартное производство", а предоставила новые возможности для развития уже имеющегося. Т.е. сначала увеличение производительности и развитие экономики, а уже потом - всякие изобретения, которые дают преимущество на пока ещё конкуретном рынке.5. Наконец появляется Россия. Вот-вот появится "новый уклад".Этот пассаж - вообще непонятен.IMHO Вот п. 3 в программирование нет и подавно.А что, простите, представляют из себя "средства разработки", "инфраструктура как код" и весь прочий хайп, как не "велосипеды для ума" (ц) Стив Джобс? А п. 5, по определнию есть только в одной стране, в избранных фирмах, обычно работающих на тендерах и госзаказах.Очень странный пассаж ... Госзаказ (в любой стране) - лакомый кусок и стабильный источник дохода. Другой вопрос, что государство в каждой стране одно и "на всех нищебродов" его не напасёшься. Поэтому, разумеется, "только самые эффективные и предприимчивые" могут пробиться к кормушке. Ну а "остальные неудачники", как водится, ноют о коррупции и неправильном капитализме. P.S. В конце, если кто-то не догадался - сарказм и мелкое ёрничество. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 19:57 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
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.05.2021, 21:00 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Не читал (хотя вроде кино смотрел) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2021, 00:39 |
|
Mybatis vs Ora-04068
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, дико извиняюсь, но, как мне представляется, Ваши рассуждеия относительно промпроизводства построены исключительно на абстрактных представлениях о таковом. По крайней мере теперь мне стала понятна природа взаимонепонимания по этому вопросу. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2021, 18:09 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120449]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
167ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
201ms |
get tp. blocked users: |
1ms |
others: | 236ms |
total: | 652ms |
0 / 0 |