Heim > Datenbank > Oracle > So ändern Sie Tabellendatensätze in Oracle

So ändern Sie Tabellendatensätze in Oracle

PHPz
Freigeben: 2023-04-04 10:27:58
Original
1575 Leute haben es durchsucht

Oracle-Datenbank ist derzeit das am weitesten verbreitete relationale Datenbankverwaltungssystem der Welt. Es verfügt über umfangreiche Funktionen und eine flexible Konfiguration. In Oracle-Datenbanken sind Tabellen ein wichtiger Bestandteil der Datenspeicherung. Die Struktur der Tabelle umfasst Spaltennamen, Spaltentypen, Einschränkungen usw. Das Ändern der Tabellenstruktur ist ein häufiger Datenvorgang, der Änderungsvorgang kann jedoch gewisse Auswirkungen auf die Integrität und Sicherheit der Daten haben. Daher ist bei der Änderung der Tabellenstruktur besondere Vorsicht geboten.

Um den Änderungsprozess der Tabellenstruktur aufzuzeichnen und die Integrität und Rückverfolgbarkeit der Daten sicherzustellen, bietet die Oracle-Datenbank verschiedene Methoden zum Aufzeichnen von Tabellenänderungen. In diesem Artikel werden die folgenden Methoden zum Ändern der Datensatztabelle vorgestellt.

  1. Oracle Flashback Table
    Oracle Flashback Table ist eine erweiterte Funktion von Oracle, die den historischen Zustand einer Tabelle wiederherstellen oder Datenänderungen zu einem bestimmten Zeitpunkt rückgängig machen kann. Bevor Sie Flashback Table verwenden, müssen Sie Oracle-Protokolle aktivieren, um Änderungen an der Tabelle aufzuzeichnen. Wenn Sie einen Aktualisierungs- oder Löschvorgang durchführen, zeichnet das System die Daten vor der Änderung im Rückgängig-Tabellenbereich auf. Flashback Table kann diese Rückgängig-Informationen verwenden, um den Status der Tabelle auf den gleichen Status wie vor der Änderung zurückzusetzen.

Flashback Table wurde in der Oracle10g-Version gestartet und erfordert zur Ausführung die SYSTEM-Berechtigung. Bevor Sie Flashback Table ausführen, können Sie die folgende Anweisung verwenden, um abzufragen, für welche Tabellen die Protokollierung in der Datenbank aktiviert ist:

SELECT LOG_MODE FROM V$DATABASE;
Nach dem Login kopieren

Wenn das Abfrageergebnis „ARCHIVELOG“ lautet, bedeutet dies, dass für die Datenbank die Protokollierung aktiviert ist.

Bei der Verwendung von Flashback Table müssen Sie die folgenden Punkte beachten:

  • Flashback Table kann nur Aktualisierungs- und Löschvorgänge wiederherstellen, jedoch keine Änderungen an der Tabellenstruktur.
  • Flashback-Tabelle verwendet Rückgängig-Tabellenbereich. Wenn der Rückgängig-Tabellenbereich nicht ausreicht, kann der Änderungsverlauf nicht aufgezeichnet werden.
  • Flashback Table kann keine Daten wiederherstellen, die durch den Befehl „truncate“ gelöscht wurden, da dieser Befehl den Undo-Tabellenbereich löscht.
  1. Oracle Trigger
    Oracle Trigger löst bestimmte Aktionen aus, bevor und nachdem eine Tabelle eingefügt, aktualisiert oder gelöscht wird. Sie können einen Trigger erstellen, um den Verlauf von Tabellenoperationen aufzuzeichnen. Durch die Erstellung vor dem Einfügen, vor dem Aktualisieren und vor dem Löschen von Auslösern für die Tabelle werden die Daten vor der Änderung aufgezeichnet. Beim After-Insert-, After-Update- und After-Delete-Trigger werden die geänderten Daten aufgezeichnet.

Das Folgende ist ein Beispiel für einen Trigger, der den Änderungsverlauf der Schülertabelle aufzeichnet:

