powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ждать без sleep
25 сообщений из 83, страница 2 из 4
ждать без sleep
    #34592237
Сына
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgenygа как я это назвал без разницы :).
Да я подоброму :)
...
Рейтинг: 0 / 0
ждать без sleep
    #34592261
Muxx1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quot andreymx]а этот sleep - он точно нужен? Может, без него можно обойтись? Чего вы ждёте-то на сервере/от сервера?[[/quot]

В функции запускается job. И нужно подождать его завершения для продолжения работы функции.
...
Рейтинг: 0 / 0
ждать без sleep
    #34592275
slepslap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
slepslap Muxx1986Какие остроумные ответы. Можно было бы просто написать "Не знаю".
Возможности обойтись без dbms_lock.sleep нету?

Блокировки допустимы?

Если блокировки допустимы, то можно реализовать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
-- Запускается некая служебная сессия, которая блокирует специально созданную таблицу
drop table sleep_table;
create table sleep_table
(
  id varchar2( 10 )
);
insert into sleep_table values('1');
commit;
select * from sleep_table for update;

-- в рабочих сессиях запускается оператор select for update с указанием времени ожидания wait n
select * from sleep_table for update wait  10 ;

select * from sleep_table for update wait  4 ;


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SQL> set timing on
SQL> select * from sleep_table for update wait  10 ;
select * from sleep_table for update wait  10 
              *
ERROR at line  1 :
ORA- 30006 : resource busy; acquire with WAIT timeout expired


Elapsed:  00 : 00 : 10 . 02 
SQL> select * from sleep_table for update wait  4 ;
select * from sleep_table for update wait  4 
              *
ERROR at line  1 :
ORA- 30006 : resource busy; acquire with WAIT timeout expired


Elapsed:  00 : 00 : 04 . 01 

Необходимо только оформить это все красиво в PL/SQL с обработкой исключения и вызова в виде отдельной процедуры.
...
Рейтинг: 0 / 0
ждать без sleep
    #34592284
Jannny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Muxx1986 andreymxа этот sleep - он точно нужен? Может, без него можно обойтись? Чего вы ждёте-то на сервере/от сервера?[В функции запускается job. И нужно подождать его завершения для продолжения работы функции.А запускать надо именно job-ом? Есть показания?
...
Рейтинг: 0 / 0
ждать без sleep
    #34592294
Muxx1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть список функций в формате CHAR. Они содержат DML и COMMIT. Их нельзя менять.
Надо их выполнить. Я для этого использую job. Можно ли иначе?
...
Рейтинг: 0 / 0
ждать без sleep
    #34592302
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Muxx1986 andreymxа этот sleep - он точно нужен? Может, без него можно обойтись? Чего вы ждёте-то на сервере/от сервера?[В функции запускается job. И нужно подождать его завершения для продолжения работы функции.почему-то так и подумал... Но вопрос Jannny я бы тоже задал.
...
Рейтинг: 0 / 0
ждать без sleep
    #34592307
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Muxx1986quot andreymx]а этот sleep - он точно нужен? Может, без него можно обойтись? Чего вы ждёте-то на сервере/от сервера?[

В функции запускается job. И нужно подождать его завершения для продолжения работы функции.[/quot]

В этом случае sleep - решает второстепенную задачу. Как бы надо прочуствовать разницу между sleep (сон) и wait (ожидание). Можно спать когда кого то ждёшь, но сон не означает ожидание кого либо.

А почему job нельзя запустить синхронно в текущей сессии?
...
Рейтинг: 0 / 0
ждать без sleep
    #34592310
ГостЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Muxx1986Есть список функций в формате CHAR. Они содержат DML и COMMIT. Их нельзя менять.
Надо их выполнить. Я для этого использую job. Можно ли иначе?
1) Не использовать ddl
2) автономка
Код: plaintext
PRAGMA AUTONOMOUS_TRANSACTION;
3) хз
...
Рейтинг: 0 / 0
ждать без sleep
    #34592311
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Muxx1986В функции запускается job. И нужно подождать его завершения для продолжения работы функции.
Сеемееееен Семеныч!
Ну так бы и говорили - надо дождаться завершения работы job...
Все просто - в job развешиваете пользовательскую блокировку (dbms_lock), процесс пытается ее захватить в несовместимой mode.
Все.
...
Рейтинг: 0 / 0
ждать без sleep
    #34592314
Jannny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Muxx1986Есть список функций в формате CHAR. Они содержат DML и COMMIT. Их нельзя менять.
Надо их выполнить. Я для этого использую job. Можно ли иначе?Имеется ввиду, что они не должны закоммитить данные текущей транзакции или что?
...
Рейтинг: 0 / 0
ждать без sleep
    #34592331
Muxx1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey anonimousСеемееееен Семеныч!
Ну так бы и говорили - надо дождаться завершения работы job...
Все просто - в job развешиваете пользовательскую блокировку (dbms_lock), процесс пытается ее захватить в несовместимой mode.
Все.

Можно поподробней? Права на dbms_lock есть только через роль.Так сработает?
...
Рейтинг: 0 / 0
ждать без sleep
    #34592337
Muxx1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JannyИмеется ввиду, что они не должны закоммитить данные текущей транзакции или что?

Функции работают с одной таблицей. И необходимо добиться их последовательного выполнения.
...
Рейтинг: 0 / 0
ждать без sleep
    #34592340
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous db-man убивать на месте
Угу. Но это они сами виноваты - привилегию не хотят давать :)
Справедливости ради следует отметить, что не всегда возможно дать привилегии без остановки эксплуатируемой прикладной системы.

