powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Mybatis vs Ora-04068
25 сообщений из 270, страница 5 из 11
Mybatis vs Ora-04068
    #40069838
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС решил что в веб проектах (трехзвенке) здорово писать как при проектах КЛИЕНТ-СЕРВЕР (повтори запрос)
Вставил в код среднего слоя код с хранимками.
Теперь вставит интерцепторы именно для оракле.
Хранимки нужно писать с ограничениями. Не дай бог кто вставит туда переменную.
Нужен штат проверяльщиков кода и шаблоны приказов о наказании нерадивых.
Мое имхо что интерцептор это триггер.
Мне очень редко приходилось в PL ПОВТОРЯТЬ ОПЕРАЦИЮ.
Хорошим тоном было сначала проверить созданы ли условия)).
Итого, интерцептор служит для Отката при валидации... Логирования.. И т.д.
Но для повтора имхо технически не красиво.
Другой вопрос, что при нагрузке после райзе контекст вообще может уплыть и изменится.
Мы движемся к асинхронности.
Даже эксплорер переспрашивает тупым вопросом: "повторить уже отправленный запрос?".
Транзакция в миллисекунду встанет с райзе на аппСервере в другом континенте.
Надо протестить время и потери бизнеса).
Сделать ТЕО. Нагрузочное тестирование.
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40069839
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
PetroNotC Sharp
Я знаю бизнес логику). Давайте по ней вопросы.

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

Пакет на PL пишет прогер с должностью Разработчик БД. Не java программист.
Если это не студент то он напишет в заголовке хранимки переменную/константу.
Всё. Приплыли.
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40069846
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС версию бд хотя бы привели.
Вроде взрослый а пруфа на обсуждение в ветке оракле я не вижу от вас.
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40069873
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Почему обычным балансировщиком не направить на другую базу?
Для автоматов просто завершают сессию.
1. Выделив ещё пару-тройку терабайт в дорогущем хранилище?
2. "А ведь он был кому-то нужен" (ц) Винни-Пух.

P.S.
Если вам трудно держать в голове контекст "длинных" сообщений - просто игнорируйте их.
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40069884
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
1.конкретнее. Разве в ИС где проблема выгнать юзверей и они работают по ночам нет балансировщика? Пример есть?
Мы обновляли по вечерам систему. А вы?
2. Нормальный автомат умеет реконнект.
ЗЫ.
Не пишите длинно если пару фраз выше не можете понять.
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40069889
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Мы обновляли по вечерам систему. А вы?
А я работал не с систем ой , а с систем ами .
И знаете - везде было по разному .
Совсем круто, правда, не бывало, но даже с процедурой остановки бывали ньюансы. Разные.
По этому вот так огульно: "балансирощик, перенаправление, другая база" - я бы поостерёгся. А вы?
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40069896
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Мы здесь для генерации идей. И советов.
Как в "что где когда".
Че вы так возбудились на решения:
- мессага юзверю - Перелогинься!
- балансировщик
- обновить в окно
?
Есть еще 5 решений чисто админских и не по java.
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40069898
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я "возбудился" на странное предложение mayton. Возможно, я понимаю, откуда это у него, но, блин, в очередной раз - крайне не к месту.
А лично вы достали как тот математик из анекдота: вроде всё правильно говорит, но каждый раз непонятно - а что с этим делать-то?