CREATE TABLE STUDENT_HISTORY (
    ID INT PRIMARY KEY,
    OPERATION_TYPE VARCHAR(10) NOT NULL,
    OPERATE_TIME DATE NOT NULL,
    NAME VARCHAR2(50) NOT NULL,
    AGE INT NOT NULL,
    SEX VARCHAR2(10) NOT NULL,
    GRADE VARCHAR2(20) NOT NULL,
    REMARKS VARCHAR2(100)
);

CREATE OR REPLACE TRIGGER STUDENT_HISTORY_TRG
BEFORE DELETE OR UPDATE OR INSERT ON STUDENT
FOR EACH ROW
BEGIN
    IF DELETING THEN
        INSERT INTO STUDENT_HISTORY (ID, OPERATION_TYPE, OPERATE_TIME, NAME, AGE, SEX, GRADE, REMARKS)
        VALUES (:OLD.ID, 'DELETE', SYSDATE, :OLD.NAME, :OLD.AGE, :OLD.SEX, :OLD.GRADE, :OLD.REMARKS);
    ELSIF UPDATING THEN
        INSERT INTO STUDENT_HISTORY (ID, OPERATION_TYPE, OPERATE_TIME, NAME, AGE, SEX, GRADE, REMARKS)
        VALUES (:OLD.ID, 'UPDATE', SYSDATE, :NEW.NAME, :NEW.AGE, :NEW.SEX, :NEW.GRADE, :NEW.REMARKS);
    ELSIF INSERTING THEN
        INSERT INTO STUDENT_HISTORY (ID, OPERATION_TYPE, OPERATE_TIME, NAME, AGE, SEX, GRADE, REMARKS)
        VALUES (:NEW.ID, 'INSERT', SYSDATE, :NEW.NAME, :NEW.AGE, :NEW.SEX, :NEW.GRADE, :NEW.REMARKS);
    END IF;
END;
Nach dem Login kopieren

Dieser Trigger zeichnet den Änderungsverlauf der Schülertabelle in der Tabelle STUDENT_HISTORY auf. Beim Durchführen von Einfüge-, Aktualisierungs- und Löschvorgängen zeichnet Trigger den Vorgangstyp, die Vorgangszeit, den Namen des Schülers, das Alter, das Geschlecht, die Note und Bemerkungen auf.

Die Vorteile der Verwendung von Trigger zum Aufzeichnen des Änderungsverlaufs sind:

  • Trigger kann Änderungen an der Tabellenstruktur sowie Einfüge-, Aktualisierungs-, Lösch- und andere Vorgänge aufzeichnen;
  • Trigger kann Daten vor und nach der Änderung aufzeichnen Der Datenänderungsprozess kann nachverfolgt werden.
  • Trigger kann den Inhalt und die Aufzeichnungsmethode anpassen und ist äußerst flexibel.

Die Verwendung von Trigger hat jedoch einige Nachteile:

  • Trigger beeinträchtigt die Datenbankleistung;
  • Sie müssen komplexen PL/SQL-Code schreiben, und wenn es ein Problem mit dem Code gibt, kann die Datenintegrität beeinträchtigt sein.
  1. Oracle AUDIT
    Oracle AUDIT ist eine Prüffunktion auf Datenbankebene, die den Verlauf von Datenbankbenutzeroperationen aufzeichnen kann. Die AUDIT-Funktion umfasst einen globalen Audit-Trailer und mehrere Richtlinienoptionen. Benutzer können das Protokollierungsverhalten steuern, indem sie Richtlinienoptionen festlegen. AUDIT ist bereits in die Oracle-Datenbank integriert und erfordert keine zusätzliche Installation.

Das Folgende ist eine AUDIT-Strategie, die die Einfüge-, Aktualisierungs- und Löschvorgänge des Benutzers in der Tabelle EMPLOYEES aufzeichnet:

AUDIT INSERT, UPDATE, DELETE ON EMPLOYEES BY SESSION;
Nach dem Login kopieren

