Heim >Datenbank >Oracle >Drei Methoden zur schnellen Wiederherstellung versehentlich gelöschter Oracle-Datenbanken

Drei Methoden zur schnellen Wiederherstellung versehentlich gelöschter Oracle-Datenbanken

WBOY
WBOYnach vorne
2022-06-01 12:02:287391Durchsuche

Dieser Artikel bringt Ihnen relevantes Wissen über Oracle, in dem vor allem die damit verbundenen Probleme beim versehentlichen Löschen von Daten in der Oracle-Datenbank vorgestellt werden und wie Sie die Daten schnell wiederherstellen können, ohne die vollständige Datenbanksicherung und Archivprotokollauslastung zu berücksichtigen Wenn ich es zusammenstelle, hoffe ich, dass es für alle hilfreich sein wird.

Drei Methoden zur schnellen Wiederherstellung versehentlich gelöschter Oracle-Datenbanken

Empfohlenes Tutorial: „Oracle-Video-Tutorial

Wie kann ich die Daten in der Oracle-Datenbank schnell wiederherstellen, ohne die vollständige Datenbanksicherung und Archivprotokollauslastung zu berücksichtigen?

Hier sind 3 Methoden.

1. Verwenden Sie die von Oracle bereitgestellte Flashback-Methode, die für die Löschmethode geeignet ist.

Ermitteln Sie zunächst den Zeitpunkt der gelöschten Daten:

select * from v$sql where sql_text like '%table_name%' ;
1

Entsprechend dem Inhalt von sql_textcode> Suchen Sie im Ergebnis nach <code>delete. Führen Sie den sql_text内容,找到delete执行语句对应的删除时间点,执行下面语句查询出删除的数据。

select * from table_name as of timestamp to_timestamp(‘删除时间点’,‘yyyy-mm-dd hh24:mi:ss’)
where (删除时的条件)
12

检查数据无误后,执行下面操作,将数据插回原表中。注意主键不重复

insert into table_name
select * from from table_name as of timestamp to_timestamp(‘删除时间点’,‘yyyy-mm-dd hh24:mi:ss’)
where (删除时的条件)
123

2. 利用oracle虚拟回收站功能

原理是因为oracle数据库在删除表时会将删除信息存放于某虚拟回收站中而非直接清空,在此种状态下数据库标记该表的数据库为可以复写,所以在该块未被重新使用前依然可以恢复数据。该方法多用于drop删除。

首先查询user_table视图,找到被删除的表:

select table_name,dropped from user_tables;
select object_name,original_name,type,droptime from user_recyclebin;
12

注意此时的,object_nameoriginal_name就是回收站存放的表名和原来删除的表名,如果表名没有被重新命名,可以通过下面语句进行恢复:

flashback table original_name to before drop;
1

如果不知道源表名,或者需要重新命名新的表名存放数据,则可以通过回收站中的object_name进行恢复,命令如下:

flashback table object_name to before drop new_table_name;
1

3. 用oracle数据库的闪回功能可以将数据库恢复到过去某一状态

注意,此时是整库恢复,具体语法如下:

SQL>alter database flashback on
SQL>flashback database to scn SCNNO;
SQL>flashback database to timestamp to_timestamp(‘frombyte 2021-09-02 23:59:59’,‘yyyy-mm-dd hh24:mi:ss’);
123

4. 彻底删除数据

如果确定需要删除的数据又不想无谓的占用空间,我们可以使用以下3种方式:

  1. 采用truncate方式进行截断。(不能进行数据回恢复)
  2. 在drop时加上purge选项:drop table table_name purge
  3. 通过删除recyclebin区域来永久性删除表 ,drop table table_name cascade constraints purge table table_name;

5. 关于清空回收站

  1. 删除当前用户回收站

    purge recyclebin;

  2. 删除全体用户在回收站的数据

    purge dba_recyclebin;Löschzeitpunkt

    aus, der der Anweisung entspricht, und führen Sie die folgende Anweisung aus, um die gelöschten Daten abzufragen.
  3. rrreee
Nachdem Sie überprüft haben, ob die Daten korrekt sind, führen Sie die folgenden Vorgänge aus, um die Daten wieder in die Originaltabelle einzufügen.

Achten Sie darauf, dass der Primärschlüssel nicht wiederholt wird virtueller Papierkorb, anstatt ihn hier direkt zu leeren. In diesem Zustand markiert die Datenbank die Tabelle als
kann überschrieben werden

, sodass die Daten noch wiederhergestellt werden können, bevor der Block 🎜nicht wiederverwendet wird. Diese Methode wird hauptsächlich zum Löschen von 🎜Tropfen verwendet. 🎜🎜🎜Fragen Sie zuerst die Ansicht user_table ab, um die gelöschte Tabelle zu finden: 🎜rrreee🎜Beachten Sie, dass zu diesem Zeitpunkt object_name und original_name gespeichert sind Der Papierkorb Der Tabellenname und der ursprünglich gelöschte Tabellenname. Wenn der Tabellenname nicht umbenannt wurde, können Sie ihn mit der folgenden Anweisung wiederherstellen: 🎜rrreee🎜Wenn Sie den Quelltabellennamen nicht kennen oder ihn umbenennen müssen Neuer Tabellenname zum Speichern der Daten. Sie können den Papierkorb object_name in object_name zum Wiederherstellen verwenden. Der Befehl lautet wie folgt: 🎜rrreee🎜🎜3 Verwenden Sie die Flashback-Funktion der Oracle-Datenbank, um die Datenbank auf einen bestimmten Zustand in der Vergangenheit wiederherzustellen🎜🎜🎜Beachten Sie, dass es sich um eine 🎜Gesamtdatenbankwiederherstellung🎜 handelt. Die spezifische Syntax lautet wie folgt: 🎜rrreee🎜🎜4. Daten vollständig löschen 🎜🎜🎜Wenn Sie sicher sind Damit die Daten gelöscht werden müssen und keinen unnötigen Speicherplatz belegen, können wir die folgenden drei Methoden verwenden: 🎜
  1. Verwenden Sie die Truncate-Methode. (Datenwiederherstellung ist nicht möglich) 🎜
  2. Fügen Sie beim Löschen die Bereinigungsoption hinzu: drop table table_name purge🎜
  3. Löschen Sie die Tabelle dauerhaft, indem Sie den Bereich recyclebin löschen. drop table table_name Cascade Constraints purge table table_name;🎜🎜🎜🎜5. Informationen zum Leeren des Papierkorbs🎜🎜
    1. 🎜Löschen Sie den aktuellen Benutzerpapierkorb🎜🎜purge recyclebin; 🎜🎜<li>🎜Alle Benutzerdaten im Papierkorb löschen🎜🎜<code>purge dba_recyclebin;🎜🎜🎜🎜Empfohlenes Tutorial: „🎜Oracle Video Tutorial🎜“🎜🎜

Das obige ist der detaillierte Inhalt vonDrei Methoden zur schnellen Wiederherstellung versehentlich gelöschter Oracle-Datenbanken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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