Oracle Advanced Queues - nasluchiwanie w tle?
Leszek Pachura - 11-04-2007 00:02
Oracle Advanced Queues - nasluchiwanie w tle?
Czesc,
Oracle 10. Zalozmy ze mamy w bazie kolejke (queue) do ktorej rozne procesy moga dodawac komunikaty-polecenia (np. skasuj takie-a-takie rekordy z takiej-a- takiej tabeli, zapisz cos do logu etc. etc.). Te komunikaty odbiera - a nastepnie wykonuje - pewien proces.
Pytanie: czy da sie uruchomic ten proces wykonawczy "w tle"?
Moge rzecz jasna napisac procedure o mniej-wiecej takim kodzie (zapis uproszczony):
create procedure wykonuj_polecenia begin loop -- nieskonczona petla komunikatow dbms_aq.dequeue('kolejka', bufor_payload); if bufor_payload.rozkaz = 'kasuj' then delete from TABELA; ... commit; end loop; end;
....ale zawsze gdzies bedzie musial wisiec proces kliencki ktory ja odpalil (np. zablokowane okno SQL*Plusa). Czy da sie to jakos obejsc? Tak zeby proces nasluchiwal sobie w tle, w srodku samej bazy?
- moze zrobic to jakos z pomoca jobow? - moze da sie zalozyc trigger na advanced queue? - na www widzialem ze w kontekscie queues mowi sie o "agents" - moze to pomoze?
Dzieki.
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
ThomasO@cpas.com - 12-04-2007 00:08
On Apr 10, 4:23 pm, "Leszek Pachura" <pach...@op.pl> wrote: > Czesc, > > Oracle 10. Zalozmy ze mamy w bazie kolejke (queue) do ktorej rozne procesy moga > dodawac komunikaty-polecenia (np. skasuj takie-a-takie rekordy z takiej-a- > takiej tabeli, zapisz cos do logu etc. etc.). Te komunikaty odbiera - a > nastepnie wykonuje - pewien proces. > > Pytanie: czy da sie uruchomic ten proces wykonawczy "w tle"? > > Moge rzecz jasna napisac procedure o mniej-wiecej takim kodzie (zapis > uproszczony): > > create procedure wykonuj_polecenia > begin > loop -- nieskonczona petla komunikatow > dbms_aq.dequeue('kolejka', bufor_payload); > if bufor_payload.rozkaz = 'kasuj' then > delete from TABELA; > ... > commit; > end loop; > end; > > ...ale zawsze gdzies bedzie musial wisiec proces kliencki ktory ja odpalil (np. > zablokowane okno SQL*Plusa). Czy da sie to jakos obejsc? Tak zeby proces > nasluchiwal sobie w tle, w srodku samej bazy? > > - moze zrobic to jakos z pomoca jobow? > - moze da sie zalozyc trigger na advanced queue? > - na www widzialem ze w kontekscie queues mowi sie o "agents" - moze to pomoze? > > Dzieki. > > -- > Wysłano z serwisu OnetNiusy:http://niusy.onet.pl
Uzyj DBMS_JOB. DECLARE nJob BINARY_INTEGER; BEGIN DBMS_JOB.Submit( nJob, 'wykonuj_polecenia;' ); COMMIT; END; Thomas
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?=
Oracle 19g +Insert +Insert +Insert...
[oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?=
[Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?=
=?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?=
[oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?=
[oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?=
MSSQL Express czy Oracle Express
=?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?=
=?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
zanotowane.pldoc.pisz.plpdf.pisz.plkfia-tek.keep.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|