ďťż
 
transakcja autonomiczna w javie i oracle ďťż
 
transakcja autonomiczna w javie i oracle
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

transakcja autonomiczna w javie i oracle



starko - 07-09-2007 00:01
transakcja autonomiczna w javie i oracle
  Witam,

Próbuję właśnie napisać wbudowaną procedurę w oracle'u która
uruchamiałaby zapytanie w transakcji autonomicznej. Problem wygląda
tak: chciałbym mieć tabelę która przy każdym select-ie bylaby
updateowana (ew. sprawdzane bylyby pewne warunki). Dokładniej chodzi o
widok, który byłby aktualizowany. Problem polega na tym,że stworzę
widok który wyglada nastepujaco:
select * from tabela where (select procedura_aktualizujaca from dual)
= 1;

Procedura jest napisana w javie i zmienia właśnie powyższą tabelę.
Ponieważ nie można używać DDL-a wewnątrz takiego zapytania, dostaję
wyjątek. Problem udało się obejść w pl/sql gdzie można dodać "pragma
autonomous_transaction", niestety w javie tak się to nie uda.
Spotkał się ktoś może z takim problemem?
Będę wdzięczny za pomoc.

Pozdrawiam,
Konrad Starzyk





Thomas Olszewicki - 07-09-2007 00:01

  On Sep 6, 5:22 am, starko <konrad.star...@gmail.com> wrote:
> Witam,
>
> Próbuję właśnie napisać wbudowaną procedurę w oracle'u która
> uruchamiałaby zapytanie w transakcji autonomicznej. Problem wygląda
> tak: chciałbym mieć tabelę która przy każdym select-ie bylaby
> updateowana (ew. sprawdzane bylyby pewne warunki). Dokładniej chodzi o
> widok, który byłby aktualizowany. Problem polega na tym,że stworzę
> widok który wyglada nastepujaco:
> select * from tabela where (select procedura_aktualizujaca from dual)
> = 1;
>
> Procedura jest napisana w javie i zmienia właśnie powyższą tabelę.
> Ponieważ nie można używać DDL-a wewnątrz takiego zapytania, dostaję
> wyjątek. Problem udało się obejść w pl/sql gdzie można dodać "pragma
> autonomous_transaction", niestety w javie tak się to nie uda.
> Spotkał się ktoś może z takim problemem?
> Będę wdzięczny za pomoc.
>
> Pozdrawiam,
> Konrad Starzyk

Konrad,
Mam nadzieje, ze to naprawde konieczne rozwiazanie.
Ogolnie uruchamianie INSERT,UPDATE or DELETE automatycznie gdy robisz
select
nie jest zalecane (...)

Napisz Pl/SQL procedure z PRAGMA AUTHONOMOUS_TRANSACTION
ktora wywoluje Java stored procedure.
Tu zakladam ze Twoja Java procedure jest na Oracle.
To powinno wywolac DML ( UPDATE and COMMIT ) bez naruszanie glownej
transakcji.

Napisz co chcesz osiagnac. Oracle ma wbudowane funkcje "Fine Grained
Audit"
ktore umozliwiaja audit Select statements.

HTH
Thomas




starko - 08-09-2007 00:05

  Dzięki za odpowiedź:)

No więc jest to część projektu integracji różnorodnych źródeł danych.
Póki co zastanawiam się jeszcze nad strukturą całości, więc każda rada
byłaby bardzo pomocna. Ogólnie rzecz biorąc chciałem osiągnąćcoś
takiego (z punktu widzenia Oracle, bo projekt obejmuje też inne źródła
danych):
Chciałbym mieć kilka tabel (lub widoków) które zawierałyby dane
pochodzące z innych źródeł danych. Całość powinna działać
przezroczyście, tzn. update na takiej tabeli powinien uaktualnić
źródło danych. Analogicznie zmiana w źródle danych powinna być
wiodoczna w bazie. Ponieważ jest to projekt (praca inżynierska) na
uczelnię mam pewną dowolność, ale chciałbym zintegrować excela,pliki
xml i być może lotus notes.
Jeżeli chodzi o modyfikowanie tabeli przy select-ie, wiem o tym że nie
jest to najpiękniejsze rozwiązanie, ale nie przychodzi mi nic innego
do głowy (do rozważenia jest jeszcze uruchamianie funkcji co jakiś
czas). Jeżeli widzisz jakieś sensowne rozwiązanie tego problemu będę
bardzo wdzięczny za pomoc, nie chcę się wpakować w jakieś bezmyślne
rozwiązanie.
Pozdrawiam,
Konrad Starzyk




Thomas Olszewicki - 08-09-2007 00:05

  On Sep 7, 2:23 pm, starko <konrad.star...@gmail.com> wrote:
> Dzięki za odpowiedź:)
>
> No więc jest to część projektu integracji różnorodnych źródeł danych.
> Póki co zastanawiam się jeszcze nad strukturą całości, więc każda rada
> byłaby bardzo pomocna. Ogólnie rzecz biorąc chciałem osiągnąć coś
> takiego (z punktu widzenia Oracle, bo projekt obejmuje też inne źródła
> danych):
> Chciałbym mieć kilka tabel (lub widoków) które zawierałyby dane
> pochodzące z innych źródeł danych. Całość powinna działać
> przezroczyście, tzn. update na takiej tabeli powinien uaktualnić
> źródło danych. Analogicznie zmiana w źródle danych powinna być
> wiodoczna w bazie. Ponieważ jest to projekt (praca inżynierska) na
> uczelnię mam pewną dowolność, ale chciałbym zintegrować excela, pliki
> xml i być może lotus notes.
> Jeżeli chodzi o modyfikowanie tabeli przy select-ie, wiem o tym że nie
> jest to najpiękniejsze rozwiązanie, ale nie przychodzi mi nic innego
> do głowy (do rozważenia jest jeszcze uruchamianie funkcji co jakiś
> czas). Jeżeli widzisz jakieś sensowne rozwiązanie tego problemu będę
> bardzo wdzięczny za pomoc, nie chcę się wpakować w jakieś bezmyślne
> rozwiązanie.
> Pozdrawiam,
> Konrad Starzyk

