Heim  >  Artikel  >  Datenbank  >  So stellen Sie die Wiederherstellung nach versehentlichem Löschen von Tabellendaten beim Parsen von Oracle-Instanzen sicher

So stellen Sie die Wiederherstellung nach versehentlichem Löschen von Tabellendaten beim Parsen von Oracle-Instanzen sicher

WBOY
WBOYnach vorne
2022-07-25 17:42:493192Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über „Oracle“: Bei der Verwendung von Oracle-Daten wurden die Daten in der Tabelle versehentlich gelöscht und übermittelt. Hier finden Sie eine Einführung, wie Sie die Tabellendaten wiederherstellen können, nachdem Oracle sie versehentlich gelöscht hat Ich hoffe, es wird für alle hilfreich sein.

So stellen Sie die Wiederherstellung nach versehentlichem Löschen von Tabellendaten beim Parsen von Oracle-Instanzen sicherEmpfohlenes Tutorial: „

Oracle Video Tutorial

Wiederherstellung basierend auf der Zeit

Diese Methode erfordert, dass wir die Zeit zum Ausführen der Löschanweisung ungefähr kennen.

Fragen Sie die aktuelle Systemzeit ab: select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

Angenommen, es ist 2022-04-02 16:27: Nach 11 Minuten wird die Löschanweisung ausgeführt
delete from demo;select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss’) from dual;

假设在2022-04-02 16:27:11分钟,执行了删除语句
delete from demo ;

Zu diesem Zeitpunkt können die Daten nicht in der Tabelle abgefragt werden. Wir kennen die Löschausführungszeit, schieben 1 Minute nach vorne (die Löschausführungszeit kann vorher liegen, je kleiner, desto besser, in diesem Beispiel wird 1 Minute verwendet) und führen die folgende Anweisung aus

select * from DEMO as of timestamp to_timestamp(‘2022-04-02 16:26:11',‘yyyy-mm-dd hh24:mi:ss');

Sie können das sehen, obwohl die aktuelle Demo-Tabelle Es sind keine Daten darin, aber Sie können die Daten aus der Demo-Tabelle für die erste Minute abfragen.

Wiederherstellung 1: Zu diesem Zeitpunkt können Sie die SQL-Datei über die Funktion zum Exportieren von Abfrageergebnissen des Plsql-Tools exportieren und dann die Einfügeanweisung in der SQL-Datei zur Datenwiederherstellung erneut ausführen.

Wiederherstellung 2: Führen Sie die folgende SQL zur Datenwiederherstellung aus:

flashback table DEMO to timestamp to_timestamp(‘2022-04-02 16:26:11',‘yyyy-mm-dd hh24:mi:ss');

Wenn ein Fehler gemeldet wird ORA-08189: Die Zeilenverschiebungsfunktion ist nicht aktiviert und die Tabelle kann nicht zurückgeflasht werden

Führen Sie dann Folgendes aus:

alter table DEMO enable row movement;

Nach dem Hinzufügen der Führen Sie die Funktion zum Verschieben von Tabellenzeilen aus. Führen Sie die Flashback-Anweisung „Wiederherstellen“ aus. Wenn ein Fehler gemeldet wird: ORA-08194: Der Flashback-Tabellenvorgang ist für materialisierte Ansichten nicht zulässig. Stellen Sie ihn wie folgt wieder her, indem Sie eine neue temporäre Tabelle erstellen.

Wiederherstellung 3 (eine neue temporäre Tabelle erstellen):

Erstellen Sie eine neue Demo1-Tabelle und fügen Sie die Daten ein, die wiederhergestellt werden müssen.

create table DEMO1 as select * from DEMO as of timestamp to_timestamp(‘2022-04-02 16:30:11',‘yyyy-mm-dd hh24:mi:ss');

Stellen Sie die Daten der Demo1-Tabelle in der Demotabelle wieder her on scn):

Fragen Sie die aktuelle SCN-Nummer ab

insert into DEMO select * from DEMO1 where not exists (select * from DEMO where DEMO.id=DEMO1.id);

Reduzieren Sie die SCN-Nummer um einen bestimmten Betrag und führen Sie die Anweisung aus, bis wir die von uns gelöschten Daten anzeigen können

select current_scn from v$database;

Verwenden Sie die entsprechende SCN-Nummer und führen Sie die SQL-Anweisung aus zur Datenwiederherstellung

select * from DEMO as of scn 166937913;

Empfohlenes Tutorial: „

Oracle Video Tutorial

Das obige ist der detaillierte Inhalt vonSo stellen Sie die Wiederherstellung nach versehentlichem Löschen von Tabellendaten beim Parsen von Oracle-Instanzen sicher. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen