Paweł W.

Paweł W. Oracle & PL/SQL
Developer

Temat: Rejestrowanie zmian w bazie (Oracle)

Jakie znacie sposoby na rejestrowanie zmian danych w tabelach?Chodzi o to żeby gdzieś w bazie pozostał ślad kto dany rekord usunął/dodał/zmodyfikował.
Problem w tym że jeśli nawet aplikacja wie kto dokonał zmian to w jaki sposób ma przesłać tą informację do bazy?
Jeśli mamy zwykłe jdbc (albo inne coś) to można ustawiać zmienne (syscontext), ale jeśli mamy pule połączeń to co?Wtedy możemy dodać do tabeli kolumnę z ID osoby modyfikującej i tam przesłać tę informacje (można to wyłapać na triggerze).
Jeśli jednak osoba usuwa rekord to tego pola nie da się już przesłać.Jak profesjonalnie poradzić sobie z takim problemem? a Więc w skrócie: jak przesłać z aplikacji do bazy informacje o osobie usuwającej rekord pod warunkiem że aplikacja wykorzystuje pulę połączeń.
Chodzi też o to żeby metoda była mało inwazyjna w technologię ADF.
Pozdrawiam,PawełPaweł Walat edytował(a) ten post dnia 29.06.10 o godzinie 15:07

konto usunięte

Temat: Rejestrowanie zmian w bazie (Oracle)

zapoznaj sie z FGA czyli Fine Grain Auditing

konto usunięte

Temat: Rejestrowanie zmian w bazie (Oracle)

A czemu nie na triggerach ?

konto usunięte

Temat: Rejestrowanie zmian w bazie (Oracle)

Jak dodasz do tabeli kolumne z id uzytkownika, to mozesz skorzystac z CDC.

konto usunięte

Temat: Rejestrowanie zmian w bazie (Oracle)

Paweł Walat:
Jakie znacie sposoby na rejestrowanie zmian danych w tabelach?Chodzi o to żeby gdzieś w bazie pozostał ślad kto dany rekord usunął/dodał/zmodyfikował.
Problem w tym że jeśli nawet aplikacja wie kto dokonał zmian to w jaki sposób ma przesłać tą informację do bazy?
Jeśli mamy zwykłe jdbc (albo inne coś) to można ustawiać zmienne (syscontext), ale jeśli mamy pule połączeń to co?Wtedy możemy dodać do tabeli kolumnę z ID osoby modyfikującej i tam przesłać tę informacje (można to wyłapać na triggerze).
Jeśli jednak osoba usuwa rekord to tego pola nie da się już przesłać.Jak profesjonalnie poradzić sobie z takim problemem? a Więc w skrócie: jak przesłać z aplikacji do bazy informacje o osobie usuwającej rekord pod warunkiem że aplikacja wykorzystuje pulę połączeń.
Chodzi też o to żeby metoda była mało inwazyjna w technologię ADF.
Pozdrawiam,Paweł

1) nie kasować rekordów (status = 'skasowany') + pole "zmieniony przez"
lub
2) dodać tabelę "log transakcji" - kto, gdzie, kiedy (potrzebny klucz techniczny w tabeli oryginalnej lub pole opisowe "klucz" w logu)

3) triggerów w tym wypadku nie polecam - łatwe do zrobienia, ale za bardzo wpływają na wydajność (zwłaszcza procesów które nie chciałbyś logować) i utrudniają zarządzanie bazą, poza tym nie jest to chyba coś przez co warto zmieniać maszynę...

4) może wspomniany CDC - ale to już stricte Oracle'owe i szczerze mówiąc tak dobrze tego DBMS-a nie znam

Nr 2 jest mało inwazyjne - pod warunkiem że panujesz nad aplikacją.
Wojciech Sitterlee

Wojciech Sitterlee Architekt Systemów
Informatycznych

Temat: Rejestrowanie zmian w bazie (Oracle)

Popatrz na WORKSPACE MANAGER i pakiet DBMS_WM. A w nim funkcję "ENABLEVERSIONING".

To standardowy mechanizm Oracle. Działa całkiem nieźle.

Następna dyskusja:

Wrażliwe dane w bazie Oracle




Wyślij zaproszenie do