ďťż
 
oracle - zmienna globalna ďťż
 
oracle - zmienna globalna
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

oracle - zmienna globalna



mariaczi - 19-09-2007 00:08
oracle - zmienna globalna
  Witam,

w pakiecie jest funkcja wywoływana z/przez aplikację. Jak zabezpieczyć
(co zastosować) aby w danej chwili mogła być uruchomiona tylko 1 raz?
Kolejny raz może zostać uruchomiona po zakończeniu poprzedniego
wywołania. Myślałem o użyciu jakiejś globalnej zmiennej dla wszystkich
instancji tej funkcji. Jak zrealizować to "pojedyncze" wywołanie.

Z góry dziękuję za pomoc,
pozdrawiam.





Wiktor Moskwa - 19-09-2007 00:08

  On 18.09.2007, mariaczi <mariaczi@WYTNIJTO.op.pl> wrote:
> Witam,
>
> w pakiecie jest funkcja wywoływana z/przez aplikację. Jak zabezpieczyć
> (co zastosować) aby w danej chwili mogła być uruchomiona tylko 1 raz?
> Kolejny raz może zostać uruchomiona po zakończeniu poprzedniego
> wywołania. Myślałem o użyciu jakiejś globalnej zmiennej dla wszystkich
> instancji tej funkcji. Jak zrealizować to "pojedyncze" wywołanie.

Jeśli wykonywanie tej funkcji ma być rzeczywiście szeregowane
globalnie to DBMS_LOCK.
Co ma ta funkcja robić? Może można to rozwiązać mniej drastycznie
zakładając blokady tylko na niektóre wiersze.

--
Wiktor Moskwa




mariaczi - 19-09-2007 00:08

  On Tue, 18 Sep 2007 07:47:15 +0000 (UTC), Wiktor Moskwa
<wiktorDOTmoskwa@gmail.com> wrote:

>On 18.09.2007, mariaczi <mariaczi@WYTNIJTO.op.pl> wrote:
>> Witam,
>>
>> w pakiecie jest funkcja wywoływana z/przez aplikację. Jak zabezpieczyć
>> (co zastosować) aby w danej chwili mogła być uruchomiona tylko 1 raz?
>> Kolejny raz może zostać uruchomiona po zakończeniu poprzedniego
>> wywołania. Myślałem o użyciu jakiejś globalnej zmiennej dla wszystkich
>> instancji tej funkcji. Jak zrealizować to "pojedyncze" wywołanie.
>
>Jeśli wykonywanie tej funkcji ma być rzeczywiście szeregowane
>globalnie to DBMS_LOCK.
>Co ma ta funkcja robić? Może można to rozwiązać mniej drastycznie
>zakładając blokady tylko na niektóre wiersze.
Funkcja ma na podstawie danych z innych tabel generować nowe wiersze
do "swoich" tabel.Chodzi mo o takie zablokowanie aby niemożliwe było
uruchomienie tej funkcji w tym samym czasie przez 2 lub wiecej
uzytkowników. Funkcja jest wywoływana z dll'a delphi. Aplikacja
(klient) uruchamiana jest lokalnie na kazdej maszynie.




Wiktor Moskwa - 19-09-2007 00:08

  On 18.09.2007, mariaczi <mariaczi@WYTNIJTO.op.pl> wrote:
> On Tue, 18 Sep 2007 07:47:15 +0000 (UTC), Wiktor Moskwa
><wiktorDOTmoskwa@gmail.com> wrote:
>>
>>Jeśli wykonywanie tej funkcji ma być rzeczywiście szeregowane
>>globalnie to DBMS_LOCK.
>>Co ma ta funkcja robić? Może można to rozwiązać mniej drastycznie
>>zakładając blokady tylko na niektóre wiersze.
> Funkcja ma na podstawie danych z innych tabel generować nowe wiersze
> do "swoich" tabel.Chodzi mo o takie zablokowanie aby niemożliwe było
> uruchomienie tej funkcji w tym samym czasie przez 2 lub wiecej
> uzytkowników. Funkcja jest wywoływana z dll'a delphi. Aplikacja
> (klient) uruchamiana jest lokalnie na kazdej maszynie.

Ale tak biznesowo co ta funkcja robi? :)
Agregacja danych? Replikacja? Jakieś skomplikowane przetwarzanie?
Może funkcja powinna być uruchamiana okresowo co jakiś czas
w zdefiniowanym JOBie, a nie za każdym razem przez różnych klientów.
Tak w ogóle to jaka to jest wersja Oracle?

Funkcje z pakietu DBMS_LOCK pozwolą Ci wymusić wykonywanie funkcji
tylko przez 1 transakcję jednocześnie - ale to oczywiście może
uniemożliwić pracę z aplikacją.

--
Wiktor Moskwa





bogdan no - 20-09-2007 00:03

  > w pakiecie jest funkcja wywoływana z/przez aplikację. Jak zabezpieczyć
> (co zastosować) aby w danej chwili mogła być uruchomiona tylko 1 raz?
> Kolejny raz może zostać uruchomiona po zakończeniu poprzedniego
> wywołania. Myślałem o użyciu jakiejś globalnej zmiennej dla wszystkich
> instancji tej funkcji. Jak zrealizować to "pojedyncze" wywołanie.

Hej

Można to obejść, np. sprawdzając przed wywołaniem funkcji lub tuż po wejściu
do niej, ustawiając jakąś wartość (0/1) w utworzonej specjalnie ku temu
tabelce. A można by się pokusić (jeżeli juz sie tworzy tabelę specjalnie ku
temu) o logowanie używania tej funkcji.

pzdr
bogdan

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/




=?ISO-8859-2?Q?Marcin_Wr=F3blewski?= - 21-09-2007 00:03

  mariaczi <mariaczi@WYTNIJTO.op.pl> napisał(a):

> Witam,
>
> w pakiecie jest funkcja wywoływana z/przez aplikację. Jak zabezpieczyć
> (co zastosować) aby w danej chwili mogła być uruchomiona tylko 1 raz?
> Kolejny raz może zostać uruchomiona po zakończeniu poprzedniego
> wywołania. Myślałem o użyciu jakiejś globalnej zmiennej dla wszystkich
> instancji tej funkcji. Jak zrealizować to "pojedyncze" wywołanie.
>
> Z góry dziękuję za pomoc,
> pozdrawiam.

Stwórz jakąś tabelkę, powiedzmy tab, z jednym wierszem - dowolnym.

Na początku twojej procedury wykonaj:

select * from tab for update nowait;

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • wawa19wwa91.pev.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com