powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Конкуренция нескольких Java-приложений за ресурс в БД Oracle
70 сообщений из 70, показаны все 3 страниц
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045757
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, прошу помощи в следующем вопросе!

Цель: Необходимо обеспечить право на ресурс в БД Oracle (одна строка в таблице) первому добежавшему Java-приложению из нескольких.
Есть БД для высоконагруженного OLTP-приложения, в которой крутится значительная часть логики. Есть несколько независимых, т.е. не подозревающих о существовании друг друга Java-приложения (работают на территориально распределенных WAS). Существуют ситуации, когда любое из них должно запустить ХП в Oracle, но только первое достучавшееся и только один раз, для чего ХП (или приложение) должна выставить флаг (изменить запись в таблице). SELECT … FOR UPDATE может гарантировать блокировку и защиту от многократного изменения. НО в случае аварийного завершения приложения строка остаётся недоступной для изменения живыми приложениями.
Каков общий подход для решения подобных задач в связке Java-Oracle? Что можете посоветовать?
Буду благодарен за любые конструктивные предложения и замечания. Спасибо.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045780
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно чтобы аварийно упавший аппликейшен отпустил коннект. Oracle DBMS
увидет что сеанс завершён и откатит SELECT … FOR UPDATE.
Надо посмотреть как вы испольузеете пул. И что происходит с сетевым
соединением после падения. В корректном варианте клиентский сокет
должен быть закрыть.

Но я-бы поставил вопрос о целесообразности использования таблицы в качестве
монитора или мьютекса. Посмотрите описание пакетов DBMS_LOCK и возможно
DBMS_ALERT. Может поможет.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045781
xifr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvas,

Можно подробнее про "строка остаётся недоступной"? Почему у вас так происходит? После того как приложение отвалилось строки должны быть доступными.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045793
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНужно чтобы аварийно упавший аппликейшен отпустил коннект.
+1
либо менять метод блокировки.
Не с горы же клиенты начали делать SELECT … FOR UPDATE
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045798
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Могу рассказать, как это делалось в СУБД, не поддерживающих SELECT … FOR UPDATE
Для этого используется уровень изоляции, поддерживающий грязные чтения:
1. первая стартовавшая транзакция обновляет запись в таблице (0->1)
2. другие транзакции, поскольку они dirty read, видят эту 1 и ничего не предпринимают
3. в конце работы первой транзакции делается обратное обновление 1 на 0

В случае, если коннект отвалился во время работы 1-й транзакции, сервер делает откат по таймауту, таким образом, запись не блокируется навсегда
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045802
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аффтар!
я делал такую блокировку только в модальном окне и польз-ли не далеко друг от друга.
Либо 3 вар-та:
- вообще не блокировать (без UPDATE)
- как сейчас
- добавить поле\флаг в БД
- хибер с его методами.
вам решать
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045806
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xifr,

Работает Java-приложение, которое блокирует строки. Вынимаю сетевой (LAN) кабель, при этом в СУБД сессии остаются, блокировки со строки не снимаются.

Сразу не предупредил, извините, - мопед не мой. :-) Т.е. я не Java-разработчик
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045807
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanra,
тогда уж лучше флаг - взял на редактирование)
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045810
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasВынимаю сетевой (LAN) кабель, при этом в СУБД сессии остаются
БД профи есть?
Пусть киляет сессии.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045816
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123ivanra,
тогда уж лучше флаг - взял на редактирование)
Тут весь фокус в том, что при обновлении и грязных чтениях остальные соединения сразу видят, что запись занята и не блокируются (могут выполнять другую полезную работу). При попытке сразу брать на редактирование, будет блокировка, пока предыдущий "хозяин" не отпустит.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045823
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, большое спасибо, но я думал, что вы мне про опыт с чем-то подобным JMS и Oracle AQ расскажете. Большинство из предлагаемого рассматривалось, но было отвергнуто.

