2009-05-26 11 views
0

Ich verwende (müssen), eine schlecht gestaltete Oracle (10) DB, für die ich keine Admin-Rechte haben (obwohl ich Tabellen erstellen , Trigger usw. in meinem Schema).Überwachung, die Aussage Updates (und wann) eine bestimmte Tabellenzeile mit Oracle 10

Nun hatte ich auf ein Problem stoßen: Diese DB mit mehreren Benutzern/Programmen verbunden. Ich muss herausfinden, wer eine bestimmte Zeile aktualisiert, wann und wenn möglich: mit welcher Art von Anweisung. Ist es möglich?

Vielen Dank im Voraus!

Antwort

2

Es wäre einfacher, dies zu tun, wenn Sie Administratorrechte zum Aktivieren der Überwachung hätten. Ohne die Macht des Auditings bleiben Sie mit der Verwendung von Triggern, um die Protokollierung von Einfügungen/Updates/Löschen zu behandeln. In Ihrem Fall, da Sie nur am Update interessiert sind, können Sie einen Trigger auf den Tisch setzen, um nach dem Update zu feuern, der sich an einer anderen Tabelle meldet, was von wem geändert wurde, von wo zu was und an welchem ​​Tag.

+0

ich gehe davon aus, es ist die Art und Weise ist. Aber ich bin auch interessiert in der update-Anweisung –

+0

In Ihrem Auslöser, eine "Komm und sprich mit Zsolt" Ausnahme. :) –

+0

Verwenden Sie die sys_context-Paket in Ihrem Trigger, um die SQL ausgeführt werden und alle anderen Informationen über den Benutzer, den Sie protokollieren wollen in eine andere Tabelle. – MichaelN

0

Ich würde eine Journaltabelle für die Tabelle erstellen, mit der Sie arbeiten. Es zeigt Ihnen den Operationstyp und den Oracle Benutzer ... sowie eine Menge anderer Daten, wenn Sie sie brauchen.

+0

Höchstwahrscheinlich wird der Benutzer Oracle "SYSTEM" sein :-( –

+0

Haben Sie zusätzliche Audit-Felder, die Benutzerinformationen für Ihre Anwendungen speichern? Wir haben dies in unseren Journaltabellen aufgenommen, um Benutzer zu ermitteln. Außerdem können Sie die Computername des angeschlossenen PC, haben Sie diese Informationen haben? – northpole

+0

AFAIK Nö :-( so in meinem Fall, die, wann und wie Antworten wäre das sehr hilfreich sein. –