|
|
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
Доброго дня! Есть процедура, которая выполняется часто. То что она делает подразумевает, что она в один момент времени должен работать только один ее экземпляр. Представим, что на уровне ее "запускалки" нет возможности ограничить количество стартов. Есть идея добавить в ее код dbms_application_info.set_client_info с передачей уникального текста. При старте процедуры мониторить сессии на наличие сессии с переданным client_info - если есть, то ждать, если нет, то работать. Если считать, что никакой плохой человек не сделает процедуру, которая будет передавать то же значение в client_info, можно ли считать такой вариант рабочим, либо все-равно рано или поздно возникнет ситуация, что процедура в один момент времени запустится дважды? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 12:42 |
|
||
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
RTFM/STFF dbms_lock ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 12:45 |
|
||
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
ElicRTFM/STFF dbms_lock Использовал только sleep с него. Спасибо, гляну ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 12:48 |
|
||
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
Уникальный сессияможно ли считать такой вариант рабочим Задачка: блокировка одновременного запуска PL/SQL программ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 13:06 |
|
||
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
А можно проще. Делай вставку в таблицу какого-либо значения с уникальным индексом. например, запись с именем процедуры. словишь 00001 и профит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 00:34 |
|
||
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
ShtockпрощеСоздать таблицу, вставить запись, удалить запись, если требуется продолжение транзакции без коммита, оборачиваем в автономку. Боремся с последствиями залипания записи при прерывании процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 07:54 |
|
||
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
Очень много букв не имея полной информации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 11:04 |
|
||
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
Shtock, А почему не for update nowait? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 11:29 |
|
||
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
На всякого мудрецаShtockпрощеСоздать таблицу, вставить запись, удалить запись, если требуется продолжение транзакции без коммита, оборачиваем в автономку. Боремся с последствиями залипания записи при прерывании процедуры.у дбмс-лок нет прав на обычного юзверя и админы обычно не дают, ибо нефиг ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 12:29 |
|
||
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
>>А почему не for update nowait? и эт тоже возможно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 12:54 |
|
||
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
envShtock, А почему не for update nowait? в процедуре по тексту есть commit/rollback .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 13:01 |
|
||
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
andreymxобычного юзверяЕсли у обычного пользователя так трясутся пальцы, что он дважды что-то запускает, логично, что админ ему что-то не дает. Если же предполагается асинхронная работа сессий, это уже не "обычный" пользователь. Тем не менее, критерий взаимоотношений с админом сам по себе и критерий простости сам по себе. Вариант нарываться на ora-00001 наиболее сложный в реализации, поэтому я процитировал именно "проще". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 13:12 |
|
||
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
Сестра талантаandreymxобычного юзверяЕсли у обычного пользователя так трясутся пальцы, что он дважды что-то запускает, логично, что админ ему что-то не дает. Если же предполагается асинхронная работа сессий, это уже не "обычный" пользователь. Тем не менее, критерий взаимоотношений с админом сам по себе и критерий простости сам по себе. Вариант нарываться на ora-00001 наиболее сложный в реализации, поэтому я процитировал именно "проще". с точки зрения оракля, обычный юсер, процедура напр открытия/закрытия дня/месяца .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 13:14 |
|
||
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
andreymxНа всякого мудрецапропущено... Создать таблицу, вставить запись, удалить запись, если требуется продолжение транзакции без коммита, оборачиваем в автономку. Боремся с последствиями залипания записи при прерывании процедуры.у дбмс-лок нет прав на обычного юзверя и админы обычно не дают, ибо нефигЗвери какие-то у вас админы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 13:18 |
|
||
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
Staxв процедуре по тексту есть commit/rollback Тогда dbms_lock тоже не особо поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 14:56 |
|
||
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
envStaxв процедуре по тексту есть commit/rollback Тогда dbms_lock тоже не особо поможет. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 15:20 |
|
||
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, Спасибо. Запамятовал. Равно как и про false по-умолчанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 18:38 |
|
||
|
Не позволить запустить процедуру дважды в один момент времени. Как?
|
|||
|---|---|---|---|
|
#18+
envЗапамятовал. Равно как и про false по-умолчанию. 3913031 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 18:43 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39565018&tid=1884785]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 463ms |

| 0 / 0 |