Для киляния сессии необходимо её пометить, желательно не только именем приложения, но и каким-то таймштампом, и каким-нибудь джобом проверять v$session (весьма небыстрое представление).
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045824
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Для каких именно целей используется select for update? (т.е. на какое время удерживается блокировка)
2. Вполне возможно, что в таком раскладе лучше использовать оптимистическое блокирование, т.е. блокировка накладывается только на момент изменения данных, а то и вообще просто в контексте самого апдейта (без select for update), если же данные с момента чтения изменились, выдается эксепшн, мол. пока вы чесали репу, данные уже были изменены, прочитайте заново и тогда уж правьте по-новой )
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045829
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasСуществуют ситуации, когда любое из них должно запустить ХП в Oracle, но только первое достучавшееся и только один раз, для чего ХП (или приложение) должна выставить флаг (изменить запись в таблице). SELECT … FOR UPDATE может гарантировать блокировку и защиту от многократного изменения.
А. Для запуска ХП. Так может тогда вообще отказаться от таблицы, в которой фиксятся запуски? А сразу смотреть all_jobs? (если уже запущено, то и не запускаем). А уже в самой процедуре вести протокол запусков, если он вообще нужен.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045834
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasРаботает Java-приложение, которое блокирует строки. Вынимаю сетевой (LAN) кабель, при этом в СУБД сессии остаются, блокировки со строки не снимаются.

Таблица "занятия ресурса".
При старте приложение пишет " я схватил", свой IP, время захвата, время обновления.
Каждый 30 секунд обновляет статус.
Если в течении минуты не обновило- ресурс считается свободным и может быть взят другим. Соответственно само приложение должно, дойдя до обновления статуса проверить, не прошла ли минута, и если прошла- сделать харакири.
Блокировки собственно таблицы- только в момент взятия. Остальное- изменения commit'ятся.
Заодно будет лог- кто, когда и сколько захватывал ресурс.

Работать через системные вещи- требуются права админа для снятия блокировки, что не всегда допустимо.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045835
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS,
Первый захвативший тем самым не даёт другим прочитать значение флага, независимо от того разрешительный или запретительный он. Если необходимо изменить флаг, то меняет. Без update все могут прочитать разрешительный флаг и отработать код, а этого и не надо.

Вопрос больше в том, как избежать блокировок при аварийном завершении. Т.е. можно и без update, но тогда должен быть гарантирован строгий порядок запросов, т.е. некая очередь.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045840
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasКоллеги, большое спасибо, но я думал, что вы мне про опыт с чем-то подобным JMS и Oracle AQ расскажете. Большинство из предлагаемого рассматривалось, но было отвергнуто.

Для киляния сессии необходимо её пометить, желательно не только именем приложения, но и каким-то таймштампом, и каким-нибудь джобом проверять v$session (весьма небыстрое представление).
Какой смысл тебе чего-то советовать по JMS или AQ если неясно о чём твоя задача?
Что делает? Как устроена? Почему идёт битва за ресурс? Есть ли альтернативная подход?
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045841
xifr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasxifr,
Работает Java-приложение, которое блокирует строки. Вынимаю сетевой (LAN) кабель, при этом в СУБД сессии остаются, блокировки со строки не снимаются.
Сразу не предупредил, извините, - мопед не мой. :-) Т.е. я не Java-разработчик

В этом случае скорее всего нужно настраивать СУБД, но это конечно не всегда бывает возможно/хорошо.

По хорошему, ваши приложения могут работать не на прямую с СУБД, а через сервер приложение, тогда все логику синхранизации и блокировок, можно перенести на сервер, а не на СУБД.
По мне так более правильно с точки зрения архитектуры.
Например, может быть вам вообще это будет проще сделать через очереди (на сервере).
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045842
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominКаждый 30 секунд обновляет статус.



Это КРИТИЧЕСКИ много!
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045848
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS А сразу смотреть all_jobs?