Konrad,
Ciekawy temat, choc troche akademicki.
Jak do tej pory spotkalem sie tylko z integracjia baz danych o
podobnej sile.
Oracle z Oracle,DB2, MSSQL, Informix ect.
Poszukaj w Oracle docs
"Database link" do integracji roznych baz Oracle
"Oracle hetergeneous connectivity" - do integracji non-Oracle i Oracle
databases.
Oracle uzywa ODBC connection, wiec teoretycznie mozesz polaczy sie
nawet z DBASE.

"Transparent Gateway Agents" - do integracji i emulacji Oracle
database na non-Oracle database.
Oracle posiada ogromna ilosc packages do obslugi XML files i schemas.
Wszystko napisane w Java i skompilowane jako Oracle Java Stored
procedure.

Nie spotkalem sie z integracja z Excel lub Lotus notes.

To moze byc Twoje wyjscie:
Uzyc "Oracle hetergeneous connectivity" do integracji z innymi
bazami,
Twoje wlasne programy w Java skompilowane w Oracle jako Java Stored
Procedures
do obslugi Excel i Lotus Notes.

Dalej nie bardzo rozumiem czemu chcesz run INSERT,UPDATE,DELETE z
Select statement.

HTH
Thomas





starko - 09-09-2007 00:04

  Wiesz, to że ja potrzebowałem triggerów na select wynikało z tego jaki
miałem pomysł rozwiązania tego problemu, szczerze mówiąc nie
wiedziałem o Oracle hetergenous connectivity, zaraz się za tym
rozejrze. Ogólnie rzecz biorąc mój pomysł był taki, żeby stworzyć
tabele/widoki, przy czym każda z nich mogłaby być "połączona" z innym
źródłem danych. I na tych tabelach stworzyć widok, wraz odpowiednimi
triggerami, który można byłoby updateować. Przy update takiej tabeli
dane byłby odsyłane do pierwotnego źródła danych.
Mówisz że problem jest akademicki - no cóż to jest praca inżynierska,
dokładniej chodzi o Integrację heterogenicznych źródeł danych (na
poziomie danych).
Oracle jest jednym ze źródeł które powinniśmy zintegrować, ale praca
obejmuje też integrację np XML-a z Excelem czy katalogiem LDAP
(przykładowo). Idea jest jednak taka by nie tworzyć jednego systemu
który kontroluje całość, tylko wykorzystać wbudowane mechanizmy
(procedury wbudowane, makra w excelu) tam gdzie jest to możliwe.
Integracja - przynajmniej jak ja ją rozumiem powinna działać tak że
zmiany w źródłach danych powodują aktualizację danych wyjściowych i
odwrotnie.
Jeżeli możesz jeszcze coś podpowiedzieć będę wdzięczny.
Pozdrawiam,
Konrad Starzyk




Thomas Olszewicki - 11-09-2007 00:09

  On Sep 8, 4:46 am, starko <konrad.star...@gmail.com> wrote:
> Wiesz, to że ja potrzebowałem triggerów na select wynikało z tegojaki
> miałem pomysł rozwiązania tego problemu, szczerze mówiąc nie
> wiedziałem o Oracle hetergenous connectivity, zaraz się za tym
> rozejrze. Ogólnie rzecz biorąc mój pomysł był taki, żeby stworzyć
> tabele/widoki, przy czym każda z nich mogłaby być "połączona" zinnym
> źródłem danych. I na tych tabelach stworzyć widok, wraz odpowiednimi
> triggerami, który można byłoby updateować. Przy update takiej tabeli
> dane byłby odsyłane do pierwotnego źródła danych.
> Mówisz że problem jest akademicki - no cóż to jest praca inżynierska,
> dokładniej chodzi o Integrację heterogenicznych źródeł danych (na
> poziomie danych).
> Oracle jest jednym ze źródeł które powinniśmy zintegrować, ale praca
> obejmuje też integrację np XML-a z Excelem czy katalogiem LDAP
> (przykładowo). Idea jest jednak taka by nie tworzyć jednego systemu
> który kontroluje całość, tylko wykorzystać wbudowane mechanizmy
> (procedury wbudowane, makra w excelu) tam gdzie jest to możliwe.
> Integracja - przynajmniej jak ja ją rozumiem powinna działać tak że
> zmiany w źródłach danych powodują aktualizację danych wyjściowych i
> odwrotnie.
> Jeżeli możesz jeszcze coś podpowiedzieć będę wdzięczny.
> Pozdrawiam,
> Konrad Starzyk

Konrad,
Moja wiedza ogranicza sie tylko do integracji Oracle z innymi
zrodlami.
Twoj pomysl do uzycia views jest dobry.
W Oracle mozesz uzyc INSTEAD OF Triggers polaczone do views:
Zobacz:
http://download.oracle.com/docs/cd/B...htm#sthref3240
Taki trigger jest uruchomiony za kazdym razem gdy chcesz wykonac DML.

Inny pomysl to uzycie Oracle :External Tables
Zobacz:
http://download.oracle.com/docs/cd/B...htm#sthref1800
Exernal table to Oracle table polaczony do zbioru tekstowego.
Dziala prawie jak zwykly Oracle table: INSERT, UPDATE DALETE.

HTH
Thomas
  • 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
  • fantazia.htw.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