убивать всех.
лень админа не повод ставить на колени сервер
...
Рейтинг: 0 / 0
ждать без sleep
    #34592365
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Muxx1986Можно поподробней? Права на dbms_lock есть только через роль.Так сработает?
Боюсь, что права потребуются прямые.
Но без dbms_lock можно легко обойтись - создайте служебную табличку с одной строкой. job делает update locktable set status='done' , приложение - select for update и проверяет статус :)
...
Рейтинг: 0 / 0
ждать без sleep
    #34592368
Jannny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Muxx1986 JannyИмеется ввиду, что они не должны закоммитить данные текущей транзакции или что?Функции работают с одной таблицей. И необходимо добиться их последовательного выполнения.Ну так а зачем джоб? Запускаете последовательно(динамикой). То, что у Вас коммиты посередине, можно "прикрыть" автономной транзакцией, но целостности транзакции Вам все равно не получить - что так, что этак...
...
Рейтинг: 0 / 0
ждать без sleep
    #34592371
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) andrey_anonymous db-man убивать на месте
Угу. Но это они сами виноваты - привилегию не хотят давать :)
Справедливости ради следует отметить, что не всегда возможно дать привилегии без остановки эксплуатируемой прикладной системы.
лень админа не повод ставить на колени сервер
Ви нэ понялы - это может зависеть от дизайна системы, а не от лени админа.
Если, к примеру, нужный пакет постоянно используется каким-нть очень нужным "вечным" job, то пишите письма... ;)
...
Рейтинг: 0 / 0
ждать без sleep
    #34592374
Muxx1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А статус оно как проверяет? Не очень понятно.
...
Рейтинг: 0 / 0
ждать без sleep
    #34592376
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все как обычно До сих пор в памяти жив тот Кондратий, который меня чуть не охватил, когда я узрел (в очень сурьезном продукте) подобный sleep через цикл там где можно было обойтись select for update !!!
...
Рейтинг: 0 / 0
ждать без sleep
    #34592377
Partos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The query would then look like this:
1 SELECT S.USERNAME,S.SID,P.SPID
2 FROM V$SESSION S,V$PROCESS P
3 WHERE S.PADDR=P.ADDR AND
4* S.USERNAME='SCOTT'
SQL> /
USERNAME SID SPID
------------------------------ ---------- ------------
SCOTT 36 12518


Attaching the debugger to the given session can now be done by the following command:

SQL> oradebug setospid 12518
Oracle pid: 19, Unix process pid: 12518, image: oracle10g@medo.noip.com

Suspending and resuming sessions
This example is given only for completeness, In reality, need for suspending user sessions arises
very infrequently, and even then, we should look for an alternative solution, if possible.
Suspending and resuming a session is an internal operation and, as such, should be used only when
truly necessary or requested by oracle support.
We can suspend the session that we have attached our debugger to, by using the following
command:

SQL> oradebug suspend
Statement processed.

The process that debugger is attached to will be suspended. It is important not to try that with the
sessions that are connected through the dispatcher (MTS) because, the session will find
another free shared server process to execute its SQL command. This is well suited for dedicated
server sessions only. The dedicated server session that I attached my process to
will appear to be hanging and will not react to SQL. Reaction will come only when I resume
the session with the following command:

SQL> oradebug resume
Statement processed.
...
Рейтинг: 0 / 0
ждать без sleep
    #34592385
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Muxx1986А статус оно как проверяет? Не очень понятно.
Пропустил пост с назначением job. Присоединяюсь к Janny, скорее всего job не нужен.

...статус же проверять надо чтобы убедиться, что сессия не захватила блокировку до того, как ее зацепил job.
...
Рейтинг: 0 / 0
ждать без sleep
    #34592386
Partos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только на это надо привелегии sysdba
...
Рейтинг: 0 / 0
ждать без sleep
    #34592390
Muxx1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Gluk

Можешь написать как нужно сделать?
...
Рейтинг: 0 / 0
ждать без sleep
    #34592392
slepslap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous Muxx1986Можно поподробней? Права на dbms_lock есть только через роль.Так сработает?
Боюсь, что права потребуются прямые.
Но без dbms_lock можно легко обойтись - создайте служебную табличку с одной строкой. job делает update locktable set status='done' , приложение - select for update и проверяет статус :)

А мой способ не лучше, которй я выше написал?
...
Рейтинг: 0 / 0
ждать без sleep
    #34592393
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous Gluk (Kazan) andrey_anonymous db-man убивать на месте
Угу. Но это они сами виноваты - привилегию не хотят давать :)
Справедливости ради следует отметить, что не всегда возможно дать привилегии без остановки эксплуатируемой прикладной системы.
лень админа не повод ставить на колени сервер
Ви нэ понялы - это может зависеть от дизайна системы, а не от лени админа.
Если, к примеру, нужный пакет постоянно используется каким-нть очень нужным "вечным" job, то пишите письма... ;)

См. мой предыдущий пост.
Я не был бы столь кровожаден будь ситуация менее жизненной
...
Рейтинг: 0 / 0
ждать без sleep
    #34592401
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Muxx1986To Gluk

Можешь написать как нужно сделать?

могу
сколько заплатишь ?
...
Рейтинг: 0 / 0
25 сообщений из 83, страница 2 из 4
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ждать без sleep
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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