Опять всё сведется к тому, что все НЕЗАВИСИМЫЕ приложения попытаются запустить джобы, а должено отработать только одно.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045853
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasПервый захвативший тем самым не даёт другим прочитать значение флага, независимо от того разрешительный или запретительный он. Если необходимо изменить флаг, то меняет. Без update все могут прочитать разрешительный флаг и отработать код, а этого и не надо.
Это понятно - так и говорю, мол может запускать не напрямую, а через джобы и смотреть при этом, не запущен ли уже, если запущен, то и не запускаем, тогда и таблица эта с флагом не нужна же, а если нужна, то заполнять ее уже из самой отрабатываемой ХП.

urvasВопрос больше в том, как избежать блокировок при аварийном завершении. Т.е. можно и без update, но тогда должен быть гарантирован строгий порядок запросов, т.е. некая очередь.
Если нужна именно очередь, возможно, вариант - в самой ХП прописать ожидание завершения предыдущего запуска.
То есть:
1. Из Джава приходит команда на постановку ХП на обработку (например, добавляет джоб)
2. Все. Все остальное - в том числе и возможность выполнения отслеживает сама ХП (а она уже не зависит от клиента и может блокировать что угодно хоть отвалится клиент, хоть нет, ей пофиг, она в джобе ))
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045854
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xifrПо хорошему, ваши приложения могут работать не на прямую с СУБД, а через сервер приложение, тогда все логику синхранизации и блокировок, можно перенести на сервер, а не на СУБД.
По мне так более правильно с точки зрения архитектуры.
Например, может быть вам вообще это будет проще сделать через очереди (на сервере).

1. Серверов приложений и так несколько, но проблемы это не снимает. Обвязка между несколькими СП, некий координатор? Вопросо будет ещё больше, ИМХО.

2.Вот про очереди бы поподробнее. Точнее, про все составляющие этого процесса. Я не даром упомянул про JMS и AQ. Есть подобный опыт?
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045864
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasОпять всё сведется к тому, что все НЕЗАВИСИМЫЕ приложения попытаются запустить джобы, а должно отработать только одно.
Если грамотно наколхозить, то не сведется )

Ну и все-таки вариант повторю:
1. ХП ставим джобом (поставили и забыли), не надо ничего блокировать
2. А уже в самой ХП может делать что угодно, выставлять блокировку например, что типа я пошла работать, остальные сидят курят.
Если же ХП вдит, что уже кто-то пашет (не может выставить флаг), ну или ждет (тут механизмы тоже разные могут быть), или спокойно завершается необходимым образом.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045898
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvas2.Вот про очереди бы поподробнее.
сначала select update убрать.
А тогда и очереди не понадобятся).
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045905
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonurvasКоллеги, большое спасибо, но я думал, что вы мне про опыт с чем-то подобным JMS и Oracle AQ расскажете. Большинство из предлагаемого рассматривалось, но было отвергнуто.

Для киляния сессии необходимо её пометить, желательно не только именем приложения, но и каким-то таймштампом, и каким-нибудь джобом проверять v$session (весьма небыстрое представление).
Какой смысл тебе чего-то советовать по JMS или AQ если неясно о чём твоя задача?
Что делает? Как устроена? Почему идёт битва за ресурс? Есть ли альтернативная подход?
+1
Аффтар просто хочет поучиться очередям. За счёт фирмы.
Зачем ему блокировать он сам не знает.
Удачи аффтару!
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045906
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasAlexey TominКаждый 30 секунд обновляет статус.



Это КРИТИЧЕСКИ много!

Не проблема- сделай 1 и 2 секунды.
Суть в том, что время протухания больше, чем период обновления.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045917
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123сначала select update убрать.
А тогда и очереди не понадобятся )
Вот и о том же )
JDSт.е. блокировка накладывается только на момент изменения данных, а то и вообще просто в контексте самого апдейта (без select for update)

function set_flag return number
is
n_res number;
begin
update mytable_with_flag -- упрощенно
set flag = 1
where flag = 0;