Diese Anweisung zeichnet die Einfüge-, Aktualisierungs- und Löschvorgänge des Benutzers in der Tabelle EMPLOYEES auf. BY SESSION bedeutet, den Vorgang aufzuzeichnen, der von welcher Sitzung ausgeführt wurde. Sie können die folgende Anweisung verwenden, um den aktivierten Status von Audit zu überprüfen:

SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER='HR' AND OBJ_NAME='EMPLOYEES';
Nach dem Login kopieren

Der Vorteil der Verwendung von AUDIT zum Aufzeichnen des Tabellenänderungsverlaufs ist:

  • Audit kann den globalen Benutzeroperationsverlauf der Datenbank aufzeichnen, einschließlich Tabellenstrukturänderungen und -einfügungen , Aktualisieren, Löschen und andere Vorgänge;
  • Überwachungsdaten können einfach extrahiert und analysiert werden
  • Es ist nicht erforderlich, zusätzlichen Code zu schreiben.

AUDIT weist jedoch auch einige Einschränkungen auf:

  • AUDIT ist auf Datenbankebene implementiert und kann daher den Ausführungsprozess von SQL-Anweisungen nicht aufzeichnen.
  • AUDIT weist Einschränkungen hinsichtlich des aufgezeichneten Datenformats auf
  • AUDIT hat einen gewissen Einfluss auf die Datenbankleistung.
  1. Oracle Database Change Management Pack
    Oracle Database Change Management Pack ist ein steckbares Datenbankverwaltungstool, das Datenbankänderungen verwalten und prüfen kann. Das Database Change Management Pack generiert und speichert hochwertige Änderungsdokumentation, Audit-Trail-Informationen und Änderungsberichte.

Database Change Management Pack ermöglicht Benutzern einen vollständigen Überblick über den Datenbankänderungsstatus, einschließlich:

  • Der Änderungsverlauf von Datenbankobjekten;
  • Die Identität der Person, die sie geändert hat, sowie die Uhrzeit und das Datum des Vorgangs;
  • Ein geändertes Dokument und Artefakt.

Im Database Change Management Pack können Benutzer die Objekte und Richtlinienoptionen angeben, die überwacht werden müssen, und Änderungsverfolgungsdaten generieren. Es kann außerdem automatisch Änderungsdokumentationen und Artefakte generieren und nach jeder Datenbankänderung Audits durchführen.

Die Vorteile der Verwendung des Database Change Management Pack sind:

  • Das Database Change Management Pack kann alle Datenbankänderungen, einschließlich DDL-Vorgänge und Datenänderungen, aufzeichnen.
  • Kann Änderungsdokumente und Prüfberichte erstellen, um Sicherheitsüberprüfungen und Fehlerbehebung zu erleichtern Kann die Standardisierung und Vollständigkeit von Datenbankänderungen automatisch erkennen.
  • Das Database Change Management Pack hat jedoch auch einige Nachteile:

erfordert einen zusätzlichen Kauf und die Kosten sind höher
  • erfordert einen gewissen Zeit- und Arbeitsaufwand für die Konfiguration und Verwaltung;
  • Zusammenfassung:
Oracle ist derzeit die am weitesten verbreitete Datenbank der Welt. Sie bietet eine Vielzahl von Methoden zum Aufzeichnen des Tabellenänderungsverlaufs, einschließlich Flashback-Tabelle, Trigger, AUDIT und Database Change Management Pack. Jede dieser Methoden hat Vor- und Nachteile und Benutzer müssen sie entsprechend den spezifischen Umständen auswählen und verwenden.


Beim Ändern der Tabellenstruktur müssen Sie besonders vorsichtig sein, um die Integrität und Sicherheit der Daten nicht zu beeinträchtigen. Wenn wichtige Daten in der Datenbank gespeichert sind, empfiehlt es sich, die Daten vor einer Änderung zu sichern. Die rechtzeitige Aufzeichnung des Tabellenänderungsverlaufs und die Durchführung von Audits sind sehr effektiv bei der Gewährleistung der Datenintegrität und -sicherheit.

Das obige ist der detaillierte Inhalt vonSo ändern Sie Tabellendatensätze in Oracle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage