Frage

Ich habe eine Notwendigkeit zu tun, alle Datenbankaktivitäten Prüfung unabhängig davon, ob es darum ging, aus der Anwendung oder jemand einige SQL über andere Mittel ausgeben. So ist die Revision muss auf Datenbankebene durchgeführt werden. Die betreffende Datenbank ist Oracle. Ich sah es über Trigger zu tun und auch über so genannte Engmaschiges Revision, die Oracle bietet. In beiden Fällen wandten wir uns über die Prüfung auf bestimmte Tabellen und bestimmte Spalten. Allerdings fanden wir, dass die Leistung wirklich saugt, wenn wir eine dieser Methoden verwenden.

Da Revision ist ein absolutes Muss aufgrund Vorschriften rund um den Datenschutz gelegt, ich frage mich, was am besten Weg, dies ohne nennenswerte Leistungseinbußen zu tun. Wenn jemand mit dieser Oracle spezifische Erfahrung, wird es hilfreich sein, aber wenn nicht nur allgemeine Praktiken rund um die Datenbankaktivität Revision werden auch in Ordnung sein.

War es hilfreich?

Lösung

Ich bin mir nicht sicher, ob es ein reif genug Ansatz für eine Produktion ist System, aber ich hatte ziemlich viel Erfolg mit Monitoring-Datenbank Verkehr mit einem Netzwerk-Traffic Sniffer.

Senden Sie die Rohdaten zwischen der Anwendung und Datenbank in einer anderen aus Maschine und zu dekodieren und sie dort analysieren.

Ich habe PostgreSQL, und den Verkehr Decodierung und verwandelt sie in ein Strom von Datenbankoperationen, die protokolliert werden können, war relativ einfach. Ich stelle mir vor es auf jeder Datenbank arbeiten würde, wo das Paket Format ist dokumentiert aber.

Der wichtigste Punkt war, dass es keine zusätzliche Last auf die Datenbank stellen selbst.

Auch wurde die passive Überwachung, es aufgezeichnet alle Aktivitäten, aber konnte keine Vorgänge blockieren, so vielleicht nicht ganz das, was Sie suchen.

Andere Tipps

Es gibt keine Notwendigkeit, „Ihre eigene Rolle“. Schalten Sie einfach Revision:

  1. Stellen Sie die Datenbankparameter AUDIT_TRAIL = DB.
  2. Starten Sie die Instanz.
  3. Melden Sie sich mit SQLPlus.
  4. die Anweisung
    audit all;
    This Geben Sie schaltet die Überwachung für viele kritische DDL-Operationen, aber DML und einige andere DDL-Anweisungen sind immer noch nicht geprüft.
  5. Um die Überwachung auf diesen anderen Aktivitäten zu ermöglichen, versucht Aussagen wie diese:
    audit alter table; -- DDL audit
    audit select table, update table, insert table, delete table; -- DML audit

Hinweis: Alle „als sysdba“ Aktivität wird immer geprüft, um den O / S. In Windows bedeutet dies, das Ereignisprotokoll von Windows. In UNIX ist dies in der Regel $ ORACLE_HOME / RDBMS / audit.

Überprüfen Sie die Oracle 10g R2 Audit Kapitel der Datenbank SQL-Referenz.

Die Datenbank Audit-Trail in der SYS.DBA_AUDIT_TRAIL Ansicht betrachtet werden.

Es sei darauf hingewiesen, dass die interne Revision Oracle High-Performance-per Definition sein. Es ist so konzipiert, genau zu sein, dass, und es ist sehr schwer, etwas anderes denken es für die Leistung rivalisierenden. Außerdem gibt es ein hohes Maß an „feinkörnig“ Kontrolle von Oracle Revision. Sie können es nur so präzise wie Sie es wollen. Schließlich kann die SYS.AUD $ Tabelle zusammen mit ihrem Indizes in einen separaten Tabellenbereich bewegt werden, um das SYSTEM Tabellen zu verhindern füllen.

Mit freundlichen Grüßen, Opus

Wenn Sie Kopien der geänderten Datensätze auf einem Zielsystem aufnehmen möchten Sie diese mit Golden Gate Software tun können, und nicht viel entstehen in der Art der Quellenseite Ressourcen abtropfen lassen. Auch müssen Sie keine Änderungen an der Quelldatenbank machen diese Lösung zu implementieren.

Golden Gate schabt die Redo-Logs für Transaktionen mit Bezug auf eine Liste von Tabellen, die Sie interessieren. Diese Änderungen geschrieben werden, zu einer ‚Trail Datei‘ und können zu einem Ziel zu einem anderen Schema auf der gleiche Datenbank oder versandt angewandt werden System und angewandte dort (ideal für Last auf dem Quellsystem zu reduzieren).

Wenn Sie die Trail-Datei auf das Zielsystem zu bekommen gibt es einige Konfigurations zwickt Sie eine Option Revision ausführen festlegen und bei Bedarf Sie 2 Golden Gate Funktionen aufrufen können Informationen über die Transaktion zu erhalten:

1) Stellen Sie die INSERTALLRECORDS Replication Parameter einen neuen Datensatz in der Zieltabelle für jeden Wechselvorgang an die Quellentabelle vorgenommen einzufügen. Passen Sie diese viel Platz essen kann, aber wenn Sie umfassende Auditierung müssen, ist dies wahrscheinlich erwartet.

2) Wenn Sie nicht bereits über eine CHANGED_BY_USERID und CHANGED_DATE auf Ihre Aufzeichnungen angeschlossen haben, können Sie die Golden Gate-Funktionen auf der Zielseite nutzen diese Informationen für die aktuelle Transaktion zu erhalten. Überprüfen Sie die folgenden Funktionen im GG-Referenzhandbuch aus: GGHEADER ( "USERID") GGHEADER ( "Timestamp")

So ist es kein nicht frei (erfordert Lizenzierung durch Oracle) und wird einige Anstrengungen erfordern Spin, aber wahrscheinlich viel weniger Aufwand / Kosten als die Implementierung und Pflege einer benutzerdefinierten Lösung, um Ihre eigenen Rollen, und Sie haben den zusätzlichen Vorteil, die Daten an einem entfernten System Versand, so können Sie nur minimale Auswirkungen auf Ihre Source-Datenbank garantieren.

Wenn Sie Oracle verwenden, dann gibt es Funktion CDC (Capture-Daten ändern) genannt, die mehr Leistung effiziente Lösung für die Prüfung Art von Anforderungen ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top