if sql%rowcount = 0 then
n_res := 0; -- флаг уже стоит
else
n_res := 1; -- флаг выставили
end if;

return n_res;
end;
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045922
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS,
ну перепутал чел бизнес транзакцию и технические оракла. Бывает.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045928
xifr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvas1. Серверов приложений и так несколько, но проблемы это не снимает. Обвязка между несколькими СП, некий координатор? Вопросо будет ещё больше, ИМХО.


* У сервер приложения конекты с СУБД как бы не должны отваливаться (только в аварийных случаях)
* Отвалившихся клиентов будет проще определить
* Что означает аббревиатура СП?

urvas2.Вот про очереди бы поподробнее. Точнее, про все составляющие этого процесса. Я не даром упомянул про JMS и AQ. Есть подобный опыт?

Я думаю тут много кто имел опыт по работе с JMS и AQ, ничего там особо хитрого/сложного нет.
Чтобы говорить про очереди, нужно больше информации по вашей задаче.

Если у вас все сводится к списку задач которые клиенты должны брать и выполнять, то я думаю через очереди все хорошо получится.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045957
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDSкоммититься не забываем )
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
function set_flag return number
is
  n_res number;
begin
  update mytable_with_flag -- упрощенно
        set flag = 1
   where flag = 0;

 if sql%rowcount = 0 then
    n_res := 0; -- флаг уже стоит
 else
    n_res := 1; -- флаг выставили
  end if;
  
  commit;
  return n_res;
end;

...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045971
xifr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDSJDSкоммититься не забываем )
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
function set_flag return number
is
  n_res number;
begin
  update mytable_with_flag -- упрощенно
        set flag = 1
   where flag = 0;

 if sql%rowcount = 0 then
    n_res := 0; -- флаг уже стоит
 else
    n_res := 1; -- флаг выставили
  end if;
  
  commit;
  return n_res;
end;



а чем это принципеально отличается от select update,
ведь в случае неожиданного разрыва коннекта, будет тоже самое.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39045978
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xifrА чем это принципеально отличается от select update,
ведь в случае неожиданного разрыва коннекта, будет тоже самое.
Абсолютно верно - практически ничем, кроме того, что можно выставить флаг без select for update (просто мелкое замечание)
Насчет неожиданного разрыва тоже писал - надо убрать управление блокировками напрямую из java или какого-либо другого СП
и как вариант, запускать процедуры джобами )
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046012
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS,
Вот Вы никак не хотите понять, что база не может сама принимать решение о старте какого-либо её, базы, внутреннего приложения. В моём случае это внешний сигнал из Java, а поэтому никакие джобы не помогут - они либо сигнала не увидят (если флаг не выставить), либо дружною толпою начнут обработку (если доверить вызов джобов внешнему приложению).
Собственно, вопрос больше концептуальный - видимо, необходим какой-то промежуточный слой/механизм, обеспечивающий единственную точку с гарантированным последовательным доступом к запуску ХП/выставлению флага в БД. Потому как все предложенные способы не обеспечивают работоспособность в аварийной ситуации за приемлемое время.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046022
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasСобственно, вопрос больше концептуальный - видимо, необходим какой-то промежуточный слой/механизм, обеспечивающий единственную точку с гарантированным последовательным доступом к запуску ХП/выставлению флага в БД. Потому как все предложенные способы не обеспечивают работоспособность в аварийной ситуации за приемлемое время.
Угу.
Многопользовательсую СУБД Оракле нагнуть через последовательный доступ.
Концептуально).
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046027
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

В моём конкретном случае многопользовательность - зло. В моей задаче, как в стометровке или марафоне, стартует сколь угодно много, но победитель всегда один. Или по-другому - дрочеров много, а отец один.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046042
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasВот Вы никак не хотите понять, что база не может сама принимать решение о старте какого-либо её, базы, внутреннего приложения. В моём случае это внешний сигнал из Java, а поэтому никакие джобы не помогут - они либо сигнала не увидят (если флаг не выставить), либо дружною толпою начнут обработку (если доверить вызов джобов внешнему приложению).