P.S.
Полезность мозговых штурмов сильно преувеличена - у них крайне ограниченная область применения.
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40069900
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Сложно вам жить.
Вы не в своей тарелке. Вы железячник. А не софтовик.
Почему я его понимаю а вы нет)
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40069902
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хреновый из вас телепат. Или шар протрите или одно из двух.
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40069903
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Ну вот я писал на PL и обновлял систему федерального уровня.
А вы? Хранимки писали?
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40069904
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Хреновый из вас телепат. Или шар протрите или одно из двух.
короче. Сиди там и не выеживайся.
Как бабка на скамейке. Брюзжишь что непонятно ей про балансировщик. С луны что ли.
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40069907
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Представим себе ВИ. Или юз кейс.
- Маша уборщица посмотрела расписание уборки из XP
- вернула в пул
- админ обновил сигнатуру или....
- вечером гендир Иванов взял из пула коннект и при запросе получил ORA
Я очень сомневаюсь, что триггер на аппСервере хорошее решение.
Как то так.
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40069910
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я находил тупые косяки разработчиков в системе, которая много лет использовалась во множестве регионов РФ.
Сопровождал и обновлял одну из таких региональных систем. Не в одно лицо, конечно, но и не "сбоку смотрел". Видел и дебильные реализации и халтурные исправления багов и более-менее успешные попытки свалить проблемы разработки на кривые руких технарей владельца системы.
Разное, в общем, бывало. И, более того - в разных местах, а не только на одной конкретной системе. И знаете что? Не надо быть гением, чтобы даже по результату работы понимать: "Ваш код - дерьмо". Не говоря уж о ситуациях, когда этот код можно просто увидеть.

P.S.
С федеральными системами тоже сталкивался. Уже "со стороны", но тоже интересно. Особенно - на одной презентации уже готовой системы перед планируемым внедрением. Оказалось, что разработчики даже не почесались не то, что сделать - просто подумать о тривиальной фиче.
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40069915
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Если преувеличивать, то я считаю что решение интерцептор дерьмо..
Но вы же склоняете к осторожности).
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40069921
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дискуссия зашла в тупик. У автора получается ситуация что одни не могут - а другие не хотят.

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

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

Иногда в сетевых протоколах заложен принцип минимального ущерба.
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40069928
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
+1
Кроме того, с 11ой версии оракле было много изменений по данной ошибке.
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40070002
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
-- Вызов, инстанциирующий пакет в сессии.
SQL> select * from dropme_p.f(3);

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

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

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

select * from dropme_p.f(3)

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

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

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




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

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

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

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

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

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

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



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

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

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

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

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

-- провокация 2
create or replace package body dropme_p
is
  function f(p int default 3) return t_c pipelined is -- привнесена ошибка, декларация в спеке не соответствует декларации в теле
  begin
    for i in c(p) loop
      pipe row (i);
    end loop;
  end;
end;
/

...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40070007
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,
А мне кажется ты Elic испугался.
Вопросы то плевые с точки зрения DBA
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40070015
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,
>Сценарий 1: простая перекомпиляция пакета.
= в ветке java еще лучше тест с интерцепторами
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40070030
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous

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

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

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

Oracle EE 11.2.0.3.0 64 bit
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40070035
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос в том обязан ли клиент вызвать пакет UTL_RECOMP и пересобрать это всё по первой ошибке?
В ситуации когда повторный колл не исправляет ошибку (несколько интерфейсных частей пакетов
были изменены на сервере).

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

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

Никаких умных действий с их стороны быть не должно. Кто создал проблему на сервере - тот и должен
ее решать. Технические детали протокола аварийного выключателя (время размыкания и прочее)
- обсуждается.
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40070042
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40070043
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Вопрос в том обязан ли клиент вызвать пакет UTL_RECOMP и пересобрать это всё по первой ошибке?

Да откуда вы всё это берете?!
Какой рекомп от приложения, длянафига?
...
Рейтинг: 0 / 0
Mybatis vs Ora-04068
    #40070046
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
mayton
Вопрос в том обязан ли клиент вызвать пакет UTL_RECOMP и пересобрать это всё по первой ошибке?

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

Я возможно отстал от жизни. А что 11-тка уже автоматом восстанавливает зависимые интерфейсы пакетов?
...
Рейтинг: 0 / 0
25 сообщений из 270, страница 5 из 11
Форумы / Java [игнор отключен] [закрыт для гостей] / Mybatis vs Ora-04068
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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