Jak logowac zmiany w tabelach Oracle
remg - 09-12-2005 19:53
Jak logowac zmiany w tabelach Oracle
Witam, czy ktos moze poradzic w jaki sposob zrobic na Oracle system pozwalający logowac zmiany w roznych tabelach do jednej tabeli z logami.. Jednym slowem taki globalny trigger na schemacie lub bazie ktory potrafilby wstawiac do tabeli z logami parametry i typ operacji ktora miala wplyw na zmiane niektorych danych. Np logowalyby sie czas: ostatniej zmiany (dodanie,update lub kasowanie) oraz ID danego rekordu ktory ulegl modyfikacji Najlepiej oczywiscie zrobic to na triggerach, ale jak uniknąc robienia triggera dla kazdej tabeli oddzielnie?
pozdrawiam
Marcin 'goral' Goralski - 09-12-2005 19:54
remg wrote:
> niektorych danych. Np logowalyby sie czas: ostatniej zmiany (dodanie,update > lub kasowanie) oraz ID danego rekordu ktory ulegl modyfikacji
co daje zalogowanie ID i czasu modyfikacji rekordu ktory zostal usuniety ? bo do odzysku danych sie nie przyda, a jesli ID jest przezroczyste dla koncowego uzytkownika aplikacji opartej o taki system ... to nie ma znaczenia.
> Najlepiej oczywiscie zrobic to na triggerach, ale jak uniknąc robienia > triggera dla kazdej tabeli oddzielnie?
IMHO nie da sie. Mozesz sie pobawic Log Minerem, chociaz to nie ta sama wygoda co odpytac tablice logow. Ale przynajmniej bedziesz mial wszystkie DMLe zlogowane, o ile archiwizowanie jest wlaczone.
Marcin Goralski
=?UTF-8?B?UGF3ZcWCIE1hdGVqc2tp?= - 09-12-2005 19:54
Marcin 'goral' Goralski wrote: > remg wrote: > >> niektorych danych. Np logowalyby sie czas: ostatniej zmiany >> (dodanie,update >> lub kasowanie) oraz ID danego rekordu ktory ulegl modyfikacji > > co daje zalogowanie ID i czasu modyfikacji rekordu ktory zostal usuniety > ? bo do odzysku danych sie nie przyda,
Bo gdzieś w tych logach będzie wstawaienie/poprawienie rekordu o tym ID.
> a jesli ID jest przezroczyste dla > koncowego uzytkownika aplikacji opartej o taki system ... to nie ma > znaczenia. > >> Najlepiej oczywiscie zrobic to na triggerach, ale jak uniknÂąc robienia >> triggera dla kazdej tabeli oddzielnie?
Na postgresie zrobiłem coś takiego - jedna funkcja w pg/plperl i trigger na każdej tabeli (trigger w postgresie to jest tylko powiązanie akcji na tabeli z funkcją).
W oracle'u chyba nie unikniesz tworzenia triggera dla każdej tabeli. Ale nic nie stoi na przeszkodzie, aby proces tworzenia takiego triggera zautomatyzować, czyli napisać sobie funkcje, która takie standardowe triggery będzie tworzyła.
-- P.M.
Marcin 'goral' Goralski - 09-12-2005 19:54
Paweł Matejski wrote:
> Na postgresie zrobiłem coś takiego - jedna funkcja w pg/plperl i trigger > na każdej tabeli (trigger w postgresie to jest tylko powiązanie akcji na > tabeli z funkcją).
czyli zalozyles triggera na kazdej tablicy prawda ? Obojetnie co jest w jego ciele :-), jednak jest to trigger na pojedynczym obiekcie, a nie schemacie :-)
> W oracle'u chyba nie unikniesz tworzenia triggera dla każdej tabeli. Ale
Ale ty wlasnie zrobiles trigger dla kazdej tablict prawda ? Tak napisales wyzej ...
> nic nie stoi na przeszkodzie, aby proces tworzenia takiego triggera > zautomatyzować, czyli napisać sobie funkcje, która takie standardowe > triggery będzie tworzyła.
A pewnie. Chocby selekt po wszystkich tablicach i tworzenie dynamicznie triggera, z domyslna nazwa i wywolaniem jednej procedury.
Marcin Goralski
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 09-12-2005 19:54
Marcin 'goral' Goralski wrote: > Paweł Matejski wrote: > >> Na postgresie zrobiłem coś takiego - jedna funkcja w pg/plperl i >> trigger na każdej tabeli (trigger w postgresie to jest tylko >> powiązanie akcji na tabeli z funkcją). > > czyli zalozyles triggera na kazdej tablicy prawda ? Obojetnie co jest w > jego ciele :-), jednak jest to trigger na pojedynczym obiekcie, a nie > schemacie :-)
No, zgadza się. :) Moje rozróżnienie bierze się stąd, że nie przejmuje się ilością trigerów, a ilością kodu do utrzymania - a w tym przyapdku mam jedną funkcje. :)
-- P.M.
remg - 09-12-2005 19:54
Ja wlasnie myslalem ze uda sie uniknac robienia triggera na kazdej tabeli. Bo zrobienie takiego triggera z wywolaniem pojedynczej funkcji to oczywiscie nie jest problem. Tyle ze potem trzeba utrzymywac troche tego kodu a myslalem ze da sie jakos globalnie, raz a dobrze
news - 09-12-2005 19:54
remg wrote: > Witam, > czy ktos moze poradzic w jaki sposob zrobic na Oracle system pozwalający > logowac zmiany w roznych tabelach do jednej tabeli z logami.. Jednym slowem > taki globalny trigger na schemacie lub bazie ktory potrafilby wstawiac do > tabeli z logami parametry i typ operacji ktora miala wplyw na zmiane > niektorych danych. Np logowalyby sie czas: ostatniej zmiany (dodanie,update > lub kasowanie) oraz ID danego rekordu ktory ulegl modyfikacji > Najlepiej oczywiscie zrobic to na triggerach, ale jak uniknąc robienia > triggera dla kazdej tabeli oddzielnie? > > pozdrawiam
W 10g ta funkcjonalnosc jest wbudowana (Flashback Query) w baze i dziala o ile masz duze Rollback Segments albo Undo Tablespace.
dap
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.plbajkomoda.xlx.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 |
|