По порядку:
1. Java-приложение дает базе сигнал на запуск ХП в виде создания джоба (т.е. по сути оно поставило задание в очередь) - все дальше оно может хоть отваливаться, хоть еще 100 джобов попытаться поставить. Чем это не сигнал базе? )

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

Единственное, возможно, хотите сказать, что есть требование, что выполняем ХП 100% только в том случае, если java-приложение имеет коннект вплоть до завершения выполнения этой самой ХП, в противном случае, необходимо откатить все назад.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046049
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Плюс требования к скорости, если надо все делать оч. быстро, то да с джобами, не очень имхо.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046099
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вариант (немного изуверский, но в некоторых ситуациях можно попробовать):
1. Никакой флаг блокировки не выставляется
2. Каждое java-приложение обрабатывает данные во временной таблице (т.е. сначала забирает данные во временную таблицу и крутит их как угодно никто никого опять же тоже не блокирует, т.к. каждый работает со своими данными)
3. Сбрасывают изменения в постоянную таблицу и вот тут, кто первый сбросил, того и тапки ) (отследить можно по номеру изменения например на сиквенсе, который мы забираем при подхвате данных во временную таблицу)
Возможно этот же вариант, можно попытаться реализовать, задав соответствующий уровень изоляции транзакции, но с этим не приходилось эксперемнтировать )
Если Java-приложение отваливается, то оно никого не держит - только данные во врем. табличках, которые автоматом почистятся.

Понятно, что если надо продублировать много данных из разных таблиц, если подразумевается, что одновременно могут работать сотни сессий в таком ключе, если необходимо максимальное время отклика, а не переливание из таблицы в таблицу, то удовольствие сомнительное )
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046125
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS,
Да, похоже, что создание джоба из Java может помочь, спасибо.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046147
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasJDS,
Да, похоже, что создание джоба из Java может помочь, спасибо.
угу. Особенно под пользователем sys.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046152
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasPetro123,
В моём конкретном случае многопользовательность - зло. В моей задаче, как в стометровке или марафоне, стартует сколь угодно много, но победитель всегда один. Или по-другому - дрочеров много, а отец один.
даже не верится, что это написал ТС, который знает слова OLTP\WAS
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046189
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS1. Никакой флаг блокировки не выставляется
2. Каждое java-приложение обрабатывает данные во временной таблице (т.е. сначала забирает данные во временную таблицу и крутит их как угодно никто никого опять же тоже не блокирует, т.к. каждый работает со своими данными)
3. Сбрасывают изменения в постоянную таблицу и вот тут, кто первый сбросил, того и тапки ) (отследить можно по номеру изменения например на сиквенсе, который мы забираем при подхвате данных во временную таблицу)
Возможно этот же вариант, можно попытаться реализовать, задав соответствующий уровень изоляции транзакции, но с этим не приходилось эксперемнтировать )
Если Java-приложение отваливается, то оно никого не держит - только данные во врем. табличках, которые автоматом почистятся.

Понятно, что если надо продублировать много данных из разных таблиц, если подразумевается, что одновременно могут работать сотни сессий в таком ключе, если необходимо максимальное время отклика, а не переливание из таблицы в таблицу, то удовольствие сомнительное )
Чувак. Найми себе аналитика + разработчика Java/Oracle.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046274
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧувак. Найми себе аналитика + разработчика Java/Oracle
Спасибо, денег только дайте, обязательно найму, хоть тыщу аналитиков и три тыщи старших помощников младших аналитегов )
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046423
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123urvasPetro123,
В моём конкретном случае многопользовательность - зло. В моей задаче, как в стометровке или марафоне, стартует сколь угодно много, но победитель всегда один. Или по-другому - дрочеров много, а отец один.
даже не верится, что это написал ТС, который знает слова OLTP\WAS

Если Вы желаете скатиться в унылый троллинг, то предлагаю Вам отойти от понятия "вера" и для начала освежить в памяти курс философии, а именно понятия диалектики, истины и закон перехода количества в качество.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046427
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvas,
обиделсо? Тебя конкретно все со второго поста спросили - зачем UPDATE?
Твои проблемы.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046446
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123urvas,
обиделсо? Тебя конкретно все со второго поста спросили - зачем UPDATE?
Твои проблемы.

Обиделось, конечно же...

Oracle® Database Concepts 11gRelease 2 (11.2) E40540-02, p.196
A reader never blocks a writer.
Because a reader of a row does not lock it, a writer can modify this row. The only
exception is a SELECT ... FOR UPDATE statement, which is a special type of SELECT
statement that does lock the row that it is reading.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046451
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvas,
позови взрослых.
Тебя спрашивали зачем с точки зрения пользователей?
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046471
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123угу. Особенно под пользователем sys.
Вы-таки шото имете против джобов? ) При чем тут сис непонятно )
Petro123, и чо вы прицепились к человеку зачем, да зачем, по всей видимости речь идет как раз не об олтп-операциях, а просто о запуске некой длительной обработки в контексте конкретной задачи, совсем не факт, что так будет построена вся система, даже для маленьких коротких запросов, хотя фиг знает конечно )
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046505
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS,
Job запускается под рутом.
Т.е. клиенты будут запускать под рутом.
Т.е. решение Г.
А так, как ты пишешь, фиг знает.)))
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046514
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS,
Вы совершенно верно поняли суть - нам необходимо извне запустить некие процессы обработки, но сделать это необходимо только один и только один раз и очень быстро. В целях диверсификации все живые внешние объекты обязаны попытаться стартовать процесс в базе, но победить должен только один, остальные - к расстрелу.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046518
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вангую, этот топик проживет долго.
У ТС литературный дар.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046524
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Вангую, этот топик проживет долго.
У ТС литературный дар.

Учитесь, а то про root в Oracle - это как то пошло.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046530
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvas,
"Один раз" расшифруй.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046533
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Job запускается под рутом.
Т.е. клиенты будут запускать под рутом.
Т.е. решение Г.
А посоны-то и не знали и чо, что под рутом? ) Пока вроде никто не умер с того.
При постановке джоба, оракле ж проверяет права доступа на запускаемые пакеты/процедуры именно пользователя.
Другое дело, что может быть задача отследить от какого именно юзера был запущен данный джоб, но это тоже не проблема ж.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046534
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasPetro123Вангую, этот топик проживет долго.
У ТС литературный дар.

Учитесь, а то про root в Oracle - это как то пошло.
Зато так страшно)
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046540
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS,
Нет. Оракл надеется что sys не дурак. И не проверяет.
Печаль.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046549
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Нет. Оракл надеется что sys не дурак. И не проверяет.
Печаль.
Печаль в том, что вы слишком уверены в своей правоте, а между тем попробуйте поставить джобом на выполнение хп, на которую у вас нет прав )
Да джоб выполняется под сисом, т.е. от имени системы, но прежде вы дали системе это задание, так вот когда вы давали его, система прежде проверит, имеете ли вы право его выполнять ) А потом уже когда система запускает его (под сисом), тут она уже да, понимает, что сис не дурак )
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046557
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS,
Я так понимаю, что про root коллеге Petro123 Рабинович напел, но кто тогда про привилегии Scheduler Privileges промолчал?
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046561
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS,
У меня job работает в продакшен. А у вас?
Раз мы на личности перешли.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046569
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvas,
Ты кодом, кодом давай.
Я буду рад, если у тебя на них все будет.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046570
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
Так у Вас SYS заодно и владелец прикладных объектов системы?
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046578
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvas,
Не отвлекайся. Выше тебе вопросы.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046586
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дискуссия перестала носить продуктивный характер, за сим откланиваюсь. Всем спасибо!
Отдельным коллегам искренне желаю на время переселиться в перезагрузочный сектор столицы.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046589
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123У меня job работает в продакшен. А у вас?
1. и что? о чем это должно говорить?
2. Как это относится к предложению попробовать запустить джобом ХП под юзером, у которого нет прав на эту хп? )
3. "продакшены" разные бывают, ни о чем не говорит, да и сложно представить себе большую систему, в которой бы не использовались джобы, работают куда ж без них )
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046599
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urvasДискуссия перестала носить продуктивный характер, за сим откланиваюсь. Всем спасибо!
Отдельным коллегам искренне желаю на время переселиться в перезагрузочный сектор столицы.
Это... типа он всех тактично послал? Или это цитата из Лукьяненко? Типа там Лабиринт и всё такое?
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046712
xifr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по мне джобы (как и тригеры) лучше использовать только там где по другому никак.
например, чисто телепотически, если там потоковое выполнение большого количества задач,
и джобы будут постоянно плодить в большом количестве, как на это отреагирует Oracle? и что будет с ним через месяц?
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046742
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xifrпо мне джобы (как и тригеры) лучше использовать только там где по другому никак.
например, чисто телепотически, если там потоковое выполнение большого количества задач,
и джобы будут постоянно плодить в большом количестве, как на это отреагирует Oracle? и что будет с ним через месяц?
Oracle JOBS полезны когда у вас - аналитика. И нужна максимальная пропусная способность
между каналом хранения информации и логикой.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046792
xifr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonxifrпо мне джобы (как и тригеры) лучше использовать только там где по другому никак.
например, чисто телепотически, если там потоковое выполнение большого количества задач,
и джобы будут постоянно плодить в большом количестве, как на это отреагирует Oracle? и что будет с ним через месяц?
Oracle JOBS полезны когда у вас - аналитика. И нужна максимальная пропусная способность
между каналом хранения информации и логикой.

Job по сути выполняет роль шедулера и не более, разве нет?
С таким же успехом можно вызывать тот же функционал из приложения.
В приложение управлять шедулерами проще и более гибко.

По мне, тут вопрос стоит что делает шедулер, если он выполняет какие-то системные функции и ими рулят администраторы БД, то да удобнее будет использоваь JOB. Если же это бизнес логика, то в перспективе удобнее их размещать уже в приложение.
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046795
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xifrпо мне джобы (как и тригеры) лучше использовать только там где по другому никак
Ну понятно, что обычно используют когда
- тяжелая, долгая обработка, в том числе как раз, чтобы не отвалилась сессия-инициатор
- когда по разным причинам нужен отложенный запуск или запуск по расписанию
Все остальное - это суеверия ) Да и вообще все это к ораклистам )
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046827
xifr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDSДа и вообще все это к ораклистам )

Ораклисты, это еще те товарищи, не брезгуют и html генерировать на PL/SQL и файлы парсить :)
...
Рейтинг: 0 / 0
Конкуренция нескольких Java-приложений за ресурс в БД Oracle
    #39046843
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xifrmaytonпропущено...

Oracle JOBS полезны когда у вас - аналитика. И нужна максимальная пропусная способность
между каналом хранения информации и логикой.

Job по сути выполняет роль шедулера и не более, разве нет?
С таким же успехом можно вызывать тот же функционал из приложения.
В приложение управлять шедулерами проще и более гибко.

По мне, тут вопрос стоит что делает шедулер, если он выполняет какие-то системные функции и ими рулят администраторы БД, то да удобнее будет использоваь JOB. Если же это бизнес логика, то в перспективе удобнее их размещать уже в приложение.
Почитай про DBMS_SCHEDULER. Там есть масса опций которую например ни cron ни Quartz (Java) не имеют.
...
Рейтинг: 0 / 0
70 сообщений из 70, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Конкуренция нескольких Java-приложений за ресурс в БД Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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